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

DS18B20 - Jak wyeliminować wskazanie 85 i zwiększyć precyzję odczytu?

jaroslawk 29 Wrz 2007 16:22 3357 8
  • #1 4331930
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Witam,
    Napisałem program termostatu i mam niekiedy problem z odczytem temperatury. Wartość temperatury wyświetlana jest dobrze ale co pewien czasz wskakuje mi wartość 85. Jak można tą sytuacje wyeliminować ?. Drugie pytanie- jak zwiększyć precyzje wskazywania (liczba po przecinku). W chwili obecnej wskazywana jest tylko liczba całkowita. Układ DS18B20 podłączony jest dwuprzewodowo.

    Pozdrawiam
    Jarek


    
       1wreset
       1wwrite &HCC
       1wwrite &HBE
       Odczyt(1) = 1wread(2)
       T = Odczyt(2)
       Shift T , Left , 8
       T = T + Odczyt(1)
       Shift T , Right , 4
       T.12 = T.11
       T.13 = T.12
       T.14 = T.13
       T.15 = T.14
         1wreset
         1wwrite &HCC
         1wwrite &H44
    
  • Pomocny post
    #2 4332339
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    1. linia danych jest podciągnięta do plusa?, sprubuj zasilić go "normalnie"
    2. jak czesto robisz pomiar, manual podaje że nie powinno sie tego robic częściej niż co 750ms.
    3. nie wiem jak zwiekszyć precyzje odczytu w bascomie
  • #3 4332374
    szod
    Poziom 33  
    Posty: 1663
    Pomógł: 215
    Ocena: 120
    Powód może być od strony sprzętowej. W µC stosujesz kwarc zewnętrzny czy
    wewnętrzny generator? DS18B20 musi mieć dokładne odmierzanie czasu.
    Generator wewnętrzny tego nie zapewnia. Jak go stosujesz to może
    powodować takie efekty.
  • #4 4333013
    Tomcio7
    Poziom 17  
    Posty: 297
    Pomógł: 8
    Ocena: 19
    a może lutując przegrzałeś ds'a, wtedy często wyświetlane jest 85st albo często występują pewne zakresy odczytu temp (do ok 2 stopni) gdzie temperatura waha się w tym zakresie - z własnego doświadczenia
  • #5 4333238
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Procesor to Atmega 162, taktowana rezonatorem kwarcowym 8 MHz.
    Wartość 85 jest zaprogramowana na stałe przez producenta w układzie DS18B20 i pojawia się po podłączeniu zasilania do układu. Układ nie był lutowany, opcja przegrzania nie wchodzi w grę.

    Jutro spróbuję dodać oddzielne zasilanie i zobaczę co to zmieni.
    Układ jest odczytywany co ok. 1 sekundę.
  • #6 4333572
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    umnie czasem na początku sie to obiawiało ,ale ponownie zaprogramowałem uC i problem znikł
  • #7 4334792
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Podłączenie za pomocą magistrali 3 przewodowej nic nie zmieniło. Nadal co jakiś czas mam wskazanie 85 (średni dwa razy na minutę).

    Buduję termostat który powyżej jakiejś temperatury załącza urządzenie a poniżej jakiejś wyłącza urządzenie. Odczytywana wartość 85 wprowadza zamieszanie w cyklu pracy urządzenia. Termostat ma pracować w zakresie 20-55 stopni.
    Rozwiązaniem problemu może być ignorowanie wskazania 85.
    Jeszcze się nie poddaje, szukam rozwiązania problemu dalej.
  • #8 4335302
    soft.sc
    Poziom 17  
    Posty: 142
    Pomógł: 15
    Ocena: 4
    Cytat:
    Wartość 85 jest zaprogramowana na stałe przez producenta w układzie DS18B20 i pojawia się po podłączeniu zasilania do układu.

    Skoro wiesz, że jest to wartość domyślna, ładowana po zaniku lub włączeniu zasilania, to raczej szukaj winy w złej jakości połączenia zasilania (masa lub VCC). Jeśli chodzi o zasilanie czujnika DS18B20, to musi być zasilany trzema żyłami chyba że, na szynie danych, zastosujesz dodatkowy układ opisany w dokumentacji, . Do zasilania dwoma żyłami przystosowany jest czujnik z oznaczeniem dodatkowym "PAR".
  • #9 4336498
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Problem rozwiązany. Nie mam pojęcia dlaczego magistrala 1-Wire nie działa poprawnie na porcie D.0. Zmieniłem na port A.0 i problem znikł sam.

    Pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
Problem z odczytem temperatury z czujnika DS18B20 objawiał się pojawianiem wartości 85°C, która jest wartością domyślną zaprogramowaną w układzie i pojawia się po podłączeniu zasilania lub przy błędach komunikacji. Przyczyną problemu mogły być nieprawidłowe połączenia zasilania (masa lub VCC), zbyt częste odczyty (częstsze niż co 750 ms), użycie wewnętrznego generatora zamiast kwarcowego rezonatora do taktowania mikrokontrolera, a także niewłaściwy port mikrokontrolera do magistrali 1-Wire. Zasilanie dwuw przewodowe jest możliwe tylko dla wersji DS18B20 z oznaczeniem "PAR", w przeciwnym razie zalecane jest zasilanie trzema przewodami. Precyzja odczytu temperatury w Bascomie nie została jednoznacznie rozwiązana, jednak autor uzyskał stabilne odczyty po zmianie portu 1-Wire z D.0 na A.0 w mikrokontrolerze Atmega162 taktowanym kwarcem 8 MHz. Wartość 85°C można też ignorować programowo, aby uniknąć zakłóceń w działaniu termostatu pracującego w zakresie 20-55°C.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA