Sari la conținut
ELFORUM - Forumul electronistilor

Eroare cu senzor TMP75


Bird

Postări Recomandate

Va salut !

 

Am incercat un termometru cu un senzor de tip TMP75 , si ma surprinde variatia pe care o are la o temperatura negativa de -5 grade C : intre -5 / -15 ??? Avand in vedere ca pe temperaturi pozitive merge corect , greseala, cred ca e undeva la formula de calcul ???

Dati-mi va rog un sfat !

Folosesc urmatoarele linii :

..............................................................

SCRIERE: 'scriere in registrii senzorului

i2cwrite PORTC.3,PORTC.4,$90,$01,[$6E] 'se initiaza snzorul TMP 75

PAUSE 40

i2cwrite PORTC.3, PORTC.4, $90,$02,[$160]

PAUSE 40

i2cwrite PORTC.3, PORTC.4, $90,$03,[$170]

PAUSE 40

CITIRE:

 

I2CREAD PORTC.3,PORTC.4,$91,$00,[T] 'citire si tiparire temperatura cu TMP 75

PAUSE 100

if (t/256)>128 then

temp = ($fff - T)

pause 100

lcdout $fe,$C0,"Temp= -", dec (temp + 1 )/16 ,":",dec2 (temp+1)//16 ,"gr.C"

else

LCDOUT $fe,$C0 ,"Temp= " , dec t/256,",", dec2 t//256," gr.C"

endif

pause 50

goto mainloop:

end

PS. Pentru un senzor DALAS1820 stiti o formula pentru temperaturi negative ?

 

Va multumesc !

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

Top autori în acest subiect

  • Bird

    6

  • cirip

    4

  • XAN77

    3

  • vsurducan

    2

Top autori în acest subiect

Ambii senzori transmit temperatura in complement fata de 2.Cureti carry, rotesti cei 9 sau12 biti odata la stanga si bitul de semn il ai in carry.Pentru un byte algoritmul e mai jos: procedure comp2_binary ; conversia unui byte din complement fata de 2 in binar asm bcf status_c ; cur??? carry asm rlf msb, f ; semnul este în carry if status_c then sign = high ; valoare negativ?, trebuie convertit? asm comf msb, f ; complement, asm incf msb, f ; ?i increment, msb = valoare pozitiv? else sign = low ; valoare pozitiv?, p?streaz-o end ifend procedure

Link spre comentariu

Ambii senzori transmit temperatura in complement fata de 2.Cureti carry, rotesti cei 9 sau12 biti odata la stanga si bitul de semn il ai in carry.Pentru un byte algoritmul e mai jos:......................

Nu ma vait de valoarea / exactitatea masuratorii , am montate si citite in acelas timp datele de pe fiecare senzor , si sunt perioade in care masuratorile difera foarte putin (la zecimale ) apoi "TMP75" o ia razna un timp , dupa care revine (aleator )iar la valori "corecte " comparativ cu cele masurate pe Dalas1820 ??? Nu am un alt senzor la fel cu care sa fac o verificare . Cred ca o sa cumpar ,totus , altul pentru a ma lamuri . Cu multumiri ,
Link spre comentariu

Foarte posibil sa fie comunicatia. Cat de lungi sunt sirmele intre senzor si microcontroler si mai ales cum sunt imperecheate?

Eroarea era la "mine'n teren" variabila "temp" era definita BYTE in loc de WORD , iar scaderea se facea aiutea . Cablul folosit este o bucata de 2m dintr-un cablu de 6 perechi . Am avut surpriza sa gasesc o pereche in scurt ( si nu-l verificasem inainte ). Cu multumiri si stima ,
Link spre comentariu

de curiozitate, zi-mi si mie cum sta cu acuratetea masuratorii ? Eu am folosit niste LM75 care sunt ceva similar dar care sunt niste MIZERII de senzori, scrie in datasheet abatere de +-2 la un interval si +-3 la altul mai extins; si exact atat arata, cu intre 2 si 3 grade diferit fata de realitate, plus instabilitate exagerata . Eu unu acum folosesc numai DS18B20.

Link spre comentariu

de curiozitate, zi-mi si mie cum sta cu acuratetea masuratorii ?.......................... Eu unu acum folosesc numai DS18B20.

Mi se pare mai stabil 1820 decat TMS . Adica TMS oscileaza cam cu un grad in jurul valorii citite pe Dalas 1820 . Ca sa fac o compararre cu termometrul cu alcool ... imi e mai greu , ambele sunt undeva...pe acolo destul de exacte . Asta pe temperaturile negative . Pe temperaturi pozitive, valorile sunt foarte apropiate , intre +/- 0.01 / 0.6 (osciland tot TMSul) .

 

Cu stima ,

Link spre comentariu

Salut,Am o sugestie, daca vrei sa cresti stabilitatea. Aplica o filtrare trece jos digitala de tip medie miscatoare (moving average). Fiecare temperatura afisata sa fie rezultatul mediei aritmetice a 8 citiri, de exemplu. Desigur, va trebui sa citesti mai des ca sa pastrezi rata initiala de update a temperaturii. De ex, daca update-ul se face acum la 1 secunda, va trebui sa citesti la 1/8 secunde, sa faci media aritmetica si apoi sa afisezi rezultatul medierii.Cu cat mediezi pe mai multe esantioane, cu atat oscilatiile vor fi mai reduse pentru ca scade frecventa de taiere a FTJ echivalent. Aici poti experimenta putin cu numarul de esantioane pe care mediezi, ca sa realizezi un compromis intre viteza de raspuns si stabilitate.Cirip

Link spre comentariu

Salut,...................................................

Cu cat mediezi pe mai multe esantioane, cu atat oscilatiile vor fi mai reduse pentru ca scade frecventa de taiere a FTJ echivalent. Aici poti experimenta putin cu numarul de esantioane pe care mediezi, ca sa realizezi un compromis intre viteza de raspuns si stabilitate.

 

Cirip

Sunt convins de cele spuse de tine . De altfel asta e si motivul pentru care Dalas1820 "sta " mai bine . Daca ne uitam pe liniile de comanda observam o intarziere .....

 

****************

waitloop:

OWIn DQ, 4, [count_remain] ' Check for still busy converting

If count_remain = 0 Then waitloop

OWOut DQ, 1, [$CC, $BE] ' Read the temperature

OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c]

****************

Link spre comentariu

Hm... cred ca nu vorbim despre acelasi lucru.Filtrarea digitala se face pe esantioanele de temperatura deja citite.Portiunea de cod postata este legata de procedura de citire, care am presupus ca e corecta din start. Intarzierea din cod nu face decat sa astepte cipanul sa termine conversia. Mi se pare obligatoriu sa termine conversia pentru a da rezultate valide, dar asta nu are legatura cu filtrarea digitala de care vorbeam.Sau imi scapa mie ceva...Cirip

Link spre comentariu

probabil Bird crede ca cipanu in cauza face el singur cele 8 citiri si trimite ca rezultatul citirii deja media aritmetica, dar, nu cred, si chiar daca ar fi asa ar insemna ca are timpi de conversie foarte mici, oricum ar fi, bravo lui pentru stabilitatea care o are .

Link spre comentariu

Uite la ce ma refer... Am simulat in excel niste citiri de 20 de grade peste care se suprapune o componenta aleatoare. Rezultatul este o imprecizie a citirii de +/-1grad. Coloana din dreapta este rezultatul de dupa filtrare. Imprecizia a scazut. Simularea este cu medierea a 8 esantioane, dar poti mari numarul. Rezultatul va fi mai neted, dar va trebui sa astepti mai mult pana cand ai rezultate valide. Ai si grafice pentru comparatie.Dupa cum constati, filtrarea se face independent de comunicatia cu termometrul. De fapt, valorile alea pot fi temperaturi, tensiuni, curenti, boabe de mazare, orice. Filtrarea digitala nu face decat sa mestece niste numere, fara sa-i pese cum ai obtinut numerele alea.Cirip

Link spre comentariu

Hm... cred ca nu vorbim despre acelasi lucru.............................................................Sau imi scapa mie ceva...Cirip

Am inteles ce propune-ai . Iar ce incerc sa spun eu , corect sau nu , este faptul ca Dalas , daca am inteles bine , nu improspateaza citirea/afisarea , decat cand se modifica ceva prin registri "count_remain" si "count_per_c" , rezultatul fiind o mai mica fluctuatie pe display . De bine'nteles ca nu e acelas lucru . Prin ce propui tu nu numai ca e o fluctuare mai mica a valorii afisate , ci creste si exactitatea masuratorii .
Link spre comentariu

La "medie miscatoare" (cum zice cirip, "sliding window" cum imi place mie :) ) nu e nevoie sa se creasca frecventa de citire. Se citeste, se face media cu cele 7 de dinainte si se afiseaza. La ciclul urmator se va repeta chestia. Deci se poate face foarte bine un ciclu compus din citire, mediere si afisare. Cu cat bufferul de mediere (FIFO) este mai mare, cu atat variatiile vor fi mai... mediate. Cel putin in cazul temperaturii, nici nu are rost sa citesti/ciclezi prea des, avand in vedere ca variatile de temperatura sunt fenomene in general lente.

Link spre comentariu

...nu e nevoie sa se creasca frecventa de citire. Se citeste, se face media cu cele 7 de dinainte si se afiseaza...

buna idee, nu mam gandit, o sa incerc la un LM75 de al meu ce nu prea il folosesc tocmai ca e instabil
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