Dziwne zachowanie kontaktronu

Zamontowałem kontaktron w furtce w celu automatyzacji oświetlenia przy otwarciu furtki. Furtka jest zamknięta a dzienniku mam otwarcie i zaraz zamknięcie(foto poniżej)


Wszystko pracuje na płytce Wemos D1 mini z softem SUPLA i integracja po MQTT do HA.
Dodam że zastosowalem rezystor podciągający 4,7k.
Problem że w nodered takie zachowanie kontaktrona powoduje zadziałanie oświetlenia a furtka wcale nikt nie otwiera. Co może być przyczyną.

Mogą być za długie przewody. Zmniejsz rezystor do 1k i zastosuj przewód ekranowany.

Odległość od wemosa do kontraktrona to 2m.

Przy znacznie krótszych miałem problemy.
Aby potwierdzić hipotezę potrzebny byłby oscyloskop :frowning:
Długie przewody działają jak antena i “łapią” zakłócenia. Można na próbę podłączyć na maksymalnie krótkich przewodach lub zewrzeć wej. na płytce i sprawdzić czy to jest “to”.
… od tego bym zaczął,
Następnie spróbować zastosować jakiś filtr sprzętowy lub programowy wg.

@Lomax1983
Jak tam postępy z diagnostyką?

Próbowałeś zewrzeć GPIO do masy bezpośrednio na płytce?
Czy objaw ustał (oczywiście stałe zwarcie powoduje chwilową bezużyteczność rozwiązania, ale w ten sposób zdiagnozujesz czy przyczyna nie leży w innym miejscu niż kontaktron i jego przewody połączeniowe)?

@szopen
Nie miałem kiedy za to się zabrać, mam plan jutro robić testy. Dam znać co wyjdzie.

Edit:
Po z mostkowaniu GPIO z masą przy Wemosie nie powoduje zmiany stanu.
Czyli przewód albo kontaktron. Kabel ma raptem 2m może 2,5m.

… raczej nie - podłącz go krótko to się upewnisz.

Kontaktrony mają prąd przełączalny ok 0.5A więc śmiało można zmniejszyć pullup do 1kohm (można zejść nawet do 100ohm). Większy prąd, większy margines na zakłócenia + kondensator filtrujący - tak jak linku.

Warto zwrócić uwagę na klony D1 mini wyposażone w regulator 3V3 o obciążalności jedynie 150mA

wprawdzie np. XC6204E331MR łatwo pomylić z XC6204A331MR, bo oznaczenia na SOT-25 są niemal identyczne (różnica to kropki lub kreski).

Rezystor 100R spowoduje praktycznie bezustanne (bo kontaktron w stanie normalnym mamy zwarty) dodatkowe obciążenie regulatora napięcia na poziomie 33mA, więc trzeba mieć na uwadze inne peryferia, aby nie przekroczyć możliwości stabilizatora (sam MCU pobiera koło 180mA w piku, a przeciętnie trzeba liczyć koło 100mA, no ale jeśli się projektuje coś co ma działać stabilnie to trzeba brać pod uwagę ekstremalne wartości…).

Ponoć zabezpieczenie termiczne nawet w tych stabilizatorach o znamionowej obciążalności 150mA działa dopiero w okolicach >250mA, ale spadki napięcia wyjściowego mogą powodować niestabilną pracę MCU.
Jakkolwiek na pracę zabezpieczenia termicznego wpływają też takie czynniki jak choćby poprawność (precyzja) montażu czy poprawny projekt PCB z dużym polem masy, bo tylko ona stanowi radiator oraz temperatura otoczenia (dość istotna przy montażu na zewnątrz), co świetnie zobrazuje wykresik temperatur maksymalnych w niekorzystnym miejscu

Nie powinno się obniżać pullup poniżej zalecenego 4.7k ponieważ jakimś trafem możemy ustawić sobie pin jako output w stanie Lo i je uszkodzimy.
Po zaprogramowaniu i sprawdzeniu można próbować zmian. Dla GPIO jako input nie ma znaczenia.

1 Like

Może masz możliwość na szybko podłączyć zamiast tego Wemosa inną płytkę? esp32, nodemcu

Jam mam 4szt kontaktronów na pytce 10m, 8m i 3m i do tego przełącznik rtęciowy, na przewodzie cieniutkim chyba z lampek znalezionym na złomie
bez żadnych dodatkowych rezystorów, tylko pullup w sofcie włączony żeby wewnętrzne na płytce aktywować i nigdy nie widziałem żeby cokolwiek było nie tak.

@bartik22
Niestety nie mam innej płytki ale spróbuje cos ogarnąć. Wemos d1 mini ma wewnętrzny pull up tylko na dwóch pinach jak dobrze pamiętam GPIO 0 i GPIO 2. Ja kontaktron mam podpięte pod GPIO 13. Może przepnę kontaktron na któryś z pull up wewnętrznym.

Z opisu obstawiam kontrakton. Moim zdaniem do wymiany.

@angler
Prędzej bym uwierzył w zimny lut lub zardzewiałe połączenie śrubowe (jeśli to gotowy moduł kontaktronu we własnej obudowie), ale… oczywiście nie da się tego wykluczyć - tu by się przydała obserwacja na miejscu (wycieczka do furtki z laptopem z odpalonym na żywo logiem z ESP) - w sumie drgania konstrukcji istotnie mogą w szczególnych przypadkach dawać taki objaw (np. gdy magnes jest za słaby/za daleko/źle ustawiony), może po prostu wiatr targa ciężką furką i ona uderza w słupek ze stosunkowo dużą siłą, takich rzeczy nie da się stwierdzić zdalnie, nic nie zastąpi “badań organoleptycznych”, być może w tym wypadku wystaczyłoby przekręcenie kontaktronu by kierunek ruchu styków był prostopadły do typowego zaburzenia zewnętrznego (przy takiej operacji można uszkodzić kontaktron, więc wypadałoby wylutować zgiąć nóżki w nowym kierunku i wlutować ponownie jeśli to konstrukcja z kontaktronem na PCB).
Kolejna kwestia o której nie wiemy nic, to czy w bezpośredniej bliskości nie znajduje się urządzenie, które może być źródłem silnych zakłóceń impulsowych (to tak a propos nieekranowanych przewodów, chociaż przy zewnętrznym pullupie o sensownej wartości zakłócenia są mało prawdopodobne, to jednak możliwe).

@Lomax1983
Nie używaj do tego ani GPIO0 ani GPIO2, owszem mają one podpięte fabryczne pullupy, ale nie bez powodu - są to piny “specjalne” biorące udział w bootowaniu i dlatego nie nadają się do podpięcia kontaktronu, który w stanie normalnym będzie zwierał którykolwiek z nich do masy (można za to wykorzystać je do podpięcia przycisków lokalnych, których stanem normalnym jest NO).
Tak samo nie należy używać GPIO15 - decydującego skąd MCU ma bootować (tzn. nie należy zmieniać zastanego stanu na większości modułów).

Każdy inny “normalny” GPIO możesz wykorzystać do tego celu (o ile nie jest to np. GPIO z wewnętrznym pulldown’em, jak np. GPIO16, ale taki z definicji nie jest “normalny”), swoją drogą “normalne” GPIO można konfigurować by włączyć na nich slaby wewnętrzny pullup, ale po co? - lepiej to olać i dać fizyczny rezystor.
(te wewnętrzne słabe pullupy to proszenie się o problemy przy przewodach dłuższych niż kilka cm)

PS
To oryginalny WeMos (ma o tej treści napis na PCB lub ekranie modułu) czy klon?

Dziękuje wszystkim za sugestie i pomoc ale muszę Was zaszokować. Okazało się że problem był prozaiczny. Wemosa mam przy furtce w metalowej rozdzielnicy. Jest to D1 min pro z zewnętrzną anteną. Wemos mam zanotowane na drzwiczkach tej rozdzielnicy. Antenę mam z magnesem zamocowaną na na drzwiczkach na zewnątrz. Okazało się że magnes anteny był na tej samej wysokości co Wemos. Przesunąłem antenę w inne miejsce, dalej od Wemosa i problem sam ustał. Nie mogłem w to uwierzyć i po ponad 24h prawidłowego działania przesunąłem antenę z powrotem i problem znowu się pojawił. Jeszcze raz dzięki wszystkim.

2 Likes