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

Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

pawelec5 02 Wrz 2015 11:50 1464 10
  • #1 14965364
    pawelec5
    Poziom 17  
    Witam,

    Zbudowałem sterowanie domem na bazie ATMEG i tableta komunikującego się przez RS485.

    Co jakiś czas dodaję pewne elementy całości aż napotkałem na dziwny problem.
    Dłuższy czas Atmega odpowiadająca za kotłownię pracowała na 7 czujnikach DS28B20 i było wszystko ok. Po próbie dodania kolejnego ostatnie DSy zmieniają adres, przejmują odczyty z innych czujników, jakieś czary. Walczę już z tym kilka dni i nie mogę sobie z tym poradzić.
    Proszę o pomoc co może być powodem takich błędów.

    Wklejam część kodu odpowiadający za DSy

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
    [/code]


    A tu co się dzieje z Adresami Czujników.
    Podane niżej są w takiej kolejności jak się zgłaszają.

    Podpięte 7 i wszystko jest ok.

    28B02F2E050000DE
    28F4AA2D050000E6
    2821572D05000083
    2811412D0500008E
    28C5BE2D0500005F
    283B092D05000020
    28FB2C2E0500001D

    Dopięty 8 - 2873482D050000D0

    28B02F2E050000DE
    28F4AA2D050000E6
    2821572D05000083
    2811412D0500008E
    28C5BE2D0500005F
    2873482D050000D0
    283B092D05000020
    2801522E0500001D

    Jak widać z jakiegoś powodu ostatni czujnik zmienił adres???

    28 FB2C 2E0500001D
    28 0152 2E0500001D

    Dopięty 9 - 2899D1DC0300005D

    28B02F2E050000DE
    28F4AA2D050000E6
    2821572D05000083
    2811412D0500008E
    2899D1DC0300005D
    28C5BE2D0500005F
    2873482D050000D0
    2801522D05000020
    28FB2C2E0500001D

    Dopięty 10 - 280CF02C05000092

    28B02F2E050000DE
    28F4AA2D050000E6
    280CF02C05000092
    2821572D05000083
    2811412D0500008E
    2899D1DC0300005D
    28C5BE2D0500005F
    2801522D050000D0
    283B092D05000020
    28FB2C2E0500001D

    Po dopasowaniu czujników do elementów instalacji wygląda to następująco.

    Jak widać solar1,solar2, i CWU Góra maja ten sam odczyt???


    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485


    Po wypięciu czujnika "Solar2" adres "zbiornika CWU góra" się zmienił i nie ma z niego odczytu

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485


    Po wypięciu kolejnego czujnika "Zbiornik CWU góra" powrócił ale kolejny czujnik "Cyrkulacja" zmienił adres jak wyżej.

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Po wypięciu kolejnego czujnika wszystkie poprzednie są ok.

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Dodam że czujniki dopinam nie zwiększając linii 1wire.
    Sprawdzałem również na potencjometrze wieloobrotowym rezystor podciągający linię 1wire i nie ma efektu poprawy.

    Dodam jeszcze jeden fakt.

    Ostatnio na testach zauważyłem jedno.
    Dopinając kolejne czujniki wysiadają te ostatnie na linii 1wire i często zmieniają adres na "nielosowy" jak widzicie 0152 jest w obu przypadkach

    Cwu góra

    28 3B09 2D05000020
    28 0152 2D05000020

    Zas podłog

    28 C5BE 2D0500005F
    28 0152 2D0500005F




    Może Wy coś doradzicie bo ja już nie mam pomysłu.
    Mam nadzieję że znajdziecie tu jakiś błąd.

    Pozdrawiam,
  • #2 14965532
    markovip
    Poziom 34  
    Na ilu przewodach robiona jest komunikacja? 2 czy 3?
  • #3 14965706
    pawelec5
    Poziom 17  
    Na 3 żyłach.

    Przewodów jest kilka.

    1. Solar1, Solar2, Temp zewn. - ok. 20m
    2. Kominek - ok. 7m
    3. Reszta obejmująca kotłownię. Jeden przewód z którego rozgałęziają się czujniki w kotłowni - w sumie ok. 15m
  • #4 14965755
    piti___
    Poziom 23  
    Witam,

    Czasówki 1wire do zmiany. Sprawdzaj CRC numerów seryjnych.
  • #5 14965823
    pawelec5
    Poziom 17  
    Cytat:
    Czasówki 1wire do zmiany. Sprawdzaj CRC numerów seryjnych.


    Kolego możesz dokładniej opisać o co chodzi z tymi czasówkami? Sorry ale nie rozumiem.
    Masz może jakiś przykład odnośnie CRC tych czujników?
  • #6 14965883
    Konto nie istnieje
    Konto nie istnieje  
  • #7 14965898
    piti___
    Poziom 23  
    Po podłączeniu kolejnych czujników zmienia się obciążenie linii/pojemność itp. Konieczne będzie dopasowanie czasów w funkcjach obsługi 1wire. Np. opóźnienie lub przyspieszenie odczytu bitu z linii o 2us.

    Co do CRC to liczysz tak samo jak CRC scratchpada z temepraturą. CRC z numeru seryjnego (z 8 bajtów) powinno wynieść 0. Jeśli != 0 to błędnie odczytany ROM. Przykłady na forum i w dokumentacjach do 1wire.

    Dodano po 6 [minuty]:

    niveasoft napisał:
    Kolega sprawdza przecież CRC.
    Być może nie wyrabiasz się czasowo. Kiedy masz otwarte IDE Bascom naciśnij na klawiaturze klawisz F1 i w otwartym pliku pomocy wpisz "Using the 1WIRE protocol".
    Wyczytasz tam między innymi (ale zachęcam do przeczytania całości) :
    Cytat:
    The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.


    Spróbuj na początek czytać co 2 sekundy - tak dla testu.



    Tu nie chodzi o odczyty temperatury tylko wyszukiwanie ROMów czujników i błędy z tym związane. Jeśli to funkcja biblioteczna to wiele tu nie poradzimy.
  • #8 14967469
    pawelec5
    Poziom 17  
    Witam,

    Dodałem CRC adresów czujników. Nie jestem do końca pewny czy to jest dobrze ale działa,

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Spróbowałem dopinać kolejne czujniki i wyglądało to następująco.

    7 czujników

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Dopinam 8 - 28C4CD2D0500004B, ale ostatni pokazał BŁĄD CRC

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Dopinam 9 - 28FB2C2E0500001D

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Dopinam 10 - 2899D1DC0300005D

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485



    Po uporządkowaniu czujników wszystkie 7 które działały poprawnie widać działają.

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Ale niepoprawnie wskazuje czujnik ZBIORNIK CWU GÓRA" - 283B092D05000020 który był 9 w kolejce a nie zgłaszał błędu CRC. Wskazuje temperaturę czujnika SOLARA czyli pierwszego wywołanego.

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Wstawiłem kolejny z czujników jako SOLAR 2 i on działa z innymi bez zmian.

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    I ostatni poprawnie zgłoszony wstawiłem jako temp Zewnetrzną

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    I tak jak wyżej on skazuje poprawnie a reszta bez zmian,

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Wypinam ten co pokazuje BŁĄD CRC i pokazał się kolejny BŁĄD CRC tego czujnika co źle pokazywał temperature.

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Nie mam pojęcia co tu jest grane i co można z tym zrobić. Chodzi mi po głowie podzielić te czujniki na 2 linie i programowo zmieniać port 1Wire. Ale muszę doczytać czy tak można,

    Kolego "niveasoft" długo się męczyłem żeby ten kod tak uściślić. Jakbyś widział pierwszy na tyle czujników to byś mnie dopiero wyśmiał. Nie mogłem go zmieścić w Atmega644p. Może jakby ktoś doradził to byłoby to krótsze ale odnośnie tych DSów to chyba się nie da.

    Jak widzisz czujniki są wywoływane kolejno (nie wiadomo w jakiej kolejności) a select case układa je do kolejności zapisanej w eeprom i do danego urządzenia.
    Chciałbym się mylić bo program byłby krótszy ale ja tak to widzę.

    Jeszcze jedno przychodzi mi na myśl, czy aby czujniki nie wchodzą w konflikt ze sobą?

    Dodano po 1 [godziny] 45 [minuty]:

    piti___ napisał:

    Spróbuj na początek czytać co 2 sekundy - tak dla testu.


    Przetestowałem na 2s i nic nie pomogło.
  • Pomocny post
    #9 14967723
    Konto nie istnieje
    Konto nie istnieje  
  • #10 14969517
    pawelec5
    Poziom 17  
    Witam,

    Zgadza się kolego.
    Tutaj był błąd. Przeglądałem to kilkanaście razy i nie dopatrzyłem problemu. Wielkie dzięki że chciało Ci się na to zerknąć. Oczywiście "pomógł" Ci się należy.
    Tak nawiasem też mam spory problem z rejestrem przesuwnym 74hc595. Znasz ten układzik? Po wyłączeniu się którejś z pomp przekaźniki klikają jak w dyskotece.
    Zakładać temat?

    A oto jak to wygląda po uporządkowaniu Ds_id według twojej sugestii. Nareszcie się udało... :D :D :D :D

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485

    Zakłócenia odczytu ostatnich 3 czujników DS18B20 w systemie na ATMEGA i RS485
  • #11 14969560
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA