Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

NodeMCU <> MCP23017, zakłócenia na i2C

zipZłoty 29 Jan 2021 20:47 639 10
Relpol
  • #1
    zipZłoty
    Level 10  
    Cześć,

    krótki opis aplikacji: sterownik do terrarium, uruchamianie świateł wg harmonogranu, ogrzewanie na podstawie odczytów czujników.

    Hardware
    NodeMCU komunikuje się po i2c z MCP23017. Szyna posiada rezystory pullup 4,7k do 3.3V. Ekspander łączy się z ośmiokanałowym modułem przekaźników, do którego podpięte są wszystkie urządzenia sterowane. Przekaźniki zasilane z osobnego źródła 5V. Schemat w załączeniu. NodeMCU <> MCP23017, zakłócenia na i2Cschema..jpg Download (95.96 kB)

    Skrzyneczka sterująca znajduje się w "suficie" terrarium. Zaraz obok idzie koryto z przewodami.

    Na podstawie schematu została wykonana płytka PCB. Linie i2c idą zaraz obok siebie, całkowita długość to ok. 4 cm.

    Software
    Układ współpracuje z Blynk. Kod nie będzie potrzebny do analizy problemu.

    Urządzenia sterowane
    1. Listwy LED dzienne.
    2. Listwa LED nocna.
    3. Promiennik (ogrzewanie) - zasilanie sieciowe.
    4. Metahalogen i jego statecznik.

    Opis problemu
    Światło dzienne LED włącza się o 9. O 10 włączał się metahalogen. Niestety czasem jego rozruch powoduje wyłączenie innych świateł, a moduł przekaźników przestaje reagować na ręczne zmiany stanów przez Blynk. Poza tym program działa normalnie (np. odczyty z czujników, etc). Usunąłem metahalogen z układu i steruje nim oddzielnie (przez gniazdko WiFi). Problem jednak nie zniknął. Winą zatem obarczyłem MCP23017 i i2c. Napięcie zapłonu (wg Osram) wynosi 4.5 kV. Niestety wydaje mi się, że ten pik mocno miesza w mojej szynie. Sterownik jest teraz możliwie najdalej odsunięty od lampy i statecznika, jednak niewiele to zmienia. Moim dotychczasowym rozwiązaniem jest wywoływanie o 10:01 ESP.restart(). Rozwiązanie działa, światła się uruchamiają normalnie, ale nie jestem usatysfakcjonowany.

    Meritum
    I tutaj moje pytanie - co mogę zrobić, aby zabezpieczyć szynę przed interferencjami? Czy drukowanie ścieżek dla i2c było błędem? Jaka jest dobra praktyka - czy powinienem stosować przewody ekranowane do i2c zamiast ścieżek na płytce?
  • Relpol
  • #2
    khoam
    Level 41  
    zipZłoty wrote:
    Ekspander łączy się z ośmiokanałowym modułem przekaźników, do którego podpięte są wszystkie urządzenia sterowane.

    Pierwszą rzeczą, jaka bym zrobił to zainstalował gasiki (obwody gaszące) RC na stykach przekaźników. Na forum był ten problem wielokrotnie poruszany.
    Link (strona 18)
  • #3
    Ondo
    Level 11  
    To niekoniecznie muszą być zakłócenia na I2C, sam MCP23017 może zmieniać losowo stan przerzutników wewnętrznych od zakłóceń zewnętrznych. Ale w sumie przyczynę już sam znalazłeś, możesz próbować:
    - dodać filtry RC na styki przekaźnikach
    - zrobić sterowanie na triakach
    - użyć "elektronicznych" przekaźników
  • Relpol
  • #4
    zipZłoty
    Level 10  
    Przy następnej wersji mam zamiar przejść na triaki (przynajmniej częściowo).

    Jak rozumiem Wasza sugestia jest taka, żebym z powrotem podpiął metahalogen do sterownika i do jego przekaźnika zamontował układ gaszący. W sumie o tym nie pomyślałem, muszę zgłębić temat.

    A co do samej szyny i2c - pytanie z oryginalnego posta - czy prowadzenie jej na pcb jest ok?
  • #5
    khoam
    Level 41  
    zipZłoty wrote:
    Przy następnej wersji mam zamiar przejść na triaki (przynajmniej częściowo).

    Najlepiej z optoizolacją i przełączaniem w zerze, jeżeli ma być lepiej niż na przekaźniku.

    zipZłoty wrote:
    powrotem podpiął metahalogen do sterownika i do jego przekaźnika zamontował układ gaszący

    Dokładnie, tak.

    zipZłoty wrote:
    A co do samej szyny i2c - pytanie z oryginalnego posta - czy prowadzenie jej na pcb jest ok?

    Nie zamieściłeś rysunku pcb, ale z opisu słownego wynika, że to raczej nie jest problem zakłóceń szyny I2C.
  • #6
    zipZłoty
    Level 10  
    khoam wrote:
    zipZłoty napisał:
    Przy następnej wersji mam zamiar przejść na triaki (przynajmniej częściowo).

    Najlepiej z optoizolacją i przełączaniem w zerze, jeżeli ma być lepiej niż na przekaźniku.


    Obecnie korzystam z modułu przekaźników z optoilozacją. Tak czy inaczej muszę się doedukować z układów gaszących i jak je podpiąć tak naprawdę do lampy.

    khoam wrote:
    zipZłoty napisał:
    A co do samej szyny i2c - pytanie z oryginalnego posta - czy prowadzenie jej na pcb jest ok?

    Nie zamieściłeś rysunku pcb, ale z opisu słownego wynika, że to raczej nie jest problem zakłóceń szyny I2C.


    Zamieszczam PCB, tak dla porządku rzeczy. Była to pierwsza wersja, bez pullup na i2c. Skoro nie szyna, to sugerujesz, że MCP23017 jest problemem? Chciałbym poznać chociaż przybliżony mechanizm tego, co się dzieje podczas rozruchu lampy. Najłatwiej było mi sobie wyobrazić wyindukowanie bardzo małego prądu na szynie, co w naturalny sposób zakłócało jej działanie. Nadal nie wiem, jak mam ochronić układ przed zakłóceniem wywołanym z zewnątrz.
  • #7
    khoam
    Level 41  
    zipZłoty wrote:
    Chciałbym poznać chociaż przybliżony mechanizm tego, co się dzieje podczas rozruchu lampy.

    W dużym skrócie: iskrzenie styków przekaźnika (łuk elektryczny) generuje zakłócenia, które mogą przenosić na mikrokontroler i powodować jego niestabilną pracę. Dlatego też stosuje się gasiki RC, aby zjawisko to zniwelować. Link

    zipZłoty wrote:
    Nadal nie wiem, jak mam ochronić układ przed zakłóceniem wywołanym z zewnątrz.

    No właśnie poprzez zniwelowanie tego zakłócenia powstającego przy załączaniu przekaźnika, który steruje lampą.
  • #8
    zipZłoty
    Level 10  
    khoam wrote:
    W dużym skrócie: iskrzenie styków przekaźnika (łuk elektryczny) generuje zakłócenia, które mogą przenosić na mikrokontroler i powodować jego niestabilną pracę. Dlatego też stosuje się gasiki RC, aby zjawisko to zniwelować. Link


    Ale, tak jak pisałem, obecnie metahalogen jest uruchamiany z zupełnie oddzielnego urządzenia - jest podpięty pod gniazdko WiFi. Jedyną wspólną cechą tych układów jest teraz to, że znajdują się w suficie terrarium. Uważasz, że iskrzenie w przekażniku gniazdka WiFi powoduje zakłócenia, które to z kolei wpływają na uC?
  • Helpful post
    #9
    khoam
    Level 41  
    zipZłoty wrote:
    Uważasz, że iskrzenie w przekażniku gniazdka WiFi powoduje zakłócenia, które to z kolei wpływają na uC?

    Tak, uważam. Jeżeli układ zakłócany jest stosunkowo blisko układu zakłócającego.
  • #10
    zipZłoty
    Level 10  
    Ok. Wyobrażałem sobie przewody od lampy jako anteny, nawet je scrossowałem, ale jak widać bez skutku. Wypróbuje Twoje podejście.
  • Helpful post
    #11
    krzbor
    Level 25  
    Warto przeanalizować inny problem - zakłócenia związane ze startem metahalogenu. To jest dosyć złożony proces przy którym generowane są impulsy o wartości 4,5 kV. Zakłócenia muszą być wówczas naprawdę duże. Problemem zapewne nie jest zasilanie czy przekaźnik, ale sam statecznik lub połączenie statecznik-żarówka metahalogenowa. Można to sprawdzić oddalając układ statecznik-żarówka od ESP.