Sari la conținut
ELFORUM - Forumul electronistilor

Generare semnal 38kHz cu AVR


Vizitator Dokken

Postări Recomandate

Vizitator 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 spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • overdrive

    1

  • bogdanm

    1

  • Eugenn

    1

  • deep-blue

    1

Top autori în acest subiect

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 spre comentariu
Vizitator 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 spre comentariu

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 spre comentariu
Vizitator 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 spre comentariu

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 spre comentariu
Vizitator 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 spre comentariu

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 spre comentariu
Vizitator 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 spre comentariu
  • 4 luni mai târziu...
  • 1 lună mai târziu...

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări