francezu Postat Iulie 20, 2010 Partajează Postat Iulie 20, 2010 Salut!Are cineva idee cum pot combina o iesire PWM a unui uC cu o retea R2R pentru a obtine un DAC cu rezolutie marita. De exemplu PWM-ul este pe 10 biti si vreau sa mai adaug o retea R2R pe 4 biti pentru a ajunge la o rezolutie de 14 biti. Cum trebuie trimisa valoarea binara ( de convertit ) spre iesiri, si cum trebuiesc combinate iesirile celor doua DAC-uri ? Link spre comentariu
Mikrosha Postat Iulie 20, 2010 Partajează Postat Iulie 20, 2010 Misto intrebare. Eu ma gandesc asa: Daca punem R2R pe MSB-uri toleranta rezistentelor trebuie sa fie mai buna decat procentul LSB-ului. PWM-ului, adica 1/2^15=0,003%!!! Altfel numarul efectiv de biti scade dramatic si n-ai rezolvat nimic. Degeaba ai un un convertor pe 14 biti cu nr efectiv de 10 biti sau chiar mai rau. Rez cu toleranta de 0,006% e imposibil de gasit. Daca punem PWM-ul ca cei mai semnificativi 10 biti, si urmatorii 4 biti din R-2R atunci toleranta retelei R-2R nu mai conteaza asa mult, chiar si 2,5% este ok. In schimb nu se poate lega de PWM tot prin 2R, ca nu trebuie sa produca o variatie maxima de 1/2, ci de 1/1024. Asa ca ultima rezistenta, de 10240K, precum si R9, trebuie sa aiba o toleranta de 1/2^11=0,05%!! din nou foarte dificil de gasit. Asta ca sa nu mai mentionez variatia cu temperatura si imbatranirea materialului. DAC-urile de multi biti, fiind integrate si laser trimmed, au motive intemeiate sa fie asa scumpe. Uite totusi o schema ipotetica: Daca vrei marirea nr de biti se pot face alte artificii. De exemplu formezi PWM-ul din 2 cuvinte consecutive de 10 biti care difera prin LSB si ai obtinut 11 biti. Sau daca ti se permite, cresti rezolutia numaratorului. Doar ca asta scade frecventa maxima a semnalului analogic cuantizat, conform teoremei de cuantizare a lui Nyquist. Link spre comentariu
francezu Postat Iulie 20, 2010 Autor Partajează Postat Iulie 20, 2010 Multumesc de raspuns; nu sunt sigur ca am inteles tot si as mai avea cateva intrebari: 1. In schema propusa, cu pwm ca MSB si r2r ca LSB, ce afecteaza mai exact toleranta celor 2 rezistente(R8, R9) ? Precizia, liniaritatea, sau introduc un ofset nedorit? In aplicatia mea ( desi este tot una ipotetica deocamdata) trebuie sa generez o referinta cu rezolutie cat mai buna; daca tensiunea la iesire nu este cea calculata, ma gandesc ca pot compensa din soft, considerand ca offset-ul se mentine constant in toata plaja. 2. Nu pot creste rezolutia numaratorului, este vorba de iesirea PWM a unui PIC care poate maxim 10 biti. Nu-mi fac probleme pt frecventa maxima a semnalului cuantificat, cum spuneam trebuie sa generez o referinta si aceasta o sa aiba o perioada mare de variatie. 3. Explica-mi te rog fraza aceasta : De exemplu formezi PWM-ul din 2 cuvinte consecutive de 10 biti care difera prin LSB si ai obtinut 11 biti Cum obtin cele doua valori ? Link spre comentariu
Mikrosha Postat Iulie 20, 2010 Partajează Postat Iulie 20, 2010 1. Neliniaritatea. Atunci cand cei 5 biti MSB fac overflow de la 01111 - 10000, este posibil chiar ca tensiunea la iesire pentru 01111 sa fie mai mare decat pentru 10000. Nu poti corecta asa ceva din soft. 2. Doar o ipoteza: renunti la generatorul intern de PWM. FOlosesti Timer1. La fiecare trecere prin ISR schimbi starea pinului de PWM (portx.y=~portx.y). La una din trecerile prin ISR incarci tmr0 cu nr de tacte in care vrei sa fie "1", la urmatorul incarci cu nr de tacte in care sa fie "0". Problema e ca se mai baga niste delay-uri la incarcarea tmr1, dar fiind mereu egali pt "1" si mereu egali pt "0" nu cred ca deranjeaza. Gandeste-te si decide daca e fezabila ideea.3. Sa zicem 10 biti. 0-5V inseamna 5/1024=4,88mV. Presupunem ca pui valoarea la iesire 123. Asta face 600mV. Apoi pui valoarea 124, care inseamna 605mV. Schimbarea se face foarte repede, de la un impuls la altul, asa ca tensiunea medie (integrala pe T din u(t), calculezi pe 2 perioade bla bla bla) devine 602,5. Si asa, dupa filtrare trece jos, ai mai castigat un bit.De ce nu cumperi un DAC calumea? Link spre comentariu
francezu Postat Iulie 21, 2010 Autor Partajează Postat Iulie 21, 2010 1. Ma asteptam, asa este, nu am cum sa corectez din soft.2.Nu prea as vrea sa renunt la PWM-ul intern pentru ca in primul rand am nevoie de doua canale, deci doua DAC-uri, si este posibil sa mai fie si alte lucruri care vor genera intreruperi; nu stiu daca le voi putea gestiona pe toate.3. Am inteles, dar se poate aplica metoda si daca vreau sa cresc rezolutia cu mai mult de un bit? De ce nu cumperi un DAC calumea?Cum spuneam, sunt la stadiul de cercetare momentan; daca imi dai un exemplu de DAC pe cel putin 14 biti, si care sa nu fie exagerat de scump, am sa ma orientez.Cautand pe google am dat peste o metoda de combinare ponderata a doua iesiri PWM de 8 biti pentru a obtine un DAC de 16 biti. -> http://www.k9spud.com/traxmod/pwmdac.php Pare fezabil, dar banuiesc ca aceeasi restrictie se aplica in cazul tolerantei rezistentelor. Nu am reusit sa-mi dau seama de metoda de calcul a rezistentelor, si daca se poate aplica pentru dac-uri cu rezolutii diferite. Link spre comentariu
Mikrosha Postat Iulie 22, 2010 Partajează Postat Iulie 22, 2010 Cred c-ar merge să extinzi rezoluția DAC de la 10 la 14 biți trimițînd 16(=2^4) cuvinte modulului PWM, ceva de genul: n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n+1 n n n n n n n n n n n n n n+1 n+1 n n n n n n n n n n n n n+1 n+1 n+1 n n n n n n n n n n n n+1 n+1 n+1 n+1 ..... n+1.....de 16 ori. Desigur n+1 si n ar trebui sa fie pe cît posibil intercalate (n+1 n+1 n n+1 etc), ca sa ai un riplu cat mai mic la iesire. Teoretic nu văd de ce n-ar merge, ai putea să-ncerci, sînt cîteva linii de cod care nu durează mult să le scrii. Probleme de ordin practic ar putea să apară, de exemplu variația referinței cu temperatura, care ar putea să facă tensiunea de la ieșire sa fugă cu câțiva biți. Un DAC pe 16 biti: http://www.adelectrocom.ro/product_info ... s_id=44755 De asemenea la Valea Cascadelor e un nene care vindea DAC-uri DAC80, pe 12 biti, Burr-Brown, hibride. Avea sute, posibil încă să mai aibă. Link spre comentariu
francezu Postat Iulie 22, 2010 Autor Partajează Postat Iulie 22, 2010 Bun, dar cum convertesc eu cuvantul de 14biti in 16 cuv de 10 biti ? Iau pur si simplu 10 MSB din cuvant si ala va fi "n-ul", iar cei 4 LSB imi arata cati "n+1" trebuie sa trimit intr-o serie de 16 cuvinte ? Am sa alimentez pic-ul de la o referinta termocompensata, de ex: TL431 Am sa trec si pe la Valea Cascadelor sa vad ce gasesc; DAC80 nu prea se preteaza , are intrare paralela si vrea alimentare diferentiala de minim 12V. Ce parere ai de metoda cu sumarea ponderata a doua iesiri PWM ?, cea descrisa in link-ul din mesajul anterior. Link spre comentariu
Mikrosha Postat Iulie 22, 2010 Partajează Postat Iulie 22, 2010 Bun, dar cum convertesc eu cuvantul de 14biti in 16 cuv de 10 biti ? Iau pur si simplu 10 MSB din cuvant si ala va fi "n-ul", iar cei 4 LSB imi arata cati "n+1" trebuie sa trimit intr-o serie de 16 cuvinte ?Exact.Am sa alimentez pic-ul de la o referinta termocompensata, de ex: TL431Scuza-ma, dar nu stiu exact daca realizezi ce inseamna o rezolutie de 14 biti. Inseamna 16384 de nivele logice. Asta implica 5V/16384=0.000305V = 0,3mV. Asta implică ca tot ce ai tu in referință dar și in lanțul de amplificare trebuie să aibă, cumulat, o eroare mai mică de 61ppm. Aici mă refer inclusiv la: paliere 1 si 0 PWM, panta frontului PWM, tensiunea care cade pe canalul MOSFET-ilor bufferului de la iesirea de PWM, amplificatorul operațional de la ieșire, rezistoare, etc etc. Ceea ce incerc sa spun e ca ar fi foarte greu de realizat asa cum vrei tu, un convertor de asemenea rezoluție. Totuși la ce vrei sa-l folosești, dacă nu e secret? Va fi ceva producție de serie?La TL431, ăia 4,5mV delta-Vref/delta-T înseamnă că dacă referința fuge cu 4,5mV/grad Kelvin, determina o creștere echivalentă cu 4,5/0,3=15 nivele logice!! Adică nr. efectiv de biți este tot 10 biți. Ideea cu 2 PWM-uri împreunate merge, desigur, dar R2/R1=1024/1=1024 toleranță 0,05%. La fel ca în cazul de mai sus, în care în loc de R-2R pui PWM.Altceva decît DAC80 n-am vazut la Cascadelor... Link spre comentariu
francezu Postat Iulie 22, 2010 Autor Partajează Postat Iulie 22, 2010 Foarte probabil sa fi exagerat cand m-am gandit la o rezolutie de 14 biti, probabil nici nu e justificata pentru ce vreau eu sa folosesc. Era doar o idee, si precum multe altele probabil nici nu va ajunge sa fie pusa in practica. In fine, nu este nici un secret; am sa detaliez despre ce era vorba : O sursa de tensiune stabilizata,liniara, la care bucla de reactie este analogica, cu opamp-uri, dar la care setarea pragurilor de tensiune si curent se face digital cu un uC. Conform cu schema de principiu, de mai sus, vreau sa furnizez tensiunea de referinta pt amplificatorul de eroare de la un uC. Ma gandeam ca daca tot voi face oversampling la ADC pt citirea tensiunii cu o rezolutie ( teoretica) de 10mV sa pot sa si reglez tensiunea la iesire tot cam pe acolo. Cum divizorul rezistiv din bucla de reactie a sursei are raportul 1:8, cu o rezolutie de 10 biti a DAC-ului (pwm-ul PIC-ului) voi obtine la iesirea sursei pasi de (5/1024)*8 ~=40mV. Poate ca este suficient, si ma stresez degeaba; tocmai de-asta incerc sa ma documentez mai inainte de a face ceva practic. Link spre comentariu
Mikrosha Postat Iulie 22, 2010 Partajează Postat Iulie 22, 2010 Ahaa deci sursă! Păi uite ce propun, dacă vrei rezoluţie mai bună ai putea să faci o mînărie analogică, anume, de la PWM vine o rezistenţă de 1K (zic!) la intrarea amplificatorului de eroare, si mai pui un potentiometru de 1M intre gnd si intrarea amplificatorului de eroare. Cum ar veni potenţiometru să fie pentru 'reglaj fin', dacă crezi că vei avea vrodată nevoie de rezoluţie <10mV. Apropo, ca fapt divers, un DAC80 îl poţi comanda printr-un registru de deplasare şi astfel ocupi doar 2 pini la uC pentru el.Eu am facut rezoluţie de 100mV si nu ma deranjeaza, aruncă un ochi:viewtopic.php?f=205&t=63849 Link spre comentariu
francezu Postat Iulie 22, 2010 Autor Partajează Postat Iulie 22, 2010 Foarte interesant! Eu cred c-am sa raman la rezolutia de 40mV data de pwm-ul PIC-ului; daca nu-mi ajunge , iau dac-uri externe si gata. Multumesc frumos pt sfaturile oferite! Link spre comentariu
MifTy Postat Iulie 22, 2010 Partajează Postat Iulie 22, 2010 sincer, ce fel de montaj ultrapretenţios vrei să alimentezi din sursa aia???dacă e un fel de proiect de tip "uite că pot!!! sâc!!!", ok, fiecare avem ambiţii, dar mai încolo...100 mv mi se par arhisuficienţi, 50 sunt chiar enervanţi... şi dacă ai de gând să foloseşti potenţiometre nu butoane, va trebui să te distrezi căutând disperat potenţiometre multitură, care din câte ştiu, sunt frumuşel de scumpe. Link spre comentariu
francezu Postat Iulie 22, 2010 Autor Partajează Postat Iulie 22, 2010 Da, se poate spune ca e un fel de "uite că pot!!!" , asa pentru antrenament.Pentru reglaj voi folosi encoder, si posibil un buton X10 pentru cazurile cand vreau sa parcurg mai repede un interval considerabil; sau poate ma complic si-i pun tastatura Daca o sa ma enerveze si pe mine o rezolutie asa de mica, o s-o micsorez din soft, de crescut era problema... Link spre comentariu
petre_s Postat Iulie 26, 2010 Partajează Postat Iulie 26, 2010 De altfel, daca se doreste precizie si liniaritate nu cred ca PWM-ul si mai ales R2R sunt cele mai potrivite.. Degeaba ajungi la o rezolutie de shpe biti daca nu ai liniaritate. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum