Abram Burel Postat Iunie 7, 2007 Partajează Postat Iunie 7, 2007 Curat ciudat: indicatia unui senzor de temperatura sa varieze cu... temperatura Link spre comentariu
Ashky Postat Iunie 7, 2007 Partajează Postat Iunie 7, 2007 Ciudat! Am incercat din nou! imi afiseaza valori intre 90-105..si aceste valori variaza in functie de temperatura...zau ca nu imi dau seama ce e necazul.. Am incercat cu 2 senzori identici, aceleasi simptome!Probabil sunt grade Fahrenheit, asta inseamna 32,2 - 40,5 grade Celsius Link spre comentariu
bogdanm Postat Iunie 7, 2007 Partajează Postat Iunie 7, 2007 Sigur senzoru ala al tau e in grade Celsius? Suna a Fahrenheit. Link spre comentariu
78ATI Postat Iunie 7, 2007 Partajează Postat Iunie 7, 2007 Nu e Farenheit! Am tradus am calculat C=(F/1.8)-32 ...si nu da nimic ok!Am reusit acum sa citesc ceva...problema este 27 grade celsius la Mine in camera?...momentan nu am gheata (am pus la frigider) cat despre apa clocotita ma gandesc ca nu are rost sa testez!Cum se testeaza daca senzorul este ok etalonat ? Link spre comentariu
sofian Postat Iunie 7, 2007 Partajează Postat Iunie 7, 2007 program read_one_wiredim tmp_sign as bytedim j as bytedim scratch as byte[9]dim text as char[7]dim a,b,i,x,r as bytedim deci as char AICI se seteaza senzorul sa faca conversia pe 9..12Bit ow_reset(PORTA,2)ow_write(PORTA,2,$CC) `Skip ROMow_write(PORTA,2,$44) `Convert Temeraturadelay_us(120) AICI se asteapta in functie de pe citi biti este setat senzorul (9..12bit) ptr o conversie corectaResolution Max Conversion Time 9-bit 93.75 ms (tCONV/8) 10-bit 187.5 ms (tCONV/4) 11-bit 375 ms (tCONV/2) 12-bit 750 ms (tCONV) ow_reset(PORTA,2)ow_write(PORTA,2,$CC) Ow_Write(portA, 2, $BE) 'read scratchpad cmd for i=0 to 8 x = ow_read(PORTA, 2) scratch[i] = x 'get result 9 bytes in array next i Semnul temperaturi este pe un bit nu Byte a= scratch[1] 'sign temp if a=0 then tmp_sign="+" else tmp_sign="-" end if a=scratch[0] if a.0 = 0 then 'a.0 is 0.5C value deci = "0" else deci = "5" end if a = scratch[0] >>1 'temp en degre Temperatura este pe 2 Bytes,iar rotirea se face numai daca vrei grade celsius (dar mai inainte ai verificat daca este 0.5 grade !) ByteToStr(a,text)' Lcd_out_cp( text)' Lcd_Chr_CP(",")' Lcd_Chr_CP(deci)' Lcd_chr_CP(223)' Lcd_Chr_CP("c")end.eu personal recomand citirea PDF-ului cu atentie a senzorului Link spre comentariu
aionescu Postat Iunie 8, 2007 Autor Partajează Postat Iunie 8, 2007 Nu pot sa-mi dau cu parerea despre cod fiindca nu ma pricep (eu lucrez in assembler,cum am zis) dar am urmatoarele observatii:1. Senzorul afisaza in grade Celsius.2. Rotirea face conversia din binar in hexa,n-are legatura cu Farenheit.Sigur se face corect calculul? Forteaza o valoare in registrii in care se stocheaza temperatura trimisa de DS sa vezi daca o regasesti pe LCD.3. Senzorul e etalonat din fabrica, asa ca ori merge ori nu. Daca indicatia se schimba cand il incalzesti dar nu seamana cu o temperatura inseamna ca e o buba la calcul. De curiozitate intreb, folosesti o simulare sau "arzi" picul de fiecare data cand modifici codul? Link spre comentariu
78ATI Postat Iunie 8, 2007 Partajează Postat Iunie 8, 2007 Curat ciudat: indicatia unui senzor de temperatura sa varieze cu... temperatura Imi cer scuze de exprimare, insa ma refeream la valoarea afisata nu la faptul "ca variaza odata cu temperatura". @aionescu: din pacate nu folosesc nici o simulare, nu am un soft ce face acest lucru, si asa cum ai spus testarea o fac "arzand" PIC-ul. Va multumesc tuturor de ajutor. Ceea ce parea super simplu s-a dovedit mai complex. Am reusit in final sa citesc temperatura senzorului, insa folosind rezolutia default a acestuia 12 biti. Multumesc lui @sofian, marea problema a fost timpul de conversie. Conversia corecta ( a zecimalelor) a fost facuta la 720 milisecunde. Interesant este ca la 120 microsecunde cum aveam in programul testat, conversia gradelor se face bine. Am sa refac astazi programul pentru o rezolutie de 9 biti cu un timp de conversie 93,75 milisecunde, iar apoi am sa verific etalonarea DS18B20. Am sa postez codul sursa 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