aionescu Postat Decembrie 29, 2008 Partajează Postat Decembrie 29, 2008 Nu ma pricep la C , dar cred ca nu acolo.Trebuie pus imediat dupa rutina de citire a DS-ului, inainte de rutina (secventa) de conversie HEX-BCD.DS-ul "varsa" o valoare hex in doi registrii. Aia trebuie alterati cu o valoare impusa.Ca sa-ti fie mai usor ia o valoare hex din foaia de catralog si bag-o p-aia.Repet, sunt 2 registrii care trebuie alterati.Poate te ajuta vreun utilizator de C.Bafta! Link spre comentariu
fratello Postat Decembrie 31, 2008 Autor Partajează Postat Decembrie 31, 2008 Iata raspunsul la intrebarea din titlul topicului :OWOut DQ, 1, [$CC, $4E, 0, 0, DS18B20_12bit] ' OWOut DQ, 1, [$CC, $44] ' Start conversia temperaturiiWaitLoop: While not DQWendOWOut DQ, 1, [$CC, $BE]OWIn DQ, 2, [Temperature.Lowbyte, Temperature.Highbyte]Convert_Temp:If Temperature.15 then Temperature= ~Temperature +1 Twist = 1Endif TempC = (Temperature & $7FF) >> 4Float = ((Temperature.Lowbyte & $0F ) * 25 )>>2Temperature = TempC*100 + FloatIf Twist then V= 10000 - Temperature ' 25 C=12500 0 C=10000 -10 C=9000 Twist = 0 else V= 10000 + Temperature EndIf ' SUBROUTINES:'----------------------------------------SelectSign: If v = 10000 then ' Temperature = 0 C. Sign=" " ' No sign Else If v < 10000 then ' <> 0 Sign="-" ' Temperature below 0 C. Else Sign="+" ' Temperature above 0 C. EndIf EndIfReturn'----------------------------------------DisplayTemp: If V >= 10000 then ' Above 0 C. Temperature=V-10000 Else Temperature=10000-V ' Below 0 C. EndIf LcdOut $FE, $C0, Sign, DEC (Temperature / 100), ".", DEC2 Temperature, " ",223,"C "Return Codul-sursa nu-mi apartine, este al unui inginer din Franta, care a binevoit a-mi pune la dispozitie aceste informatii.Sper sa foloseasca si altcuiva. Numai bine tuturor ! Link spre comentariu
fratello Postat Ianuarie 12, 2009 Autor Partajează Postat Ianuarie 12, 2009 Am aprofundat problema; pe baza informatiilor gasite pe net am scris niste variante de cod; toate fac acelasi lucru, dar in maniera diferita; rezultatele sunt identice. Le postez, poate vor folosi si altcuiva.1.OWOut DQ, 1, [$CC, $BE]OWIn DQ, 2, [Temperature.Lowbyte, Temperature.Highbyte]Convert_Temp:Dummy = 625 * TemperatureTempC = DIV32 10TempC = (Temperature & $7FF) >> 4Float = ((Temperature.Lowbyte & $0F ) * 25 )>>2Temperature = TempC*100 + Float2.OWOut DQ, 1, [$CC, $BE]OWIn DQ, 2, [RAWTEMP.Lowbyte, RAWTEMP.Highbyte]Convert_Temp:dummy = RAWTEMP * 625TempC = DIV32 100Temperature = TempC3.OWOut DQ, 1, [$CC, $BE]OWIn DQ, 2, [Temperature.Lowbyte, Temperature.Highbyte]Convert_Temp:TempC = (Temperature & $7FF) >> 4Float = ((Temperature.Lowbyte & $0F ) * 25 )>>2Temperature = TempC*100 + Float4.OWOut DQ, 1, [$CC, $BE]OWIn DQ, 0, [Temperature.LowByte, Temperature.HighByte, Skip 4, Count_Remain, Count_Per_C]Convert_Temp :Temperature = (((Temperature >> 1) * 100) - 25) + (((Count_Per_C - Count_Remain) * 100) / Count_Per_C)if Temperature > 32767 then '32767 check if BIT12=1Temperature= ~Temperaturetemperature=temperature>>3 ; divide by 8 Link spre comentariu
mihay Postat Februarie 26, 2009 Partajează Postat Februarie 26, 2009 Salutari! am realizat si eu montajul de la Elektor,termostatul cu PIC16F628 si LCD si am urmatoarele intrebari pentru cei ce au dorinta sa ma ajute!In prima faza am vazut ca temperatura maxima a termostatului e de +75 grade.Se poate modifica codulincat sa monitorizeze temperaturi pana la 115grade sau si mai mult?? (pentru folosirea in domeniul auto).Este posibil ca acest cod sa fie modificat si pentru functionarea lui cu PIC16F84?? Codurile sa fie functionale si pentru DS18B20,DS18S20??? va multumesc! Link spre comentariu
pyu Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 ca sa nu mai deschid un nou topic...Cum se recunoaste un ds18b20+ fata de un ds18b20?Am dat comanda de niste senzori, am gasit doar ds18b20+ , la aproape 5 lei bucata.Astazi mi-au venit senzorii, pe ei scrie pe primul rand DALLAS, pe al doilea rand DS18B20, pe 3 0843C3, iar pe 4 +179AA.Sunt cu + sau fara? Link spre comentariu
mihay Postat Martie 13, 2009 Partajează Postat Martie 13, 2009 nu cred ca e vreo diferenta! poate e decat inscriptia de producator(an fabricatie,lot,etc) Link spre comentariu
pyu Postat Martie 13, 2009 Partajează Postat Martie 13, 2009 Asa ma gandesc si eu... Ma asteptam sa scrie 18B20+ acolo pe senzor.Oricum inca nu i-am testat, sper sa mearga Link spre comentariu
mihay Postat Noiembrie 18, 2009 Partajează Postat Noiembrie 18, 2009 Salutari!Lamuriti-ma si pe mine va rog...in codul postat senzorul masoara pana la -40'C si pana la +40'C...atunci cand temperatura creste peste +40'Cindica semnul - si descreste valoarea afisata (ex: la +41 arata -40,91...+45 = -36,91)folosesc DS18B20 si un 628A;;; Link spre comentariu
mihay Postat Noiembrie 19, 2009 Partajează Postat Noiembrie 19, 2009 Am rezolvat! Am folosit varianta postata de domnul Fratello!!!Functioneaza excelent. Link spre comentariu
fratello Postat Noiembrie 19, 2009 Autor Partajează Postat Noiembrie 19, 2009 ...si ca sa nu (mai) deschid alt topic : in atasament un ceas cu termometru, cu PIC 16F628A si 1 DS18B20. Perfectibil, bineinteles, dar un punct de plecare pentru incepatori... Succes ! Numai bine ! Link spre comentariu
mihay Postat Noiembrie 19, 2009 Partajează Postat Noiembrie 19, 2009 As dorii sa fac pe un lcd 16x4 temp1,temp2 si ceas cu un 876,crezi ca poate functiona? Link spre comentariu
fratello Postat Noiembrie 20, 2009 Autor Partajează Postat Noiembrie 20, 2009 Da, se poate. Referitor la PM, ai atasament. Link spre comentariu
mihay Postat Noiembrie 20, 2009 Partajează Postat Noiembrie 20, 2009 nu am inteles prea bine...atasamentul e pentru 876?conversia temperaturii si a vumetrului finctioneaza perfec in coduri separate,adica ori temp ,ori vumetrunu stiu dece impreuna in acelasi cod nu functioneaza cum ar trebuiisa fie din cauza ca sint prea multe de procesat si nu reuseste pic-ul sa execute?? Link spre comentariu
mihay Postat Noiembrie 21, 2009 Partajează Postat Noiembrie 21, 2009 Scuzati-mi greselile de ortografie... Link spre comentariu
gedd Postat Martie 21, 2010 Partajează Postat Martie 21, 2010 puneti va rog variantele de hex pentru 18B20 si 18S20(pentru termostat)... la mine nu merge sa compilez..nu am idee de ce Am rezolvat! Am folosit varianta postata de domnul Fratello!!!Functioneaza excelent. 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