Jump to content
ELFORUM - Forumul electronistilor
Guest s_marius

ds18b20 cu at89s52

Recommended Posts

Guest 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 to comment
Share on other sites

Guest 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 to comment
Share on other sites

Guest s_marius

Multumesc pentru ajutor.O sa studiez cu atentie cea ce mi-ai spus si daca am neclaritati sper ca imi vei fi in continuare alaturi cu vreo explicatie. :bere:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines