Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega8][c][DS18b20] - Błędny odczyt temperatury powyżej 50 stC

wijo 16 Gru 2015 18:09 849 5
  • #1 16 Gru 2015 18:09
    wijo
    Poziom 13  

    Od kilku dni staram się uruchomić pomiar temperatury czujnikiem ds18b20. Pomiar niskich temperatur przebiega poprawnie. Po przekroczeniu temperatury 54stC na wyświetlaczu ukazuje się wartość 127. Poniższy kod jest skopiowany z tego forum, poza tym napisałem własne funkcje obsługi 1wire lecz skutek był taki sam. Programując uC bascomowymi procedurami odczytu temperatury, wszystko działa jak należy.

    Atmega8 8MHz oscylator wewnętrzny.
    F_CPU ustawiony w pliku make.
    Fuse L: 0xE4 H: 0xD9

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Dodam, że zmieniałem wartości opóźnień w funkcjach odpowiedzialnych za odczyt danych z czujnika, ale nie poprawiało to sytuacji. Stosując inny egzemplarz czujnika zmieniała się tylko temperatura przejścia odczytu na wartość 127 (np. 48stC). Stosowałem też inne egzemplarze uC, oraz różne metody przeliczania lsb i msb na temperaturę - bez skutku. Proszę o pomoc.

    0 5
  • #2 16 Gru 2015 18:42
    tmf
    Moderator Mikrokontrolery Projektowanie

    Jak zasilany jest DS? Parasite power zapewne? W takim przypadku przy wyższej temp. upływność powoduje szybsze rozładowanie wewnętrznego kondensatora. Potrzebny jest strong pull up.

    0
  • #3 17 Gru 2015 02:38
    2675900
    Użytkownik usunął konto  
  • #4 17 Gru 2015 06:50
    wijo
    Poziom 13  

    Ja też tego nie rozumiem. Chociaż rozumiem, że w tego typu przypadkach na 99% wina leży po mojej stronie. W C programuje dopiero od kilku miesięcy i nie czuję się jeszcze w tym zbyt pewnie. Najprawdopodobniej coś przeoczyłem.
    Z mojej ręki "poszło do ludzi" ponad dwie setki takich czujników, wszystkie zasilanie oczywiście parasite - innego zasilania nie stosuję. Te czujniki pracują w najprzeróżniejszych warunkach, niektóre już 12 lat. Dlatego myślę że sposób zasilania nie ma tu nic do rzeczy, tym bardziej, że w tej chwili testuje to na biurku a przewody do czujników mają nie więcej jak 30cm.
    Podobny temat pojawił się
    [url=]https://www.elektroda.pl/rtvforum/topic614886.html[/url].
    Autor twierdzi że znalazł rozwiązanie, ale ja nie za bardzo rozumiem co miał na myśli.

    Jak wstawia się linki na tym forum?

    1
  • #5 17 Gru 2015 09:22
    szczywronek
    Poziom 27  

    wijo napisał:
    Autor twierdzi że znalazł rozwiązanie, ale ja nie za bardzo rozumiem co miał na myśli.
    Z tego co rozumiem, to Autor pozmieniał czasy opóźnień w komunikacji (wydłużył je) tak, aby układ zaczął działać. Oscyloskop/analizator logiczny prawdę Ci powie :)

    wijo napisał:
    Jak wstawia się linki na tym forum?
    Jak "najedziesz" kursorem na tag "url" to pojawia się opis.

    0
  • #6 17 Gru 2015 13:19
    2675900
    Użytkownik usunął konto