logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak podłączyć DS18B20 do AT89C51 i odczytać temperaturę?

birdman 08 Gru 2003 20:59 8679 13
REKLAMA
  • #1 429693
    birdman
    Poziom 2  
    Posty: 2
    czy mógłby mi ktos objasnic jak podlaczyc ten termometr do tego mikrokontrolera i jak powinien wygladac algorytm odczytywania temperatury?
  • REKLAMA
  • #2 429877
    kozak_sc
    Poziom 23  
    Posty: 752
    Pomógł: 25
    Ocena: 117
    z tego co mi wiadomo to zwykly ukladzik pracujacy na 1wire. czyli tak podlaczasz mase do ukladu i teraz tak zlbo podlaczasz 5 v i dane osobno albo razem. bo jesli razem wystarcza tylko 2 przewody ( 1 wire ;) ) przewod danych podlaczasz do ktoregos z wyprowadzen proca (nie zapomnij o wejsciach open collector - niektore nie maja pullupow) i teraz tylko kjwestia programiku. w bascomie sa chyba gotowe funkcje do 1wire
  • #3 430310
    birdman
    Poziom 2  
    Posty: 2
    czyli porostu podlaczam DQ z wyjściem proca, do Vdd podłaczam zasilanie (5v) do Gnd uziemienie? reszta to kwestia oprogramowania?
  • REKLAMA
  • #4 430774
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    birdman napisał:
    czyli porostu podlaczam DQ z wyjściem proca,
    A zajrzyj sobie do specyfikacji? Trzeba jeszcze rezystor podciągający (może być w procku) i odpowiedni typ wyjścia (otwarty kolektor/dren)
  • #5 433276
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Ja właśnie odpaliłem DS1820 na 80c2051 działa działa bez problemów. Zalecam podwieszenie lini DQ prze 4k7 do +5V i uważaj na czasy w slotach READ i WRITER. Miałem je trochę za długie i układ się zgłaszał po inicjacji ele nie reagował na żadną komędę. Procedurki możesz ściągnąć z noty katalogowej DALLASA.
    Co do DS18B20 to dokładnie nie wiem jaki są różnice, musiał bym ściągnąć notę katalogową.
  • REKLAMA
  • #6 440288
    Rysiek_W
    Poziom 12  
    Posty: 27
    Ocena: 2
    Ds18B20 jest jednym z najdokładniejszych termometrów Dallasa, mozna wyciagnąc rozdzielczość +/- 0,1 stopnia. Wynik jest zapisaywany w dwóch bajtach. Hi--> SSSSSHHH, Lo->HHHHHLLL, gdzie S-znak, H-bity czesci całkowitej pomiaru temperatury w stopniach [C], L-bity wyniku po przecinku (L*0,0625 [C]). Wyniki sa zapisane w kodzie U2.
  • #7 442128
    DanM
    Poziom 11  
    Posty: 25
    Ocena: 2
    Hej przesylam wam moj projekt, jeden z pierwszych jaki wykonywalem, tak wiec kod moze nie jest optymalny, lecz wraz z opisem wszystko chyba stanie sie jasne. Poza tym wszystko fajnie dziala. W schemacie jest chyba blad przy resecie procesora,a poza tym wszystko ok. Mam nadzieje ze w czyms wam pomoge.
    Załączniki:
    • regu_temp.doc (282 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #8 443332
    socker
    Poziom 1  
    Posty: 1
    Rysiek_W napisał:
    Ds18B20 jest jednym z najdokładniejszych termometrów Dallasa, mozna wyciagnąc rozdzielczość +/- 0,1 stopnia. Wynik jest zapisaywany w dwóch bajtach. Hi--> SSSSSHHH, Lo->HHHHHLLL, gdzie S-znak, H-bity czesci całkowitej pomiaru temperatury w stopniach [C], L-bity wyniku po przecinku (L*0,0625 [C]). Wyniki sa zapisane w kodzie U2.


    Witam wszystkich!
    Właśnie próbuję przeliczyć dane z dwóch pierszych bajtów układu DS18B20, i zupełnie nie wiem jak się za to zabrać.Z DS1820 jest jednak łatwiej..Nie ukrywam,jestem bardzo początkujący..
    Wiem, że rozdzielczość ustawia się zmieniając bity R0 i R1 w czwartym bajcie RAM-u układu DS18B20, ale co dalej?Przecież bity SSSSS w Hi mają wartość 0 lub 1, jak to obliczyć? Proszę o wskazówkę, nie koniecznie o gotową procedurę.
    Gdzie mogę znaleźć więcej na temat w/w kodu U2?

    Jestem tu pierwszy raz,wspaniałe forum!!!Pozdr.
  • #10 447281
    lopr_pol
    Poziom 32  
    Posty: 1715
    Pomógł: 163
    Ocena: 487
    Cytat:
    Witam wszystkich!
    Właśnie próbuję przeliczyć dane z dwóch pierszych bajtów układu DS18B20, i zupełnie nie wiem jak się za to zabrać.Z DS1820 jest jednak łatwiej..Nie ukrywam,jestem bardzo początkujący..
    Wiem, że rozdzielczość ustawia się zmieniając bity R0 i R1 w czwartym bajcie RAM-u układu DS18B20, ale co dalej?Przecież bity SSSSS w Hi mają wartość 0 lub 1, jak to obliczyć? Proszę o wskazówkę, nie koniecznie o gotową procedurę.
    Gdzie mogę znaleźć więcej na temat w/w kodu U2?

    Jestem tu pierwszy raz,wspaniałe forum!!!Pozdr.


    Ja robilem to tak (program w C na pceta):
    w tb1 mlodszy bajt, w tb2 starszy bajt z ds'a 18B20 (precyzja 12bit)

    znak='+';
    if(tb2>128) { znak='-'; tb1=255-tb1; tb2=255-tb2; } wykrycie ujemnej T
    t=(tb1&0x0F)*0.0625; <- jak nie chcesz miec ulamkow to tego nie ma
    tb1=tb1>>4; tb2=tb2<<4; przesuniecia bitowe o 4pozycje
    t+=tb1+tb2; i gotowy wynik w t
  • #12 731517
    sawic
    Poziom 13  
    Posty: 110
    Ocena: 3
    a ja sie zastanawiam jakie jeszcze istnieja czujniki dzialajace na 1-wire ?
    jakos nie moge tego znalezc :(

    pozdro
  • #13 731753
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    sawic napisał:
    a ja się zastanawiam jakie jeszcze istnieja czujniki dzialajace na 1-wire ?
    jakos nie moge tego znalezc :(
    A patrzyłeś na stronie producenta? Z tego co pamiętam głównie są termometry, ponadto przetwornik A/C, układ 1 bitowego portu I/O, układ "rozgałęźnika" 1wire. Pozatym jest cała seria układów podobnych elektronicznie do iButton czyli układy z samym numerem seryjnym, układy z pamięcia z możliwością blokowania obszarów, układy kryptograficzne itp. Oczywiście układy iButton w obudowie "pastylkowej" są kompatybilne ze standardem 1wire (i chyba nawet od nich ten standard zaczął się rozwijać).

Podsumowanie tematu

✨ DS18B20 to cyfrowy czujnik temperatury działający na magistrali 1-Wire, który można podłączyć do mikrokontrolera AT89C51 poprzez linię danych DQ, zasilanie 5V oraz masę. Niezbędne jest zastosowanie rezystora podciągającego (np. 4,7 kΩ) na linii DQ do +5V, a port mikrokontrolera powinien mieć wyjście typu open collector lub open drain. Odczyt temperatury wymaga implementacji protokołu 1-Wire, który można realizować programowo, np. w Bascom lub C. Wynik pomiaru temperatury jest zapisywany w dwóch bajtach w kodzie U2, gdzie bity odpowiadają za znak, część całkowitą i ułamkową temperatury z rozdzielczością do 0,0625°C. Warto zwrócić uwagę na prawidłową polaryzację czujnika, aby uniknąć błędów odczytu (np. stałe wartości 85 lub 0). Dla lepszego zrozumienia algorytmu przeliczania danych z DS18B20 polecane jest zapoznanie się z notą katalogową producenta oraz przykładami dostępnymi na forach takich jak Elektroda.pl. Istotne jest także odpowiednie ustawienie czasów w cyklach odczytu i zapisu, aby czujnik poprawnie reagował na komendy.
Wygenerowane przez model językowy.
REKLAMA