Sari la conținut
ELFORUM - Forumul electronistilor

Folosire Vref+/- la un PIC


Bird

Postări Recomandate

  • Răspunsuri 27
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • cirip

    11

  • Bird

    11

  • Ashky

    2

  • pegas

    1

Top autori în acest subiect

Se pare ca nu e cazut sa trecem pe privat.Hai sa stabilim cum punem referintele, ca nu se poate face un aparat in care sa bagi "orice" si sa scoata "orice". Nu se poate proiecta la modul general, ci pe o aplicatie concreta. Deci decide cum vrei referintele, pune o schema si continuam discutia. Dupa parerea mea, in etapa didactica, alte referinte decat Vref-=0 si Vref+=Vcc incurca, dar... facem cum doresti. Iar translatarea de domeniu din 1.03 in 3.03 sau mai stiu eu ce, se face foarte simplu soft. Singurele motive reale ptr care as schimba referinta de la Vcc ar fi cresterea preciziei prin aplicarea unei referinte mai exacte decat Vcc sau a rezolutiei, care in cazul didactic propus este de aprox 5mV.Bird ai cuvantul... sau clapornitza.Cirip

Link spre comentariu

Buna ziua , din nou ! Trateaza pentru inceput , dupa cum ai zis , situatia in care referintele sunt interne , adica Vref+ este pusa intern la +5V , iar Vref- la masa . Dupa care , te rog sa vorbim si despre situatia in care punem noi referintele la valorile pe care le dorim ( pentru exemplificare foloseste perechea de valori care ma intereseaza . Mulumesc ! Atasez si marea schema ! Un pic cu un potentiometru , Pin , la o intrare A/D In locul acestuia o sa incerc sa folosesc montajul de mai jos ( in schema ) .

Link spre comentariu

Sa traiesti , M-am uitat mai atent pe formula data de tine : N= 1023* (Vin- (Vref-)) / (Vref+) - (Vref-) am luat si niste exemple (cifre ) si...s-ar parea ca m-am lamurit un pic ( sper sa nu fie o amagire ) N -ul din formula reprezinta numarul de esantioane corespunzatoare valorii de intrare a Vin . In cazul in care rezolutia este pe 10 biti , va fi un numar intre 0 si 1023 . Calculele se fac in bucataria interna a PIC-ului .??

Link spre comentariu

Pfuaiiii, ce bine ca te-ai lamurit, ca nu mai trebuie sa scriu tratatul... :yawinkle:

N -ul din formula reprezinta numarul de esantioane

Nu. Esantionul este unul singur. Cred ca e o neintelegere de termeni aici. La fiecare masuratoare cu ADul se obtine un singur esantion. Valoarea tensiunii esantionului este convertita intr-o valoare numerica. Tine minte (trei cuvinte): O conversie se face asupra unui singur esantion, a carui valoare numerica se gaseste in ADRESH:ADRESL.Daca e sa vorbim pe corecte, N reprezinta cate cuante pot fi cuprinse in masura unui esantion. Cuanta este Vref/1024, adica valoarea corespunzatoare unui LSB. Ceatza totala? :smt005

Calculele se fac in bucataria interna a PIC-ului .??

Exact, dar nu-ti imagina ca le face picul din proprie initiativa. Scrii matale cod ptr calculele alea.EDIT: Citeste putin aici http://ww1.microchip.com/downloads/en/A ... 00546e.pdf, ca e cam mult sa te astepti de la mine sa "tratez" toata teoria ADCului. Discutam ce e neclar. Si mai e ceva. Ai un sistem de dezvoltare sau un programator? Daca da, apuca-te si scrie cod si sa vezi ce repede te lamuresti cand vezi exact cum se comporta piculidis.Deci te rog sa citesti cu atentie nota de aplicatie si sectiunea de ADC din foaia de catalog si din Mid Range Manual si dupa aia continuam discutia.Cirip
Link spre comentariu
N -ul din formula reprezinta numarul de esantioane

>Nu. Esantionul este unul singur. Cred ca e o neintelegere de termeni aici.

 

Da , nu cunosteam termenul . Intelegerea a fost corecta , iar acum pot sa o si spun corect . OK !

 

Calculele se fac in bucataria interna a PIC-ului .??

>Exact, dar nu-ti imagina ca le face picul din proprie initiativa. Scrii matale cod ptr calculele alea.

 

 

>EDIT: Citeste putin aici http://ww1.microchip.com/downloads/en/A ... 00546e.pdf,

 

Nu am reusit sa gasesc fisierul . Incearca linkul si spune-mi te rog daca e bun .

 

Eu folosesc o placa de dezvoltare cu bootloader , asociata cu un compilator Proton+ si o data cu experimentarile acestea , incerc sa deprind si programarea intr-un BASIC de la CROWNHILL

 

 

>Deci te rog sa citesti cu atentie nota de aplicatie si sectiunea de ADC din foaia de catalog si din Mid Range Manual si dupa aia continuam discutia.

 

Cirip

Link spre comentariu

Da, s-a balbait ceva si linkul nu era valid.

Incearca asta: http://www.microchip.com/stellent/idcpl ... e=en010979

 

Sau daca tot nu merge, cauta AN546 in sait la Microchip.

 

Aaa, pai daca ai placa de dezv. cu butloder, e parfum. Scrie mici programele si testeaza-le. Si daca nu merge, mai vedem ce si cum. Dar ideea cand testezi e cam asa: nu scrii cod si vii si zici "Nu stiu ce are ca nu merge". Spui aici la colectiv ce te asteptai sa faca, ce face (sau nu face) in realitate si postezi numai secventa de cod responsabila de dezastru, ca daca sunt mai mult de 10-15 randuri, nici nu ma manjesc sa citesc.

 

Spor!

Cirip

Link spre comentariu
  • 4 luni mai târziu...

E cineva dispus sa continue discutia?Lucrez la un termostat cu pic16f690 si mi-am cam prins urechile in calcule.Ca senzor o sa folosesc un lm35, referinta Vdd, afisaj cu leduri 3 digiti, ADC-ul aliniat la dreapta si temperatura setata salvata in eeprom.Inca nu am montat senzorul pe placa, ma joc cu un semireglabil.Problema este urmatoarea: Daca aplic pe intrare 500mv (echivalentul a 50C) ADC-ul citeste valoarea 102, ca sa o impart la 2 am folosit functia rrf (folosesc asm) dar rezultatul e 51 nu 50.Si cum fac ca la 255mv sa-mi afiseze 25,5C ?

Link spre comentariu

Daca referinta este 5Vcc, rezolutia convertorului 10Bit rezulta 5V/1024=4.88mV ptr fiecare bit in convertorDeci nu prea ai cum sa faci ceva exact ptr ca senzorul(LM35) scoate 10mV/GradBine ar fi ca pui o referinta de 2,56V si atunci se poate face exact (2,5mV/bit)Daca plaja de temperaturi este mica se poate face destul de precis cu tabela de valori

Link spre comentariu

Uite si un cipan mai precis care iti poate oferi o rezolutie de pana la 0.0625 grade C. http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf Mai are avantajul ca e digital, deci scapi de convertorul A/D si de caderi de tensiune si zgomote pe partea analogica. In plus se poate telealimenta, dar protocolul de comunicatie cu el e mai dificil de implementat; nu imposibil.

 

Ar mai fi o metoda, dar asta e de domeniul OZNurilor :). Faci supra-esantionare (cresti rata cu mult peste cea ceruta de taica Nyquist), apoi filtrezi digital si decimezi. Rezulta o crestere artificiala a rezolutiei AD/ului cu cate 1 bit la fiecare marire de 4X a ratei de esantionare. In termeni mai digerabili as spune ca practic iei o galeata de esantioane si le mediezi in asa fel incat sa scoti un esantion cu rezolutie mai mare. Uite o nota de aplicatie care s-ar putea sa te inspire: http://www.atmel.com/dyn/resources/prod ... oc8003.pdf

 

Cirip

Link spre comentariu

Credeam ca am luat-o eu pe o cale gresita.Deci tot la tabel ajung.Daca stiam foloseam direct un ntc si gata, lm35-u l-am comandat ca are iesirea liniara si credeam ca scap de tabel.Urmeaza sa primesc si niste ds1621 si daca ma descurc cu ele renunt la lm35.Incepator fiind nu cred ca ma pot descurca cu 1-wire, cu atat mai putin cu oversampling-ul.Pana primesc ds-urile ma apuc de tabel.O sa incerc si cu referinta 2,56.Daca reusesc o rezolutie de 0,5C ma declar multumit.

Link spre comentariu

Acuratete mai buna de 0,5 grade nu-ti da senzorul. Dar daca faci putina "etalonare", se poate si mai bine! Hai sa calculam putin in niste conditii simplificatoare, dar care ar putea bine mersi fi aplicate in practica.Sa presupunem ca mergi doar pe temperaturi pozitive. Asta inseamna ca tesiunea la iesirea senzorului va fi:Vs=0,01 x T (in grade celsius) - valori de la 0V in susDaca nu te intereseaza mai mult decat temperatura de fierbere a apei, atunci poti incerca o amplificare in curent continuu cu un facor de pana in si aproximativ 5, adica:Va=0,05 x T - valori intre 0V si aproape 5V (pentru 100 de grade)Asta deja seamana cu tensiunea de referinta egala cu Vdd si care corespunde la 1024.Daca umbli putin la amplificare astfel incat sa poti aplica regula de 3 simpla si completa:5V...10245V...102,4gradexV...100 gradeTreci la BCD, afisezi, pui punctul si gata. Aparent obtii o rezolutie de 0,1 grade, ceea ce e posibil prin calibrare, dar nu ai compensare a nelinearitatii, care si aia e destul de mare.Oricum, scapi doar cu un "banal" amplificator in cc. Nu stiu daca scapi de alimentare diferentiala (probabil ca poti daca renunti la cateva grade peste 0 :) )

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