Cześć, posiadam napęd do bramy marki ekektrobim ( https://www.elektrobim.pl/instrukcje/KSEx80.pdf ). Zasilany jest na AC230V, na socketach między innymi do sterowania lub fotokomórek jest DC15V, natomiast do kontaktronów magnetycznych które odpowiadają za określenie miejsca w którym jest bramą jest DC5V. Takich kontaktronów są dwa - jeśli pierwszy zamknie obwód to napęd wie że ma przestać kręcić w prawo ponieważ brama jest już całkowicie otwarta. Jeśli drugi zamknie obwód to napęd wie że ma przestać kręcić w lewo - jest już całkowicie zamknięta.
W sterowniki napędu są 3 gniazda na te kontaktrony - zamknięcie bramy, gnd, otwarcie bramy. Pomiędzy czujnikiem i gnd jest cały czas jak już pisałem DC5V. Obwód jest zamknięty (multimetr ustawiony w tryb diody piszczy) tylko wtedy gdy brama jest otwarta bądź zamknięta. Może dojść do takiej sytuacji że magnes przesunie się trochę w prawo i kontaktron już nie jest zamknięty, czyli obwód był zamknięty przez okolo sekundę.
Podobno esp8266 wemos obsługuje 5v na gpio, więc postanowiłem sprawdzić czy może wystarczy podłączyć gpio ustawione na pull up do socketu od kontaktronu, a gnd w wemos do gnd w automacie. Esp8266 było zasilone z ładowarki USB na 5v. Najprawdopodobniej ten test usmażył moje esp8266.
Jak powinienem to prawidłowo podłączyć, aby esp32 (ponieważ ma zewnętrzna antenę wifi), nie spaliło się i odczytało informacje że obwód kontaktronu został zamknięty, czyli brama jest zamknięta lub otwarta?
Druga kwestia to sterowanie bramą, ale to wystarczy przekaźnik z optoizolacja.
Najprawdopodobniej usmażył, bo GPIO są przeznaczone do współpracy z napięciem w logice 3.3V (więc NIGDY nie może ono przekraczać 3.6V ani być niższe niż -0.3V - to akurat jest wartość ujemna, ale również jest ona graniczna) tolerancję na 5V mają podobno tylko 2 piny, ale Espressif w obecnej dokumentacji nie potwierdza tego.
Powinieneś użyć układu dopasowującego (nie wiem czy nie będzie wywoływać to konfliktów z modułem sterującym bramy, więc to tez musisz brać pod uwagę! - możesz sprawdzić eksperymentalnie, czy wpięcie rezystancji równolegle z kontaktronem nie zakłóci działania, moim zdaniem przy dostatecznie dużej wartości nie będzie problemu).
Najprościej w postaci dzielnika rezystorowego (by dopasować poziomy napięć do dopuszczalnych) - najprostszy przypadek to dzielnik na bazie rezystora 10k w górnej gałęzi (na obrazku w wiki to rezystor R) i 18k w dolnej (rezystor R1).
Nie musisz włączać wewnętrznego pullupu w ESP (wręcz nie powinieneś go ustawiać, bo to też potencjalna możliwość upalenia MCU), bo podciągnięcie do stanu wysokiego zapewnia pullup w sterowniku bramy .
Niemożliwe - w momencie zwarcia kontaktronu to napięcie powinno spaść w okolice 0V (warto wiedzieć na ile faktycznie spada, to może mieć znaczenie przy dobieraniu dzielnika rezystorowego).
Sprawdź czy elektroda wspólna (COM) jest równocześnie masą zasilania użytkowego (GND) sterownika, powinno tak być (większość napędów zapewnia zasilanie akcesoriów, z tego pdfa, który podlinkowałeś wynika, że masz tam dostępne 15V które możesz użyć do zasilania moduły ESP o ile posiada on na płytce regulator zdatny do pracy przy takim napięciu, przykładowo dla powszechnie stosowanych AMS1117 jest to maksymalne dopuszczalne napięcie wejściowe, więc sugeruję sprawdzenie, czy na wyjściu sterownika bramy nie rośnie ono powyżej 15V w niewielkim stopniu napięcie można zredukować stosując kilka połączonych szeregowo najzwyklejszych diod prostowniczych - to najtańsze i najprostsze rozwiązanie).
PS przy zabudowywaniu płytki ESP w obudowie sterownika zalecam impregnację elektroniki, stosuję do tego dedykowany lakier “Plastik 70” (producent Kontakt Chemie, dostępny jako aerozol lub butelka, a dla przemysłu w ogromnych opakowaniach typu bańka), ale ma on tańszy polski odpowiednik (termopasty.pl) w postaci lakierów “PVB 16” (aerozol) i “PVB 60” (butelka)
Dziękuję za odpowiedź. Chciałbym uniknąć tworzenia własnego dzielnika napięć, wolę gotowe rozwiązanie ponieważ bedzie to na zewnątrz. Może Shelly 2.5, ono toleruje nawet do DC60V? A może konwerter stanow logicznych 5v → 3v?
Odcienie tego że po zamknięciu powinno spaść do 0V to możliwe, mogłem tego nie sprawdzić lub mój miernik ma zbyt niska częstotliwość próbkowania.
Mam jeszcze pytanie, ponieważ przeczytałem ten post: How can I detect a 5V external switch signal with NodeMCU - Everything ESP8266 i jest tu napisane aby podłączać urządzenia do tej samej masy. Co to w praktyce oznacza, mój mikrokoltroler powinien być podłączony do tych 15v za przy pomocy kolejnego dzielnika napięć? Łatwiej by było wziąć 5v do zasilenia esp32 z napędu i z socketow pod kontaktrony, na których cały czas jest 5v (chyba że zle zmierzyłem).
Dopisałem wyżej parę słów o impregnowaniu.
Zmontuj układ na jakiejś płytce uniwersalnej (jest tego od groma i trochę).
Impregnacja elektroniki w zasadzie jest krokiem koniecznym, w przeciwnym razie sprzęt zgnije prędzej niż myślisz.
Uwierz mi, w tym wypadku 2 rezystory są rozwiązaniem najbardziej optymalnym. (możesz użyć też odpowiednio 22k i 33k jak w linku, który zapodałeś zamiast takich jak proponowałem wyżej)
Konwerter może byłby OK gdybyś znał faktyczny schemat elektroniki, wymaga on też zasilania z obu łączonych układów (a nie masz “oficjalnego” dostępu do źródła tych 5V) , więc ja “jestem na NIE”.
Wspólna masa jest koniecznością jeśli chcesz przesłać jakiekolwiek sygnały miedzy różnymi obwodami (można to zrobić też w inny bardziej skomplikowany sposób), ale nie jestem w stanie kogokolwiek uczyć postaw elektroniki w jednym poście…
Nie możesz podbierać zasilania z wejść innego mikrokontrolera, to napięcie 5V to najprawdopodobniej jego pullupy, w każdym razie wejścia czujników zewnętrznych nie są wyjściami zasilania w sterowniku bramy!
Zasilanie musisz pobierać z wyjść zasilania osprzętu dodatkowego, bo tylko ono do tego służy.
Wiele płytek prototypowych z ESP na pokładzie ma stabilizatory umożliwiające bezpieczne zasilania z zasilacza 12V, 15V lub 24V nie wiem jaką masz płytkę i jakie ma dopuszczalne maksymalne napięcie zasilania, ale “partyzancką” metodę z wykorzystaniem diod prostowniczych opisałem wyżej, nie stosuje się dzielników rezystorowych w torze zasilania (tzn. nie w sposób bezpośredni, bo w ogóle generalnie elektronika to w zasadzie się opiera na czymś tak podstawowym jak dzielniki rezystorowe).
W tym układzie możesz zastosować nawet tanie diody impulsowe 1N4148 (bo prąd pobierany przez płytkę ESP32 nie będzie przekraczał 0.5A) kalkulując spadek napięcia jako 0.8V do 1.0V na każdej.
W sprzedaży detalicznej 10 szt. 1N4148 w polskim sklepie kosztuje w okolicach złotówki, 100szt. w Chinach koło dolara.
Można to zrobić też bardziej elegancko stosując np. scalony stabilizator 5V LM78M05 ten model może pracować przy napięciu wejściowym do 35V (czy jakiś inny jego odpowiednik np. L7805CV, byleby o odpowiedniej obciążalności, dla ESP32 jest zalecane 300mA, napięcie wyjściowe 5V nie jest krytyczne, więc może być wyższe napięcie wyjściowe, bo zdecydowana większość płytek prototypowych ma jakiś stabilizator na wejściu zdolny do przyjęcia wyższego napięcia, ale optymalnie jest wytracić w zewnętrznym elemencie taką moc jaką się tylko da, wtedy ten onboard nie musi pracować w krytycznych warunkach, oczywiście warto zajrzeć do datasheet’a i sprawdzić parametry, bez radiatora zawsze dopuszczalna moc strat jest mocno ograniczona).
Zauważ że stabilizatory z serii xx79xxx są stabilizatorami napięcia UJEMNEGO, więc nie możesz ich użyć przy zachowaniu warunku wspólnej masy, muszą to być jakieś stabilizatory napięcia dodatniego czyli ich oznaczenia to coś w stylu xx78xxx (tak jak dla przykładowego modelu jest to LM78M05, jeszcze jeden dopisek - literka M za 78 ma też znaczenie, ona oznacza klasę mocy, i np LM78L05 n]się nie nada bo jest z słaby.
Może i tak, a może totalnie NIE, ale nie mam całej niedzieli na analizę tego co chcesz uzyskać… Shelly chyba nie udostępnia wewnętrznych schematów swoich wypustów, więc nawet nie mam z czego analizować czy to można wykorzystać czy nie (nie znam schematu obwodu wejściowego, a to, że sam moduł Shelly można zasilać takim napięciem nic nie znaczy), może gdzieś w sieci jest jakiś gotowy opis, ale jeśli nie masz pojęcia o elektronice to odradzam łączenie “na pałę”… Nie można łączyć kilku układów opartych na MCU w sposób losowy nie znając ich budowy wewnętrznej o ile nie korzystasz z dedykowanych do konkretnego celu wejść i wyjść.
Jestem podwójnie na NIE, bo moduły Shelly raczej nie są przystosowane do warunków klimatycznych pracy “na zewnątrz”.
Dziękuję bardzo za twoją odpowiedź, wydaje mi się że już rozumiem jak to powinno działać. Nawet juz wiem dlaczego zalecasz mi zrobienie własnego dzielnika a nie kupno konwertera logicznego Nie wiadomo jakiego prądu spodziewa się napęd do bramy.
Zmierzyłem dokładnie napięcia - na wyjściu DC do dodatków (np. fotokomórek), napięcie jest od 15.5V gdy napęd stoi, do 14.5V gdy napęd pracuje. Moje nodemcu ma stabilizator AMS1117C 33. Zacząłem szukać stabilizatora napięcia, i spostrzegłem się że skoro to ma być na zewnątrz, więc stabilizator ma być wystawiony na temperatury ujemne. Muszę znaleźć jakiś z literkami AB. Jedyny dostępny na allegro to: L7808ABV ( https://www.tme.eu/Document/567dd1f02d4206e3356c7adfb379d2b0/l78.pdf ) w obudowie TO220 czyli do płytek uniwersalnych.
Natomiast, napięcie na kontraktronie zachowuje się odwrotnie - gdy napęd działa wzrasta do 5.7V, gdy napęd stoi jest około 4.7V. Miałeś również rację odnośnie 0V - gdy kontraktron jest zamknięty jest 0V.
Czy do odpowiedniego wyboru rezystorów powinienem zmierzyć rezystancję samego kontaktronu? Na razie myślę o R1 = 10kOhm, R2 = 6.8kOhm, co zredukuje 5.7V do 2.3V, a z 4.7V do 1.9V. Czy mógłbyś mi zalecić jaki zakres rezystorów kupić, aby móc znaleźć właściwy zestaw? 0.25W według mnie powinny wystarczyć, czy mam rację?
Fajnie, że podszedłeś do tematu po inżyniersku, w praktyce stabilizatory nawet nie posiadające odpowiedniej przemysłowej klasy klimatycznej dadzą radę z polskimi ujemnymi temperaturami (no chyba, że mieszkasz w jakimś “biegunie zimna”), tym akurat możesz się bardzo nie przejmować, bo płytki prototypowe ESP montowane są z elementów ze zwykłej klasy klimatycznej (a gdybyś chciał mieć coś do pracy w ujemnych temperaturach, to z tańszych producentów chyba tylko Olimex ma odpowiednie wypusty “klasy industrial”)
Dzielnik trzeba tak dobrać aby jego napięcie wyjściowe
w stanie wysokim było wyższe niż 2.475V w warunkach najniższego napięcia przed dzielnikiem (4.7V)
w stanie wysokim było niższe niż 3.6V w warunkach najwyższego napięcia przed dzielnikiem (5.7V), ale optymalnie aby nie przekraczało 3.3V
w stanie niskim mieściło się w granicach od -0.3V (tak, to ujemne napięcie, takie raczej nie wystąpi “w naturze”), a 0.825V (to praktycznie zawsze będzie spełnione)
tu założyłem, że ESP będzie pracował z napięciem zasilania dość idealnie równym 3.3V ale oczywiście jeśli uzyskane napięcie minimalnie wejdzie w zakres stanu nieustalonego tj. między 1/4 a 3/4 napięcia zasilania, to się nic specjalnego nie stanie (co najwyżej niezawodność wykrywania będzie malała do zera), natomiast zdecydowanie należy zadbać o to by graniczne napięcia nie zostały przekroczone ze względu na możliwość uszkodzenia układu - czyli punt 2 jest najważniejszy. https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#44
Myślę że stosunek wartości rezystorów w okolicach 1:1.8 będzie optymalny biorąc pod uwagę niekorzystny przypadek napięcia rosnącego sporo ponad 5V (bo przy takim stosunku przy spadku poniżej 5V wciąż napięcie wyjściowe będzie gdzieś w granicach dopuszczalnych wartości dla stanu wysokiego - trzeba pamiętać, że technika cyfrowa w istocie pod spodem jest analogowa ).
Czyli z szeregu standardowych wartości 10k i 18k albo np. 27k i 47k
zakładam, że rezystancja szeregowa dzielnika powinna być w zakresie 10k do 100k (no niestety prawidłowy dobór potwierdzi tylko eksperyment i pomiar).
Rezystancji kontaktronu możesz nie mierzyć - jest pomijalnie mała, bliska 0om. Nie znamy rzeczywistej rezystancji pullupów wykorzystywanych w sterowniku bramy, więc po podłączeniu dzielnika z rezystorów powinieneś sprawdzić napięcie na wejściach sterownika (jeśli masz jakiekolwiek rezystory w domu rzędu 10k - 100k to sugeruję podłączyć na próbę i zmierzyć ponownie napięcia.
edit: rozwiązanie zaproponowane niżej przez @RobinI30 jest technicznie lepsze niż zwykły dzielnik rezystorowy, bez większego zastanawiania się możesz użyć 10k jako pullup i dowolną diodę impulsową (choćby 1N4148, którą sugerowałem powyżej do partyzanckiego obniżenia napięcia zasilania).
Moc możesz wyliczyć samodzielnie, ale zasadniczo dążymy do tego aby rezystancja była na tyle duża, by pobierany prąd był pomijalnie mały i nie zakłócał pracy sterownika bramy (dlatego opcjonalnie podałem dość wysokie wartości rezystancji), bez liczenia podpowiadam, że ćwierćwatowe rezystory to spory zapas dopuszczalnej mocy
Na dobór rezystorów ma jeszcze wpływ rezystor podciągający wejście kontaktronu do +5V, więc pozostaje eksperymentalny dobór lub pomiar oporu tego rezystora i uwzględnienie go przy obliczeniach.
Jednak w tym układzie zrobiłbym inaczej:
Podciągnął wejście ESP do 3,3V rezystorem, to wejście połączył z wejściem kontaktronu przez diodę - katodą w stronę kontaktronu.
Na wyjściu ESP w stanie wysokim byłoby 3.3V a w stanie niskim ok 0.7V
Chciałbym jeszcze potwierdzić czy dobrze rozumiem, piszecie o “diodzie” w formie pojedyńczej, ale dopiero zastosowanie 4 diód połączonych szeregowo zapewni mi spadek napięcią o ~2.5V, prawda?
Kupię i zestaw kondensatorów, i zestaw diód i zobaczymy co zadziała.
Ale tym razem nie chodzi o spadek w kierunku przewodzenia - pojedyncza dioda tu pracuje w kierunku zaporowym, by nie dopuścić do “wycieku” tych 5V ze sterownika bramy, zamiast tego będziesz miał 3.3V z własnego pullupu przy rozwartym kontaktronie.
W kierunku przewodzenia popłynie przez nią prąd gdy kontaktron będzie zwarty - dlatego nie uzyskasz już 0V na wejściu, a nieco wyższe napięcie - zgodnie z charakterystyką będzie przy tak nikłym prądzie poniżej 1mA to gdzieś w okolicy 0.4V - 0.6V zależnie od temperatury (ale nadal mniej od maksimum dla w 100% pewnego wykrywania stanu niskiego, bo nie przekroczy 0.825V).
Warto zauważyć, że przy zastosowaniu “partyzanckim”, czyli “dla spadku napięcia” w torze zasilania płynie setki razy większy prąd, więc tam spadek szacowałem na 0.8V - 1.0V na każdej diodzie.
Dziwne, działa - tzn. nie spaliło się. Niestety na GPIO napięcie jest w stanie niskim za wysokie.
1.3v na GPIO - 4.64v na napędzie
3.30v na GPIO - 0.0v na napędzie.
ESP nie odczytuje zmiany stanu. Wydaje mi się że powinienem zmienić rezystor z 10k na jakiś inny, nie wiem tylko w którą stronę iść.
Coś tu nie gra i to grubo, narysuj jak to podłączyłeś (pierwsze co mi do głowy przyszło, to dioda w odwrotną stronę).
Masz na myśli stary układ, który posądzałaś o to, że poszedł z dymem?
Jeśli tak to jest pewne pocieszenie - przez skończony okres czasu każdy układ jest w stanie działać poza specyfikacją, tylko pytanie jak długo - czy to będzie ułamek sekundy czy kilka miesięcy (przekroczenie parametrów dopuszczalnych nie oznacza, że układ ma natychmiast wyparować - wszystko zależy od skali przekroczenia i jakie zjawiska fizyczne biorą w nim udział).
Narysuj schemat, tu nawet nie widać w którą stronę ta dioda jest podpięta, przewody idące poza zdjęcie też są niewiadomą…
Gdybyś tak nie żałował miejsca na płytce stykowej (MCU nie jest przecież wpięte bezpośrednio) to może by było cokolwiek widać, póki co to ta dioda jest donikąd…
Zgaduję, że
szary i niebieski = GND (masa)
żółty = kradzione zasilanie (dowolne >6V)
zielony = 5V
czerwony = kij wie gdzie, bo przy diodzie i rezystorze jest za gęsto i wydaje mi się, że tam masz coś skopane bo na moje oko to w linii 10 masz też wpięte 3V3, na drugim końcu GPIO23
pomarańczowy = kij wie co, kij wie gdzie (zgaduję, że to może podbierane 3V3 ze stabilizatora na płytce prototypowej)
ALE to nie ja to powinienem pisać, tylko TY.
Może podobne zdjęcie by wystarczyło, gdybyś je zrobił tak by było widać gdzie te kable idą do płytki prototypowej (musiałbym znaleźć taką samą aby sobie przeczytać to czego nie widać).
Ale w ogóle napięcia które opisałeś są nieprawdpodobne, układ możesz przetestować “tak jak jest” bez podpinania do sterownika bramy
zmierz napięcie na tym GPIO, które jest wejściem
wolną końcówkę diody (A4) zewrzyj z masą, zmierz napięcie
W ogóle to MCU jest uruchomiony? a GPIO na którym mierzysz napięcie jest skonfigurowane do pracy jako wejście cyfrowe? (i jest to jakieś “zdrowe” GPIO?)
Druga opcja, która mi przyszła do głowy, to że A4 podpiąłeś do masy napędu, a masę MCU podpiąłeś do wejścia kontaktronu…
PS Napięcia mierzymy oczywiście względem masy.
Edit: Jestem pewien, że masz zwalone połączenie GPIO - powinno iść w 9 szczebelek płytki stykowej a nie tam gdzie podpinasz 3V3, jakkolwiek nawet ten błąd nie tłumaczy uzyskanych napięć…
Weź świeżą diodę bo nie wiem czy ta przetrwała eksperyment (albo sprawdź ją jeśli umiesz).
To może tłumaczyć, że błędnie założyliśmy zwieranie wejścia przez kontaktron do masy.
Wyobraź sobie sytuację, że kontaktron podaje +5V i wejście jest pulldown.
Bez odtworzenia schematu obwodu wejściowego napędu, możemy tylko spekulować dalej.
W takiej sytuacji pozostaje jednak dzielnik rezystorowy.
Autor tematu pomierzył na tyle, że te wnioski nadal wydają się prawidłowe (tester przejścia piszczy przy zwartym kontaktronie i jest 0V), na pulldownie by raczej nie piszczał.
Kontaktrony NO są również typową konstrukcją.
Natomiast układ poskładany na płytce stykowej jest zdecydowanie wadliwy (chociaż i tak nie jestem w stanie wytłumaczyć napięć, chyba, że fotka dotyczy innego układu niż były mierzone napięcia, albo, że dioda w międzyczasie poszła z dymem).
Nie analizowałem tego dla tej opcji
bo to nie bardzo pasuje do wyników pomiarów, ale nawet przy takim założeniu napięcia zmierzone na GPIO które jest na stale podpięte do 3V3 nie pasują do niczego
Moim zdaniem tu było więcej błędów w wykonaniu niż jeden i w dodatku autor się nie przyznał do żadnego.