Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATMega8][Bascom] DS1820-brak odczytu a wcześniej był

Kamil 1 02 Oct 2008 19:13 2820 11
  • #1
    Kamil 1
    Level 16  
    Witam

    Mam dość dziwny problem z czujnikiem DS1820 który jest podpięty do Atmegi8 taktowanej rezonatorem 4MHz. Jeszcze wczoraj Atmega ładnie odczytywała mi temperaturę a dzisiaj wskazuje 0.0°C. Dzisiaj zrobiłem coś takiego że odczytywałem err i za każdym razem było 0 czyli termometr się odzywa. Programuję w Bascomie. Poniżej znajduje się kod:

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 4000000

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Pd.2 , Db5 = Pd.3 , Db6 = Pd.4 , Db7 = Pd.5 , E = Pd.1 , Rs = Pd.0

    Config 1wire = Portd.6                                     
    Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32           
    Dim I As Byte                                             
    Dim T(2) As Byte                                         
    Dim Temp As Single



    Cursor Off
    Cls                                                         

    1wreset                                                     
    1wwrite &HCC                                               
    1wwrite &H44                                             
    Waitms 750                                                 
    1wreset                                                     
    1wwrite &HCC                                               
    1wwrite &HBE                                             
    T(1) = 1wread()                                           
    T(2) = 1wread()                                           
    1wreset                                                     

      If T(2) = 0 Then                                         
      Temp = T(1) / 2                                         
      Else                                                     
      I = 256 - T(1)                                         
      End If

      If T(2) > 0 Then Lcd "-"

    Cls
    Locate 1 , 3                                             
    Lcd "*TERMOMETR*"                                       
    Lowerline
    Lcd "Temp:"
    Locate 2 , 7
    Lcd Temp
    Lcd Chr(0) ; "C"

    Loop
    End


    Poprawiłem tytuł - regulamin p.11.1 .
    Dodałem znaczniki [code] .
    Przeniosłem do właściwego działu .
    [zumek]
  • #2
    dawid512
    Level 32  
    Sprawdź PCB.
    Jeżeli masz możliwość sprawdź na innym czujniku.
    Masz odpowiednio odfiltrowane napięcie zasilające układ?

    Musi być jakaś przyczyna, zmieniałeś soft w uc? Urządzenie cały czas działało i nagle temp. 0.0? 100nF na zasilaniu uc jest?
  • #3
    Kamil 1
    Level 16  
    dawid512 wrote:
    Sprawdź PCB.
    Jeżeli masz możliwość sprawdź na innym czujniku.
    Masz odpowiednio odfiltrowane napięcie zasilające układ?

    Musi być jakaś przyczyna, zmieniałeś soft w uc? Urządzenie cały czas działało i nagle temp. 0.0? 100nF na zasilaniu uc jest?


    Mam drugi czujnik który też teraz nie reaguje, był używany tylko raz i chodził a dzisiaj jak pierwszy wskazuje 0.0°C. Co do filtracji napięcia to jest dobrze filtrowane. Próbowałem na dwóch programach wcześniej działały poprawnie dzisiaj żaden nie reaguje. A i fuse bity mam skonfigurowane odpowiednio.
  • #4
    dawid512
    Level 32  
    Wygląda jakbyś miał problem z PCB(oczywiście masz 4.7kΩ podłączony do VCC i lini danych DQ). Z jakiego trybu korzystasz? Normalnego czy pasożytniczego? Ważną rzeczą jest także odpowiedni czas konwersji dlatego upewnij się że fuse bity są ustawione prawidłowo. Najlepiej przestaw dla testu na nominalny 1MHz.

    Nie odpowiedziałeś czy coś konkretnego zrobiłeś czy urządzenie działało cały czas a następnego dnia przestało.
  • #5
    fazolek
    Level 12  
    Jak działało a nie działa i program nie był zmieniany to przywarcie linii 1-wire do masy wtedy odbiera same zera. Dla upewnienia się spróbuj zaprogramować eeprom w czujniku a później go odczytać, ale to wygląda jak zwarcie do masy.

    BASCOMu nie znam ale pisząc w C robie sobie zabezpieczenie przy resecie 1-wire sprawdzając czy nie jest przywarty do masy.
    funkcja 1wreset zapewne tego nie sprawdza a robi tylko szczeline.
  • #6
    Kamil 1
    Level 16  
    Rezystor 4.7Ω mam wpięty. Korzystam z normalnego trybu. Zwarcia do masy nie ma, sprawdzałem. Co do programu to w nim nic nie zmieniałem. Termometr włączałem prawie codziennie przez 1 tydzień i chodził normalnie. Przed wczoraj dopiero zaczęły się nim kłopoty.
  • #8
    fazolek
    Level 12  
    Skoro wcześniej działał to jednak stawiam że ten rezystor to 4,7k. Poza tym, gdyby to było zwarcie do Vcc to dałby max temperature a daje zero, więc albo padnięty czujnik albo jednak na linii DQ jest zwarcie do masy. Wątpię żeby padł port ale jeśli mówisz, że zwarcia faktycznie nie ma sprawdziłeś 2 czujniki to jeśli masz możliwość to zmień procka albo przynajmniej pin na linii DQ.
  • #9
    Kamil 1
    Level 16  
    Witam po długiej przerwie, ale miałem kłopoty z netem.

    W wcześniejszym poście zrobiłem błąd chodziło mi o rezystor 4,7kΩ. Sprawdzałem na innych pinach i jest to samo. Dzisiaj trochę przerobiłem program tak aby pokazywał wartości zmiennych T(1) i T(2). A oto wyniki:

    T(1) wynosiło ok 184 i po dotknięciu czujnika wartość ta rosła, a po puszczeniu malała.

    T(2) wynosiło 225.

    Dodano po 2 [godziny] 2 [minuty]:

    Chcę jeszcze dodać że włożyłem przed chwilą czujnik do zamrażarki w której było poniżej 0°C. I T(1) wynosiło 117 a T(2) 225. Czyli czujnik reaguje na miany temperatury.
  • Helpful post
    #10
    Franek k
    Level 15  
    A może masz czujnik DS18B20, upewnij się że jest to DS1820. Ale dziwne, najpierw termometr działał poprawnie a później przestał. Zastanawia mnie jeszcze to że (jak piszesz) czujnik reaguje na zmiany temperatury bo zmienia się zmienna T1, a nie da się odczytać temperatury. Ciekawe w czym jest problem.
  • #11
    Kamil 1
    Level 16  
    Sprawdzałem dokładnie jest to DS1820. Przed chwilą sprawdzałem jeszcze drugi czujnik. On wskazywał dobrą temperaturę. Tak więc coś z tym pierwszym czujnikiem musi być nie tak. Ale to dość dziwne bo najpierw działał poprawnie a potem już nie.

    A czy można zmienić coś w tym czujniku? Może coś w nim poprzestawiałem, bo jak już wcześniej pisałem T(1) zmienia się ale przeważnie jest ok. 188 a T(2) wynosi 255. Natomiast ten drugi czujnik co dzisiaj sprawdzałem to daje inne liczby T(1) wynosi w ok. 57 a T(2) = 0.

    Proszę o odpowiedź. Bardzo proszę.
  • #12
    Kamil 1
    Level 16  
    DO INNYCH UŻYTKOWNIKÓW MAJĄCYCH TEN SAM PROBLEM

    Wspomniany wyżej przypadek rozwiązałem już dawno, a piszę tą wiadomość aby nie pozostawić tematu bez ostatecznego wyjaśnienia na czym ów problem polegał.

    Otóż jak się okazało nie była to moja wina czy też wina programu do uC. Przeglądając posty tego forum natrafiłem na identyczny problem. Jak się okazuje przyczyną złego odczytu jest zastosowanie czujnika z wadliwej serii produkcyjnej oznaczonej nr B7. Wszystkie czujniki produkowane w tej serii po pewnym czasie ulegają rozkalibrowaniu (utracie ustawień).

    Jak sprawdzić z jakiej serii jest twój czujnik?

    Poniżej przedstawiony jest sposób odczytywania informacji o układzie, za pomocą znajdujących się na nim oznaczeń.

    [ATMega8][Bascom] DS1820-brak odczytu a wcześniej był

    Gdzie:

    XXXXXX - Producent (DALLAS)
    YYYYYYY - Typ układu (DS1820)
    RR - Rok produkcji
    TT - Tydzień (roku) w którym wyprodukowano element.
    VV - Wersja produktu
    ZZZZZ - Kod fabryki

    Plik z poniższego linku zawiera informacje, których celem jest całkowite lub częściowe wyeliminowanie zagrożenia, którym jest utrata zawartości pamięci EEPROM tych układów.

    Oto link:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=693420#693420

    A tą stronkę znalazłem w jednym poście (adres strony dodał kolega Light-I), może komuś się przyda:

    http://owfs.sourceforge.net/DS18B20.3.html

    To, że na razie zaobserwowano przypadek utraty danych tylko w wersji B7 nie oznacza, że inne wersje są pozbawione tego zagrożenia!

    Mam nadzieję, że informacje zawarte w tym temacie okażą się pomocne dla osób z podobnym problemem :wink:

    TEMAT ZAMYKAM

    W razie pytań proszę pisać na priva :wink:

    Pozdrawiam
    Kamil1