Sari la conținut
ELFORUM - Forumul electronistilor

Arduino Audio Output


Vizitator Lucianul

Postări Recomandate

Vizitator Lucianul

Buna ziua! Vreau sa realizez urmatorul proiect http://www.instructables.com/id/Arduino-Audio-Output/

Deocamdata astept sa-mi ajunga toate componetele de care am nevoie. Fiind prima data cand realizez un proiect cu documetatie in engleza am cateva nelamuriri.

"Before doing anything with the signal you need to set up some kind of buffer circuit.  I set up one of the op amps in the TS922 dual op amp package as a voltage follower to buffer my DAC from the rest of my circuit"

 

Aici a folosit un amplifcator operational din integrat ca stabilizator de tesiune?
voltage follower= stabilizator de tesiune?

 buffer circuit = ?
 

Link spre comentariu
  • Răspunsuri 20
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • mars01

    5

  • djvas

    2

  • nico_2010

    2

  • mircea888

    1

Top autori în acest subiect

Deci, A.O are rolul de a face adaptare de impedanta dintre R2R si restul circuitului?

Exact.

Rezistentele folosite in R2R ar fi bine sa le sortezi la o valoare cat mai apropiata.

Link spre comentariu
Vizitator Lucianul

Multumesc pentru explicatie!
Am o nelamurire si la DC Offset. Semnalul oscileaza in jurului valorii de 2.5V si cu ajutoru unei capacitati (220uF) semnalul oscileaza in jurul vaorii de 0V?

ce este mai exact DC Offset? Am primit o explicatie foarte buna aici : 

Editat de Lucianul
Link spre comentariu

In cazul tau DC offset este 2.5V (oscilatia este "centrata" in 2.5V).

Cu ajutorul condensatorului mentionat, DC offset devine 0V (adica mai exact nu ai DC offset) si oscilatia este "centrata" in 0V. Cand spun "centrata" in 0V (adica semnalul are DC offset nul) ma refer la cazul cand alimentarea opamp-ului este duala (cu tensiunea negativa si pozitiva).

 

LE: Ca un exemplu, sa zicem ca semnalul tau (sa zicem caz particular forma de unda sinusoidala) are o amplitudine varf la varf de 1V. 

Cand DC offset este 2.5V, semnalul tau va varia intre 2.5V + 0.5V = 3V ca si maxim si 2.5V - 0.5V = 2V ca si minim.

Cand DC offset este 0V, semnalul tau va varia intre 0V + 0.5V = 0.5V ca si maxim si 0V - 0.5V = -0.5V ca si minim.

Nota: amplitudinea varf la varf de 1V la care am facut referire este formata din 0.5V pe alternanta superioara si 0.5V pe alternanta inferioara.

 

Din aceasta cauza am mentionat ca semnalul este "centrat" pentru cazul cu DC offset = 0V doar in cazul alimentarii duale pentru opamp (cu tensiune negativa si cu tensiune pozitiva). Daca nu ar fi alimentat asa (si ar fi alimentat doar cu tensiune pozitiva), nu ai putea avea la iesirea opamp-ului tensiune negativa si deci semnalul nu ar fi "centrat", ar varia intre maxim 0.5V si minim ~0V.

Editat de mars01
Link spre comentariu
Vizitator Lucianul

Multumesc mult pentru explicatie, am reusit sa inteleg cum sta treaba.Acum astept sa-mi vine componentele si sa ma apuc de montat.Probabil o sa revin cu intrebari legate de cod zilele urmatoare.

Mutlumesc inca o data.

Link spre comentariu

M-am uitat pe link-ul proiectului si am vazut postul ca nu gasesti opamp-urile.

Pentru cel folosit ca buffer poti utiliza MCP6022.

Pentru cel folosit ca amplificator, daca nu ai pretentii la cine stie ce distorsiuni reduse, poti utiliza LM386.

Editat de mars01
Link spre comentariu
Vizitator Lucianul

Am gasit intr-un final doar un integrat TS922IN(inca astept sa ajunga, am inteles ca nu se mai fabrica) si am dat comanda si de LM386.Avand ceva timp liber am zis sa fac toata treaba in Proteus. Cam asa arata IMGNu am mai pus buffer circuit deoarece nu gasesc in proteus TS922IN.Sunetul e de prisos , e un fel de prrrprrrrprrrr  :)). 

Codul este 

//Sine out w/ 40kHz sampling rate//by Amanda Ghassaei//http://www.instructables.com/id/Arduino-Audio-Output///Sept 2012/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. **/byte sine[] = {127, 134, 142, 150, 158, 166, 173, 181, 188, 195, 201, 207, 213, 219, 224, 229, 234, 238, 241, 245, 247, 250, 251, 252, 253, 254, 253, 252, 251, 250, 247, 245, 241, 238, 234, 229, 224, 219, 213, 207, 201, 195, 188, 181, 173, 166, 158, 150, 142, 134, 127, 119, 111, 103, 95, 87, 80, 72, 65, 58, 52, 46, 40, 34, 29, 24, 19, 15, 12, 8, 6, 3, 2, 1, 0, 0, 0, 1, 2, 3, 6, 8, 12, 15, 19, 24, 29, 34, 40, 46, 52, 58, 65, 72, 80, 87, 95, 103, 111, 119,};int t = 0;//timevoid setup(){  //set digital pins 0-7 as outputs  for (int i=0;i<8;i++){    pinMode(i,OUTPUT);  }    cli();//disable interrupts  //set timer0 interrupt at 40kHz  TCCR0A = 0;// set entire TCCR0A register to 0  TCCR0B = 0;// same for TCCR0B  TCNT0  = 0;//initialize counter value to 0  // set compare match register for 40khz increments  OCR0A = 49;// = (16*10^6) / (40000*8) - 1 (must be <256)  // turn on CTC mode  TCCR0A |= (1 << WGM01);  // Set CS11 bit for 8 prescaler  TCCR0B |= (1 << CS11);   // enable timer compare interrupt  TIMSK0 |= (1 << OCIE0A);  sei();//enable interrupts  }ISR(TIMER0_COMPA_vect){ //40kHz interrupt routine  PORTD = sine[t];//send sine wave to DAC, centered around (127/255)*5 = 2.5V  t++;//increment t  if (t > 99){//reset t to zero    t = 0;  }}void loop(){  //do other stuff here} 

Am pus si un exemplu din arduino, toneMultiple si se aude acolo ce trebuie.

Editat de Lucianul
Link spre comentariu
Vizitator Lucianul

Am gasit MCP6022 in proteus, dar nu stiu cum sa-l conectez la circuitul meu astfel incat sa aiba acelasi rol ca TS922. Ma poate ajuta cineva? In practica o sa ma descurc ca are 8 pini, in proteus am doar 5

Link spre comentariu

Atat MCP6022 cat si TS922 sunt amplificatoare operationale duale. Aceasta inseamna ca fiecare integrat contine in interior doua amplificatoare operationale independente dar care au pinii de alimentare comuni.

 

Daca te uiti in Proteus, cand adaugi un MCP6022, primul "triunghi" MCP6022 adaugat va avea eticheta U1:A. Daca il mai adaugi odata va avea eticheta U1:B.

Practic U1:A si U1:B sunt un singur circuit integrat U1 cu partile componente A si B.

Partea componenta A are 3 pini (doua intrari si o iesire) + 2 pini de alimentare, deci 5 pini.

Partea componenta B are alti 3 pini (doua intrari si o iesire) + aceiasi 2 pini de alimentare, deci tot 5 pini.

 

Intr-un final circuitul integrat U1 are urmatorii pini:

- doua intrari de la componenta A

- o iesire de la componenta A

- doua intrari de la componenta B

- o iesire de la componenta B

- doi pini alimentare comuni pentru ambele componente (A si B) ale circuitului U1

 

Total: 8 pini.

 

LE: In schema din "instructable" daca esti atent o sa vezi ca ambele amplificatoare operationale din circuitul amplificator sunt puse in paralel pentru a mari curentul disponibil la iesire, asa ca ambele pot fi inlocuite cu un singur circuit amplificator LM 386.

Pentru amplificatorul buffer uita-te cu atentie si identifica intrarile + si - ale fiecarui opamp ("triunghi") ale TS922, cat si iesirea si folosesti pinii similari ai MCP6022. Pentru a vedea echivalenta citeste foaia tehnica (datasheet-ul) atat a TS922 cat si a MCP6022.

Editat de mars01
Link spre comentariu
Vizitator Lucianul

Aaa, stiam ca sunt duale, dar nu stiam ca trebuie sa pun doua. M-am luminat acum :d.Cred ca asa ar trebui sa fie schema, si cam asta e semnalu meu...

Inca nu am reusit sa fac practic deoarece cei de la adelaida sunt foarte neseriosi, am plasat comanda pe data de 11.01 si inca nu a ajuns, sper sa o primesc luni.

SCHEMA PROTEUS

Semnal

 

Am dubii la lm386, cum fac sa -mi scoate curentu dublu? Conform proteus as avea un curent la ieserea lm-ului de 40-50 mA

Editat de Lucianul
Link spre comentariu

In imaginea atasata de tine in postul #9 vad ca la iesirea DAC-ului semnalul este ok. Dar la iesirea din LM386 nu mai este ce trebuie. Cred ca ai gresit ceva in partea analogica a schemei.

Link spre comentariu

@djvas, acolo nu pusese condensatorul intre pinii 1 si 8 deci gain-ul era pe la 20.

Semnalul la iesire este un exemplu clar de clipping (si este si normal avand in vedere amplitudinea semnalului de iesire al "DAC-ului"; probabil pot-ul este reglat spre partea de sus).

 

@Lucianul, LM386 este un amplificator in tensiune. O tensiune mai mare de alimentare, un gain mai mare (desi acum esti la maxim cu gain-ul 200) si o impedanta mai mica a difuzorului o sa iti ofere puterea necesara la iesire.

Editat de mars01
Link spre comentariu
Vizitator Lucianul

Cam asa arata:

http://s16.postimg.org/8ba58xqqd/IMAG1450.jpg

http://s16.postimg.org/tyz3jdr4l/IMAG1451.jpg

http://s16.postimg.org/q3vpgt7yt/IMAG1452.jpg

http://s16.postimg.org/ur1rikvbp/IMAG1453.jpgIn casti nu se aude nimic, daca pun la difuzor, se aude.Codensatorul de la pinu 1 la 8 e de 4.7uF, o sa caut sa pun unu de 10u, conform schemei pentru gain=200.

Daca alimentez lm-ul la o baterie de 9V, am sanse sa aud si in casti?

Si am o curiozitate, se poate schimba impedanta castilor? Ma gandeam sa leg o rezintenta in paralel :d.

Editat de Lucianul
Link spre comentariu

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