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

[Atmega8][ds18b20] stan niski 4.31V

Mati Kapitol710 04 Sie 2010 22:37 1428 5
  • #1 8365929
    Mati Kapitol710
    Poziom 2  
    Witam serdecznie forumowiczów.
    Chciałem zbudować termometr wykorzystujący czujnik temperatury ds18b20, Atmega8 oraz wyświetlacz LCD 2x16. Używam asm (innego języka nie znam), lecz to raczej nie ma związku z moim problemem. Czujnik podłączam 3-przewodowo, nóżka DQ do PD3. Rezystor podciągający 4,7kOm.
    Próbowałem 2 tygodnie. W końcu zrobiłem sobie tydzień przerwy, bo mnie już nerwica brała :). Dziś kupiłem nowego ds-a i atmegę. Niestety, otrzymany wynik jest tak samo niezadowalający jak uprzednio. Gdy wymuszam stan niski na PD3 (PORTD,3=0 i DDRD,3=1), to odczytuję 4.31V zamiast około 0V. Stan wysoki 5.01V (PORTD,3=0 i DDRD,3=0). Ma ktoś może pomysł, co mogłem zepsuć i jak ruszyć dalej? Dziękuję za jakąkolwiek pomoc.
  • #3 8366760
    Mati Kapitol710
    Poziom 2  
    Rozumiem cel wstawienia tego rezystora, dlatego zmieniam tylko rejestr DDRD,3. PORTD,3 jest cały czas wyczyszczony.
    Gdy ustawię DDRD,3 jako wyjście (DDRD,3=1) przez ok 2s (abym mógł zmierzyć napięcie woltomierzem), napięcie na lini DQ jest równe temu nieszczęsnemu 4,31V.
    Dziękuję za zainteresowanie.
  • #4 8366854
    gaskoin
    Poziom 38  
    a możliwe, że wpiąłeś dsa na odwrót ?
  • #5 8367773
    flapo213
    Poziom 21  
    Witaj,

    w transmisji one_wire są trzy stany

    - strong pullup (generowane przez mikrokontroler)

    - weak pullup (generowane przez rezystor podwieszający)

    - low level (generowane przez układy DS)

    To oznacza jedno że nie powinieneś generować sygnału zera logicznego to ma robić dołączony układ.

    Proponuję abyś na początek odłączył całkowicie układ DS i na drugim końcu rezystora podciągającego nie będącego podłączonym z mikrokontrolerem powinieneś mieć stan 5V jak na zasilaniu.

    W transmisji one wire tylko urządzenia typu slave DS18x20, DS1990 etc. generują niski stan.

    Czyli chcąc uzyskać ten efekt przełączasz mikrokontroler na wejście ewentualnie stan hi-z.

    Pozdrawiam
  • #6 8368581
    tmf
    VIP Zasłużony dla elektroda
    flapo213 - co ty opowiadasz. Każdy bit jest inicjowany przez mastera, poprzez wystawienie 0 na co najmniej 1 us.
    Mati Kapitol710 - jesteś peiwien, że nie masz zwarcia? DS wstawiony poprawnie? Podobne objawy mogą być jeśli zamienicz GND z Vcc w DS. Wyjmij go z układu i sprawdź wtedy.
REKLAMA