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

Układ Ds18b20 do mikrokontrolera

szymon132 04 Lut 2011 18:49 1730 9
  • #1 9103256
    szymon132
    Poziom 2  
    Od niedawna zajmuję się mikrokontrolerami i nauką Bascoma.
    Zakupiłem czujniki temperatury DS18B20.
    Po podłączeniu do atmegi8 szybko się zagrzały. Do zasilania układu podłączyłem 5V(nóżka3), nóżkę danych DQ(nóżka2) do atmegi i do zasilania przez rezystor3,3k
    a masę (nóżka1) do masy.
    Układ Ds18b20 do mikrokontrolera
    Po takim podłączeniu czujnik i stabilizator napięcia przy zasilaniu szybko się zagrzał.
    Po podłączeniu drugiego czujnika na odwrót nic się nie stało w programie.

    Po w końcu zagrzałem trzy czujniki w ten sam sposób.
    Mam program który pokazuje numer seryjny czujników i teraz pokazuje on zawsze
    255255255255
    255255255255
    niezależnie od tego który czujnik jest podłączony(po podłączeniu w ten sam sposób ale już się nie grzeją)

    załączam poniżej kod programu odczytującego numer seryjny
    $regfile = "m8def.dat"                                      'informuje kompilator o pliku
          'dyrektyw mikrokontrolera
    $crystal = 8000000                                          'informuje kompilator
          'o częstotliwości oscylatora
          'taktującego mikrokontroler
    Config Pinb.1 = Input
                                                                 'linia PB1 jako wejściowa
    Config Lcd = 16 * 2                                         'konfiguracja typu wyťwietlacza LCD
    Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4 , E = Portd.0 , Rs = Portb.0       'konfiguracja linii
                                                                 'do których pinów dołączono wyťwietlacz LCD
    
    Config 1wire = Portd.6
    
    Dim Ds(8) As Byte
    
    1wreset
    1wwrite &H33
    Ds(1) = 1wread(8):
    
    
    'Do
    
    Cls
    Lcd Ds(1) ; Ds(2) ; Ds(3) ; Ds(4)
    Lowerline
    Lcd Ds(5) ; Ds(6) ; Ds(7) ; Ds(8)
    
    'Loop
    
    End


    powiedzcie mi co robię źle bo już wydaje mi się że spaliłem 3 czujniki.
    Bo żaden nie działa według mnie poprawnie.
  • #3 9105983
    szymon132
    Poziom 2  
    Według mnie raczej układ jest tak taktowany.
    inne programy bez problemu działają mi na tej częstotliwości.
    A jest to możliwe że przy zmianie taktowania układ zacznie wykrywać mi czujniki?

    Zauważyłem że bez podłączonego czujnika wyświetlacz pokazuje to samo
    Lecz kiedy odepnę rezystor od linii danych pokazuje on same 0000

    W poniedziałek kupię chyba kolejny czujnik i będę próbował dalej.

    Bardzo mnie zastanawia nota katalogowa bo jak według niej podpiąłem nowy czujnik to nawet stabilizator na zasilaniu zaczął się grzać.
    Układ Ds18b20 do mikrokontrolera
  • Pomocny post
    #4 9106049
    piotrva
    VIP Zasłużony dla elektroda
    ludzie, w przeciągu chyba tygodnia znowu to samo na elektrodzie, czyli potwierdzenie mojej teorii - im większymi literami jest coś napisane, tym gorzej to widać. pewnie kolega wzorował się na dolnym rysunku, pod którym pisze BOTTOM VIEV (czyli WIDOK OD DOŁU) - innymi słowy mówiąc widok tak jakbyśmy układ trzymali nóżkami do twarzy.
    rysunek górny pokazuje układ trzymany PŁASKĄ STRONĄ Z NAPISAMI DO TWARZY
    Układ Ds18b20 do mikrokontrolera
  • #5 9106101
    asembler
    Poziom 32  
    tronics napisał:
    Odwrotne podłączenie raczej w przypadku tych DSów nie skutkuje uszkodzeniem układów. O ile nie doszło do termicznego uszkodzenia struktury. Czy na 100% masz układ taktowany 8MHz?

    U mnie raczej skutkuje.

    Nie rozumiem tylko dlaczego wszyscy koniecznie chcą zawsze 3 nogi podłączać (a szczególnie początkujący) skoro dwie podłącza się ławiej i bezpieczniej. Rozumiem że bardziej doświadczeni robią to z lenistwa.

    Do moderatorów pośba żeby zrobic niebieski pokój "jak nie spalićDS18B20"
  • Pomocny post
    #6 9106122
    sp3ots
    Poziom 38  
    Witam !
    Dodaję gotowy działający program do pomiaru temperatury.
    ATmega8 fabryczne fuse bity ( nic nie zmieniaj ).
    Program sprawdziłem z liniami które wtym programie są zaremowane, ze względu na łatwiejszą konfigurację na mojej płycie.
    
    $regfile "m8def.dat"
    Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4 , E = Portd.0 , Rs = Portb.0
    'Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    
    Config Lcd = 16 * 2
    $crystal = 1000000
    Deflcdchar 0 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32
    Config 1wire = Portd.6
    'Config 1wire = Portb.0
    
    Dim Db(2) As Byte
    Dim T As Integer
    Dim Ulamek As Integer
    Cls
    Cursor Off
    Do
    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 750
    1wreset
    1wwrite &HCC
    1wwrite &HBE
    Db(1) = 1wread(2)
    T = Makeint(db(1) , Db(2))
    T = T * 10
    T = T / 16
    Ulamek = T Mod 10
    T = T / 10
    Locate 1 , 1
    Lcd " " ; T ; "," ; Ulamek ; Chr(0) ; "C"
    Loop
    End
    

    Powodzenia życzę. Stefan
  • Pomocny post
    #7 9106321
    piotrva
    VIP Zasłużony dla elektroda
    asembler napisał:
    tronics napisał:
    Odwrotne podłączenie raczej w przypadku tych DSów nie skutkuje uszkodzeniem układów. O ile nie doszło do termicznego uszkodzenia struktury. Czy na 100% masz układ taktowany 8MHz?

    U mnie raczej skutkuje.

    Nie rozumiem tylko dlaczego wszyscy koniecznie chcą zawsze 3 nogi podłączać (a szczególnie początkujący) skoro dwie podłącza się ławiej i bezpieczniej. Rozumiem że bardziej doświadczeni robią to z lenistwa.

    Do moderatorów pośba żeby zrobic niebieski pokój "jak nie spalićDS18B20"

    ja nigdy DS nie podłączyłem odwrotnie, więc nie wiem, ale z doświadczeń kolegów z forum wiem, ze na 90% po takim zagrzaniu DS nadaje się do śmieci.
    A co do podłączania na 3 czy 2 nogach, to początkujący pewnie robią tak dlatego, że nie chce im się zwracać uwagi na strong pullup na 750 ms. podczas konwersji.
  • #8 9106455
    szymon132
    Poziom 2  
    Rzeczywiście nie zauważyłem w nocie katalogowej że to widok od dołu.
    Dziś rano kupiłem kolejny czujnik ale podłączyłem go na wszelki wypadek inaczej (znalazłem schemat) czyli dwie zewnętrzne nóżki do masy a środkową do uC oraz przez rezystor 4,4k do zasilania.
    Program Stefana działa :)
    Wielkie dzięki koledzy bardzo mi pomogliście:)
    PS Niektórzy dopiero się uczą i dlatego popełniają błędy teraz już będę zwracał bardziej uwagę na takie rzeczy :)
  • #9 9106568
    piotrva
    VIP Zasłużony dla elektroda
    cóż, pewnie nie mało kasy straciłeś na to, bo ds18b20 to nie tranzystorki. na drugi raz na prawdę wystarczy trochę więcej uwagi i dokładne czytanie opisów pod obrazkami, bo, nie uwierzysz, ale nie dalej jak 7, może 10 dni temu inny kolega z forum dokładnie tak samo unieszkodliwił ds18b20, bo też myślał, że to widok z góry...
  • #10 9398773
    szymon132
    Poziom 2  
    Wielkie dzięki panowie za pomoc
    Na Ds18b20 nie wydałem tak dużo jak wam się wydaje miałem możliwość kupienia ich po 2,5zł za sztukę więc w porównaniu z cenami ze sklepów to jak za grosze.
    Już będę bardziej uważał na opisy czy układ jest pokazany na rysunku z góry czy z dołu.
    I wielkie dzięki za program do odczytu temperatury :)
    Pozdrawiam :)
REKLAMA