Sari la conținut
ELFORUM - Forumul electronistilor

ds18b20 cu at89s52


Vizitator s_marius

Postări Recomandate

Vizitator s_marius

Vreau sa fac un termometru digital cu ds18b20 si at89s52 dar nu prea am idee de cum tre sa citesc temperatura din senzor.Am datasheetul de la ds18b20 dar engleza mea lasa mult de dorit.Astept cateva sugestii.Multumesc anticipat.

Link spre comentariu
  • Răspunsuri 2
  • Creat
  • Ultimul Răspuns
Vizitator musaraf

Senzorul DS18B20 si inrudite merg pe protocolul OneWire ( microcontrolerul si senzorul trimit si primesc date pe acelasi fir)

Am facut de curand asa ceva in C pe PIC16F877, daca vrei pot sa-ti trimit programul, la Atmel nu prea ma pricep. Conversia ADC se face in senzor si trimite datele bit cu bit pe OneWire. Toata problema este de soft, hardul este ca se leaga pinul de date (DQ) la controler cu un pull up de vreo 4.7K (si pinii de alimentare, normal). - pg 6 desenul de jos din datasheet.

 

Comunicarea se face in trei etape:

orice secventa de lucru cu DS18 se compune din

initializare (raspude cu presence pulse), comanda ROM (aici Skip Rom), comanda de functie ("function command"), apoi daca se doresc alte comenzi iar initializare s.a.m.d.

 

1. Initializare:

Se trage pinul DQ LOW cam 500 us (microsecunde)

Se lasa pinul liber (float, pus pe input)

Se asteapta vreo 80 us.

Se citeste pinul. Senzorul ar trebui sa raspunda cu "presence pulse", adica linia sa fie LOW. (desen pg.15). Daca este HIGH, este legat rau, este ars, n-am citit in momentul care trebe etc.etc.

 

2. Se trimite comanda Skip ROM (0xCC)

3. Se trimite comanda Convert T (citirea temperaturii si conversia ADC, 0x44) - datasheet pg. 44

 

4. Se asteapta vreo secunda-doua sa aiba timp de conversie

5. Inca o initializare ca la pct.1

6. Iar un Skip Rom (0xCC)

7. Se trimite comanda Read Scratchpad (citeste memoria senzorului, 0xBE). Acum senzorul trimite pe OneWire, bit cu bit, cei 9 octeti din memorie, incepand cu bitul cel mai putin semnificativ (LSB) al octetului 0.

Ce trimite se arata la pag.7. Din tot ce trimite el, pe noi ne intereseaza numai primii 2 octeti, primul este octetul cel mai putin semnificativ, al doilea octetul cel mai semnificativ al temperaturii . Reprezinta temperatura pe pe 12 biti (formatul temperaturii la pg.4).

 

 

Comenzile hexa se trimit bit cu bit, asa:

 

Cum se trimite un 0 pe OneWire

- se trage linia LOW vreo 90 us

- se da drumul la linie, pull up o va trage inapoi HIGH

- se asteapta cateva us (pauza intre cadre)

 

Cum se trimite un 1 pe OneWire

- se trage linia LOW vreo 5 us

- se da drumul la linie, pull up o va trage inapoi HIGH

- se asteapta vreo 100 de us (timpul cat senzorul sa citeasca linia + o pauza intre cadre)

(desene pag.16 cele 2 de sus)

 

Cum se citeste linia OneWire

- pentru ca se comunica pe un singur fir, senzorul trimite cate un bit numai cand i se da un semnal:

- se trage linia LOW vreo 2 us

- se da drumul la linie, senzorul o va face LOW sau HIGH

- se asteapta cam 10 us

- se citeste linia - daca este HIGH senzorul a trimis 1, daca este LOW a trimis 0

- se asteapta vreo 100 us (ce a mai ramas din timpul de citire + o pauza), daca pauzele astea sint mai lungi nu este problema.

(scheme pg. 16 cele 2 de jos si pg.17)

 

Apoi bitii se asambleaza in octeti, se imparte 16 valoarea de 2 octeti de la temperatura (rezolutia este de 0.0625 grade celsius). se afiseaza etc etc.

 

 

Se mai poate citi codul unic al senzorului:

1. Initializare

2. Se trimite ReadROM

3. Senzorul trimite codul de identificare (64 de biti)

Asta ar fi folosi sa se verifice daca merg rutinele de citire.

 

Mai verificati graficele de timing si codurile functiilor, dar sper ca este corect. Succes.

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