LM35C i 16F876A - problem oko ocitavanja vrijednosti na AN0

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
Milentije
Pocetnik na forumu
Pocetnik na forumu
Posts: 26
Joined: 20-05-2011, 20:55

LM35C i 16F876A - problem oko ocitavanja vrijednosti na AN0

Post by Milentije »

Pošto sam novi na forumu prvo pozdrav svima!

Od skora ganjam uCe, iza sebe imam tek par početničkih projekata (igranje sa BCD/7S dekoderom 4511, MAX232 i slične gluposti).

Sada sam došao do analognih ulaza i pokušavam da napravim termometar. Cilj je, jelte, očitavanje temperature pomoću LM35C senzora i ispisivanje vrijednosti na računaru preko RS232 porta. Sve uredno radi osim očitavanja vrijednosti sa senzora. Problem je sledeći:

Imam LM35C (-40°C do 110°C) spojen na gore navedeni PIC na AN0. Svuda je Vdd 5V (regulisan sa 78S05), pa je samim tim i Vref 5V (valjda :)).

Očitavanje radi, dakle uspijem ja očitati vrijednost, ali rezultati između uzastopni mjerenja (između kojih je vremenska razlika 5s) su ogromna, po 6-7 stepeni (kada se sve sračuna na osnovu formule koju ću napisati u nastavku).

E sad, evo i te formule po kojoj računam temperaturu:

float value, temperatura, napon;

value = read_ADC(0); //Čitanje vrijednosti sa AN0 i smještanje u promjenjivu value

napon = ((value)/1023.0)*5*1000); // Dijelim sa 1023 zbog 10bitne konverzije, množim sa 5 zbog napona od 5V, i na kraju množim sa 1000 da bih dobio mV

Pošto je 10mV = 1°C ovu gornju vrijednost treba podijeliti sa 10

temperatura = ((value/1023.0)*500);; //temperatura u stepenima

Kad se to još sredi i pojednostavi, dobija se sledeća formula:

temperatura = (value *0.48876);

To je to što se tiče matematike. Sad idemo na hardver. Googla sam i nalazio različite stvari vezano za rad sa ADC-om. Neko na AN2 i AN3 dovodi Vref- i Vref+, a neko ne dovodi ništa već i njih podesi kao AN ulaze, a ne kao referentne tačke. Ja sam radio tako da sam čitav port A proglasio za analogni ulaz (dakle AN2 i AN3 nisu referentne tačke nego su analogni ulazi). Sve u svemu, ja dobijam neke vrijednosti, ali one nisu stabilne. Prvi put izbaci 20.85, a 5 sekundi poslije (toliki sam stavio razmak izmedju dva ocitavanja) mi pokaze 26.45, pa onda 21.23, pa 28.45 i tako dalje.

Evo i šema kako je to sve spojeno (radi jednostavnosti šeme nisam crtao MAX232 i njegove veze jer to radi kako treba).
Attachments
lm35.jpg
lm35.jpg (31.38 KiB) Viewed 1022 times
Milentije
Pocetnik na forumu
Pocetnik na forumu
Posts: 26
Joined: 20-05-2011, 20:55

Re: LM35C i 16F876A - problem oko ocitavanja vrijednosti na AN0

Post by Milentije »

Problem je riješen. "Jutro je pametnije od noći". :)

Napon koji sam doveo na 7805 bio je oko 6,5 V što mu nije bilo dovoljno da na svom izlazu da 5 V. Povećao sam mu napon na ulazu, i time dobio na izlazu 4.96 (prije ovoga je bilo 4.8, ali mi nije ranije palo na pamet da ovo provjerim). Sada sve radi kako treba, više nema onih velikih oscilacija.
Post Reply