Jump to content
ELFORUM - Forumul electronistilor

Generare semnal 38kHz cu AVR


Guest Dokken

Recommended Posts

Guest Dokken

E primul meu post pe acest forum. Lucrez la un proiect si m-am impotmolit la o chestie. Vreau sa transmit date catre PC folosind UART al unui uC (ATmega168 ce lucreaza la 20MHz).Am creat partea electronica compusa dintr-un amplificator cu modulatia in amplitudine, numai ca purtatoarea de 38kHz am ales sa o generez din uC si nu prea stiu cum.Cele doua intrari ale transmitatorului (semnalul binar ce contine informatia ce se doreste transmisa, si semnalul de 38kHz) sunt conectate la uC la pinul PD1(TXD), respectiv PB3. Din cele doua Countere, folosesc unul pentru PWM la doua motorase.Ma poate ajuta cineva cu acel cod pentru generarea semnalului de 38kHz? Va multumesc!

Link to comment
  • Replies 11
  • Created
  • Last Reply

Top Posters In This Topic

In acest link se genereaza 38kHz cu un uC cu quartz de 6MHz. Interesant mi se pare modul de realizare a chopperului, fara componente externe: se trece pinul uC in stare de impedanta mare (facandu-l intrare) ca sa lase sa treaca semnalul, sau se face iesire in 0 logic, scurtcircuitand semnalul.

 

http://cappels.org/dproj/FM_MPX_STEREO/SIMPLE%20FM%20STEREO%20MULTIPLEX%20ENOCDER%20CIRCUIT.html

 

Pentru ATmega168 la 20MHz, trebuie o divizare de 526 => 38.02kHz. Semnalul se obtine prin complementare, deci trebuie o divizare cu 526/2=263. Presupunand ca pt PWM se foloseste timer0, se alege timer1 pt generare 38kHz, cu:

- mod CTC;

- OCR1A=263;

- clock clkio/1;

- toggle OC1A on compare match.

Rezulta semnal dreptunghiular de 38.02kHz la pinul OC1A/PB1. Pentru a obtine sinusoidal, trebuie filtrat.

 

Pentru precizie mai mare a frecventei se poate folosi DDS cu DAC R2R:

http://www.myplace.nu/avr/minidds/index.htm, dar se imobilizeaza uC pt alte prelucrari.

Link to comment
Guest Dokken

Am reusit pana la urma sa generez semnalul, numai ca, folosind UART pe AVR, nu receptionez nimic pe PC, folosind terminalul din Windows. Unde am gresit?

Link to comment

Nu se intelege prea clar, poate doar daca pui niste desene cu forma semnalului sau o schema ceva. Tu zici ceva de o purtatoare de 38 KHz modulat MA si un semnal binar modulator.Daca asta trimiti spre intrarea seriala (semnal 38 KHz modulat MA) atunci nu are cum sa mearga. Uita-te la protocolul de interfata seriala ca sa vezi ce forma de unda se asteapta terminalul sa primeasca.Chiar daca trimiti ce trebuie poate fi din multe locuri:- protocol diferit pe cele doua seriale (emisie-receptie) , seteaza-le la fel, de ex 8,n,1, no parity.- cablu nepotrivit sau Rx inversat cu Tx- nivele de tensiune diferite la emitator si la receptor (de ex. 0-5 V in loc de +12 -12 V)- nivele logice inversate- etc.

Link to comment
Guest Dokken

Cred ca am uitat sa mentionez ceva, anume ca transmisia se face IR. Atasez mai jos si schema folosita. Din ce imi dau seama, problema este la Receptor, pentru ca semnalul de la TSOP intra in portul serial prin DCD.[attachment=0]SCHEMATIC1 _ PAGE2.pdf[/attachment]

Link to comment

Am facut si eu ceva similar, un atmega 8 pus in schema de adaptor usb -> serial si mi-a mers, nu m-am complicat cu tranzistor pt LED-ul IR (poate chiar aici e problema), am pus un singur LED, fara rezistenta, intre iesirea seriala din Atmega si inca un pin care genere 38 KHz non stop, cu anodul la iesirea seriala. Si a mers perfect, bate cativa metri.Neaparat sa ai cond ala pe alimentarea lui TSOP, fara el la mine nu a mers. Esti sigur ca poti obtine 5V din pinii de seriala, dau destul curent? Asta nu am incercat.

Link to comment
Guest Dokken

Am folosit cei doi tranzistori pentru amplificare, nu cred ca asta sa fie problema. In momentul cand transmite ceva, am incercat sa urmaresc cu camera de la telefon, si LED-urile clipesc. In plus, am incercat sa conectez direct TX-ul de la uC, la RX-ul serial de la PC (folosind un MAX232) si informatia este receptionata corect => codul din uC este scris corect. Apoi, in loc de Terminalul standard din Windows, am instalat RealTerm, care ofera ceva mai multe facilitati, inclusiv pentru debug. In momentul cand uC transmite, licare led-ul DCD de la Status din RealTerm. Receiver-ul l-am testat cu o telecomanda de la DVD Player si WinLIRC si merge perfect. Tot cu WinLIRC am testat folosind Raw Codes ceea ce primesc de la uC si, iar a fel, sunt receptionate "coduri". Totusi nu reuesc sa ii dau de cap.

Link to comment

Stai ca am recitit. Normal ar trebui sa legi iesirea TSOP-ului la pinul Rx (pinul 2 sau 3, nu mai stiu care) din seriala calculatorului.De ce vrei sa receptionezi folosind DCD? Nu emiti folosind protocol de interfata seriala? Orice soft de terminal citeste si afiseaza ce-i vine pe Rx, nu pe DCD.Dupa probele pe care le-ai facut pare ca totul functioneaza corect doar ca trebuie sa pui iesirea TSOP la Rx in loc de DCD daca vrei sa vezi in hiperterminal caracterele trimise de la uC.

Link to comment
Guest Dokken

Am pus iesirea de la TSOP la pinul 2 (RX), iar in Terminal la inceput receptionam un set de "0"-uri, apoi nu am mai receptionat nimic. Voi incerca sa verific circuitul de la Receptie, precum si cel de la Emisie.LE: Din ce m-am documentat, ar trebui sa folosesc un tranzistor sau un MAX232 care sa inverseze semnalul de la TSOP, altfel nu merge.

Link to comment
  • 4 months later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines