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

DS18B20 - błędne odczyty po 30s, problem z rezystorem pull-up?

bednyk 03 Maj 2011 15:08 2287 7
REKLAMA
  • #1 9465111
    bednyk
    Poziom 13  
    Posty: 92
    Pomógł: 3
    Ocena: 1
    Witam,

    wykorzystuję układ ds18b20 do pomiaru temperatury. Układ działa prawidłowo przez około 30s od załączenie zasilania. Następnie odczyty pokazują temperaturę 9 lub 10stopni.

    Podczas normalnej pracy temperatura jest przetwarzana prawidłowo.

    Do pull-up'a wykorzystuję wewnętrzny rezystor podciągający uC. Czy ktoś spotkał się z podobnym problemem? Co może powodować błąd i w jaki sposób go wyeliminować?
  • REKLAMA
  • #2 9465147
    gts1991
    Użytkownik obserwowany
    Posty: 1354
    Pomógł: 110
    Ocena: 100
    Daj shemat układu.
    I programu co tam nakombinowałeś.
  • REKLAMA
  • #3 9465206
    bednyk
    Poziom 13  
    Posty: 92
    Pomógł: 3
    Ocena: 1
    Problem rozwiązany. Wyniki konwersji zapisywałem w zmiennej char, pewnie się nie mieściły i powstawał bałagan. Po zmianie na int problem został rozwiązany ;)
    Temat do zamknięcia.
  • #4 9465469
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    Obyś się nie zdziwił. Wewnętrzny rezystor podciągający w mikrokontrolerze ma wartość conajmniej kilkudziesięciu kR. To zdecydowanie za dużo. Zalecają podciąganie 4.7k dla 5V, 2.7k stabilizuje komunikację na dlugich kablach z ukladami na 3.3v
    Nawet jeśli czujnik jest blisko, to wewnętrzne podciąganie to za mało. Nawet i2c każą podciągać rezystorami 10k...
  • REKLAMA
  • #5 9470827
    Robstar
    Poziom 18  
    Posty: 230
    Pomógł: 15
    Ocena: 49
    W przypadku dłuższych linii np. typu skrętka polecam zastosowanie na końcu linii przy czujniku kondensatora ceramicznego kilka piko np. 27pF. Po testach ewidentnie poprawia się odporność na złe odczyty lub ich brak.

    Pozdrawiam
  • REKLAMA
  • #6 9476562
    Szymon Tarnowski
    Poziom 27  
    Posty: 1292
    Pomógł: 61
    Ocena: 181
    Robstar napisał:
    W przypadku dłuższych linii np. typu skrętka polecam zastosowanie na końcu linii przy czujniku kondensatora ceramicznego kilka piko np. 27pF.
    Chciałbym to przetestować bo miewam problemy z samonagrzewaniem w niektórych układach, czy chodzi o kondensator między magistralę a masę?
  • #7 9479241
    Robstar
    Poziom 18  
    Posty: 230
    Pomógł: 15
    Ocena: 49
    Tak dokładnie.

    Testowałem to na skrętce około 60m , 4 czujniki i na kilku kondensatorach typu 100nF, 10nF ... bez kondensatorów miałem spore problemy z odczytami po zamontowaniu kondensatora w moim przypadku 27pF (inne wartości w zasadzie nie poprawiały sytuacji) przy czujniku na ostatnim czujniku problemow brak :).

    Z moich obserwacji wywnioskowałem że w zasadzie taki kondensator najlepiej montować tylko w sytuacji kiedy mamy sporo błędow odczytu z danego czujnika i montujemy na czujniku którego ten problem dotyczy.

    http://www.maxim-ic.com/app-notes/index.mvp/id/148

    http://plc-home.pl/forum/1wire-a-uzycie-w-dom...osc-protokolu-i-interfejsu-1wire-t107.15.html szczególnie ostatni post.
  • #8 9479956
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Robstar napisał:
    Tak dokładnie.

    Testowałem to na skrętce około 60m , 4 czujniki i na kilku kondensatorach typu 100nF, 10nF ... bez kondensatorów miałem spore problemy z odczytami po zamontowaniu kondensatora w moim przypadku 27pF (inne wartości w zasadzie nie poprawiały sytuacji) przy czujniku na ostatnim czujniku problemow brak :).

    Z moich obserwacji wywnioskowałem że w zasadzie taki kondensator najlepiej montować tylko w sytuacji kiedy mamy sporo błędow odczytu z danego czujnika i montujemy na czujniku którego ten problem dotyczy.

    http://www.maxim-ic.com/app-notes/index.mvp/id/148

    http://plc-home.pl/forum/1wire-a-uzycie-w-dom...osc-protokolu-i-interfejsu-1wire-t107.15.html szczególnie ostatni post.


    Jakbyś napisał od początku że chcesz czytać z kilku czujników podpiętych do jednej długiej linii i pewnie nie w jednym punkcie ale w rozgałezionej sieci czujników, to od razu byłoby wiadomo że nie przeczytałeś dokładnie jak sie łaczy wiele czujników po linii 1-Wire i nie tak jak ty próbujesz stroić za pomocą kondenstorków ale wystarczy każdą gałąś odizolować za pomocą opornika teraz nie pamietam dokładnie 100- 200oHm. Ja standardowo daje taki opornik tuż przy każdym czujniku wtedy nie ma problemów nie tylko elektrycznych ale i konstrukcyjnych.

Podsumowanie tematu

✨ Użytkownik zgłosił problem z czujnikiem temperatury DS18B20, który działał poprawnie przez około 30 sekund, a następnie zaczynał podawać błędne odczyty temperatury (9-10 stopni). Po analizie okazało się, że problem wynikał z zapisywania wyników konwersji w zmiennej typu char, co prowadziło do przepełnienia. Po zmianie na typ int problem został rozwiązany. Dodatkowo, w dyskusji poruszono kwestie dotyczące rezystora pull-up, gdzie zasugerowano, że wewnętrzny rezystor mikrokontrolera może być zbyt duży (kilkadziesiąt kΩ), a zalecane wartości to 4.7kΩ dla 5V lub 2.7kΩ dla 3.3V. Użytkownicy podzielili się również doświadczeniami z użyciem kondensatorów ceramicznych w celu poprawy stabilności odczytów w przypadku długich linii kablowych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA