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.

[BASCOM] MEGA8+DS18B20 - Czasami bledny odczyt temp.

rafal1538 13 Lut 2016 19:29 1290 11
  • #1 13 Lut 2016 19:29
    rafal1538
    Poziom 8  

    Witam.
    Potrzebuję pomocy.
    Zrobiłem sterowanie do elektrozaworu do CO, lecz Ds18b20
    od czasu do czasu pokazuje jakaś śmieszna temperaturę np. 340st lub -84 i inne.


    odczyt temperatury realizuję w ten sposób:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    schemat połączeń

    [BASCOM] MEGA8+DS18B20 - Czasami bledny odczyt temp.
    rezystor 4,7k oczywiście wpięty.
    Ggdzie mam szukać problemu?
    Pozdrawiam.

    Moderowany przez tmf:

    Proszę w przyszłosci umieszczać w tytule znacznik [BASCOM] jeśli program jest napisany w tym egzotycznym języku. Tytuł poprawiłem.

    0 11
  • #2 14 Lut 2016 02:02
    373522
    Użytkownik usunął konto  
  • #3 14 Lut 2016 07:00
    janek1815
    Poziom 38  

    Jak daleko czujnik od reszty spróbuj trochę zmniejszyć rezystor z 4k7 do 3,3k lub nawet mniej. Jak to nie pomoże to zasilanie atmega zrób poprzez dlawik 100uH a za nim kondensator ceramiczny 100nf i elektrolit 100uf.

    0
  • #4 17 Lut 2016 20:04
    rafal1538
    Poziom 8  

    Nic nie pomogło.
    Ani sprawdzenie CRC ani dodanie kondensatorów, zmieniałem też czujnik i mikrokontroler.
    Jakieś inne propozycje?
    Błędny odczyt jest co mniej więcej 10-20 sekund.

    0
  • #6 17 Lut 2016 20:39
    rafal1538
    Poziom 8  

    Kod do pomiaru temperatury ze sprawdzeniem CRC pobrałem z internetu, więc nie wiem czy na 100% działa, lecz teraz nie mam możliwości go wkleić tutaj, ale tak samo są absurdalne odczyty temp.
    W temperaturze pokojowej około 20-22st. C. atmega czasem pokaże ponad 300st, lub poniżej -40.

    0
  • #8 17 Lut 2016 21:14
    rafal1538
    Poziom 8  

    Najlepiej było by się pozbyć błędów, a nie tylko nie brać ich pod uwagę.
    Błędy co 15 sekund to chyba trochę za często.
    Jak sprawdzić czy działą CRC?

    0
  • #9 17 Lut 2016 21:44
    janek1815
    Poziom 38  

    Pewnie że za często odczytuję bez CRC kilkanaście czujników i nie ma błędów na skrętce oddalonej o Atmegi 17 metrów.

    0
  • #10 17 Lut 2016 22:19
    emarcus
    Poziom 34  

    rafal1538 napisał:


    W temperaturze pokojowej około 20-22st. C. atmega czasem pokaże ponad 300st, lub poniżej -40.

    Popatrz uważnie na swój code.
    Komunikację z DS masz w dwóch bardzo krótkich sesjach:
    1- żądanie konversji temperatury, i druga.
    2. odczyt tej temperatury po konversji.

    Wydawałoby się że to jest znikomy ułamek czasu nie wiele znaczący(?), lecz jest warunek że żadna z tych sesji nie może byc przer-wa-na (!)

    Masz takze w programie pracujacy timer0, który generuje przerwanie co 2 msec.
    Pomyśl lub oblicz jak długo trwa każda z sesji komunikacji z DS i zwróc uwagę na fakt, że nie ma żadnej synchronizacji, ani zabezpieczenia tych sesji z wystapieniem interruptu 'Ovf0'; - zatem zawsze może zajśc możliwośc, że interrupt 'wyłoży' lub 'skorumpuje' twój odczyt temperatury z DS.
    Timingi komunikacji processora z DS18B20 podaje jego datasheet.
    Jak to wygląda praktycznie:
    sesja 1.
    1wreset ' - 480µS + 60 µs na odpowiedź
    1wwrite &HCC ' - skip ROM -8 bitów * 60µS wpis
    1wwrite &H44 ' - convertT - 8 bitów * 60µS wpis

    Waitms 850 - ta instrukcja jest poza sesją i nie wiele znaczy w rachunku czasu

    sesja 2.
    1wreset ' - 480µS + 60 µs na odpowiedź
    1wwrite &HCC ' - skip ROM -8 bitów * 60µS wpis
    1wwrite &HBE ' - Read SCpad -8 bitów * 60µS wpis
    I = 1wread(2) ' - aktualny odczyt (minimum*) 16 bitów * 15µS

    note: minimum* - znaczy: odczyt tylko 2 bajtów zawierajacych temperaturę;
    wartośc CRC zawiera ósmy/ostatni bajt całej scratchpad.

    e marcus

    0
  • #11 13 Mar 2016 20:44
    rafal1538
    Poziom 8  

    Witam.
    Podejrzewam że ja coś robię źle, ponieważ także na 2giej płytce mam taki problem.
    zmieniłem czas na 750ms bo tyle jest wymagany na konwersję temperatury, ale to nic nie zmienia, ;/
    zamieszczam 20 sekundowy filmik na którym widać 2 błędne odczyty.


    https://filmy.elektroda.pl/43_1457897863.mp4

    0
  • #12 13 Mar 2016 21:23
    373522
    Użytkownik usunął konto