Sari la conținut
ELFORUM - Forumul electronistilor

Cum inlocuiesc DS1820 cu DS18B20 ?


fratello

Postări Recomandate

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
  • Răspunsuri 40
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • fratello

    16

  • mihay

    7

  • gedd

    5

  • junior

    4

Top autori în acest subiect

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
  • 2 săptămâni mai târziu...

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
  • 1 lună mai târziu...

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
  • 2 săptămâni mai târziu...

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
  • 8 luni mai târziu...

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

...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

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
  • 4 luni mai târziu...

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! :da Am folosit varianta postata de domnul Fratello!!!Functioneaza excelent.

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