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

jak wyeliminować nieustalony stan pinów I/O w czasie staru modułu ESP8266?

Maryush 11 Mar 2018 21:42 3420 24
REKLAMA
  • #1 17096737
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    Witam,

    projektuję sterownik do silnika AC sterowany przez WiFi w oparciu o moduł ESP8266 12E. Silnik ma obroty lewo/prawo. Elementami wykonawczymi są przekaźniki. W momencie podłączenia sterownika do zasilania oba przekaźniki włączają się na moment, co powoduje, że silnik chce równocześnie pracować w obu kierunkach i przez tę chwilę znacznie się nagrzewa. W jaki sposób wyeliminować ten problem? Rezultat ma być taki, że piny ESP sterujące przekaźnikami w czasie uruchomienia sterownika mają być cały czas w stanie niskim, a nie zmieniać stanu na wysoki, po czym znowu na niski.
  • REKLAMA
  • #2 17096773
    Brivido
    Poziom 34  
    Posty: 2856
    Pomógł: 226
    Ocena: 429
    Pokaż schemat wykonawczy? Jaki to silnik itp. W przypadku silników indukcyjnych i styczników, one powinny mieć blokadę mechaniczną.
  • REKLAMA
  • #4 17097074
    AIIoT
    Poziom 11  
    Posty: 62
    Ocena: 14
    Maryush czytałem kiedyś o tym problemie, ale nie przypuszczałem że stanowi to jakiś realny problem, może powinieneś spróbować traktować mikrokontroler jako zwykły przycisk i zastosować tzw. sprzętowy debounce'ing (do eliminacji drgań styków) przed bazą tranzystora.

    korzystając z programu który napisałem do testowania sprzętowej emulacji drgań styków dostępny na:
    http://aiiot.c0.pl/web/2018/02/01/program-do-testowania-sprzetowej-eliminacji-drgania-stykow/

    jak wyeliminować nieustalony stan pinów I/O w czasie staru modułu ESP8266?
    zauważyłem że ten stan nieustalony rzeczywiście występuje, oraz można się go pozbyć układem MAX6818, ale czy ta opcja jest opłacalna do tego celu to już inna kwestia, może wystarczy przeanalizować działanie tego układu i odtworzyć go w tylko takim stopniu w którym drgania nie będą występować (samo dodanie kondensatora i rezystora nie pomoże)
    jak wyeliminować nieustalony stan pinów I/O w czasie staru modułu ESP8266?
  • #5 17097155
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Maryush napisał:
    Jest to silnik do rolety. Sterowanie przekaźnikami standardowe, tranzystorem BC848 z portu I/O modułu ESP.

    Przy "standardowym sterowaniu przekaźnikiem" silnik nie nie będzie zachowywał się tak jak napisałeś, jeśli przekaźniki są sprawne. Pokaż schemat. Próbowałeś na innych pinach?
  • REKLAMA
  • #6 17097198
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    Problem stanu nieustalonego po zasileniu ESP dotyczy wszystkich pinów I/O, tak jak kolega AIIoT przedstawił to na diagramie z oscyloskopu. Nie wiem, czy równoczesne podanie obrotów lewych i prawych na silnik może mu zaszkodzić, jeśli nie to w moim przypadku nie będzie stanowić to problemu, ale jeśli tak, to problem już jest. Specyfikacja tego napędu nie podaje szczegółowych informacji, co do zabezpieczeń.
  • #7 17097293
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Jesteś pewien? W takim razie przekaźniki są zepsute ;-)
  • REKLAMA
  • #9 17097440
    Loker
    Poziom 39  
    Posty: 3368
    Pomógł: 575
    Ocena: 720
    Widzę kilka możliwości:
    1. Hardware'owa eleminacja stanów nieustalonych na pinach I/O - np. jakieś filtry RC - przydałoby się znać częstotliwość i czas trwania tych stanów; poza tym tego typu filtr wprowadzi opóźnienie podczas normalnej pracy.
    2. Jakiś układ logiczny uniemożliwiający jednoczesne włączenie przekaźników - co nie zmieni faktu, że podczas stanów nieustalonych przekaźniki będą się na chwilę włączać (niejednocześnie) - spowoduje to "szarpanie" silnikiem, co nie jest pożądane.
    3. Opóźnione włączenie zasilania przekaźników - zasilanie ESP podawane jest najpierw, zasilanie cewek przekaźników z jakimś (np. 1s) opóżnieniem.
  • #10 17097477
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    Kolega Loker bardzo ładnie przeanalizował i rozpracował temat.
    Najlepszym rozwiązaniem będzie opcja 3, czyli najpierw włączy się ESP a później zostanie podany plus zasilania na cewki przekaźników. To musi być jakiś mały scalak/układ bo już w tym momencie nie mam praktycznie miejsca na płytce. Może coś na NE555?
  • #11 17097708
    krzysiek_krm
    Poziom 40  
    Posty: 4612
    Pomógł: 716
    Ocena: 598
    Witam,
    Maryush napisał:
    czyli najpierw włączy się ESP a później zostanie podany plus zasilania na cewki przekaźników

    może typowy układ "reset" - mały, tani, itd.

    Pozdrawiam
  • #12 17097711
    Loker
    Poziom 39  
    Posty: 3368
    Pomógł: 575
    Ocena: 720
    Moę być 555, może być na jakimś liczniku, może być nawet coś takiego: https://www.elektroda.pl/rtvforum/topic295587.html
    Tylko policz, czy po spadkach napięcia na dwóch tranzystorach zostanie jeszcze wystarczające napięcie do pewnego włączenia przekaźnika.
  • #13 17097731
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Maryush napisał:
    Dlaczego niby przekaźniki miałyby być zepsute? Cewki przekaźników są załączane, dokładnie tak, jak pokazuje to diagram.

    Jeśli wszystko dobrze podłączyłeś, a uruchamiają się oba kierunki jednocześnie, to mogą być uszkodzone. To jest niezależne od ESP8266.

    Te stany nieustalone to tak na poważnie? Na każdym pinie? Nawet jakbyś sterował stanem niskim na wyjściu?

    Bez schematu to trudno Ci doradzić sensownie.
  • #14 17097750
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    Nie są uszkodzone, bo na jednym z wyjść mam diodę i ona też zapala się na moment przy włączeniu ESP, ten moduł tak już ma. Będę testował rozwiązanie z tranzystorem sterowanym przez układ RC.
  • #15 17097755
    krzysiek_krm
    Poziom 40  
    Posty: 4612
    Pomógł: 716
    Ocena: 598
    mpier napisał:
    Maryush napisał:
    Dlaczego niby przekaźniki miałyby być zepsute? Cewki przekaźników są załączane, dokładnie tak, jak pokazuje to diagram.

    Jeśli wszystko dobrze podłączyłeś, a uruchamiają się oba kierunki jednocześnie, to mogą być uszkodzone. To jest niezależne od ESP8266.

    Trochę z innej beczki - autor prawdopodobnie popełnił drobny błąd koncepcyjny: zastosował jeden przekaźnik lewo a drugi prawo. Powinien był zastosować jeden przekaźnik lewo - prawo a drugi start - stop. Co nie zmienia faktu, że stany nieustalone będą powodowały niekontrolowane przełączanie tych przekaźników podczas podnoszenia się procesora.
  • #16 17097851
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    To raczej nie jest możliwe. Przecież autor napisał, że "podłączył standardowo". Czyli tak jak napisałeś albo styki NO drugiego szeregowo z NC pierwszego albo jeszcze inaczej. Które piny autor używa do sterowania?
  • #17 17097853
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    Gdybym wiedział, że są stany nieustalone, to dałbym jeden przekaźnik na zmianę kierunku obrotów a drugi na włącz/wyłącz. Wtedy przy włączeniu ESP napęd kręciłby się tylko w prawo lub w lewo.
    Sterowanie na pinach 14 i 16.
  • #18 17098094
    AIIoT
    Poziom 11  
    Posty: 62
    Ocena: 14
    Maryush Na samym początku proponowałbym ci spróbować zmienić sposób sterowania, podczas uruchomienia ESP ma głównie stan wysoki.
  • #19 17098433
    Slawek K.
    Poziom 35  
    Posty: 3020
    Pomógł: 259
    Ocena: 1302
    A w czym kolega pisze program ? w arduino ? czy piny mają stany (LOW lub HIGH - w zależności od logiki układu sterującego przekaźnikami) ustalone przy starcie programu ? do tego odpowiednie rezystory pulldown lub pullup i nie powinno być problemów.
    Pin 13 to pin RX uart1, więc może tu jest problem

    https://i.pinimg.com/originals/0c/8c/e8/0c8ce8bc22ee6ba0e2ed830bcbb28454.png


    Pozdr
  • #20 17098442
    krzbor
    Poziom 29  
    Posty: 1757
    Pomógł: 41
    Ocena: 1064
    Zobacz temat, który promuję (w stopce). To rozwiązanie na pewno działa.
  • #21 17098643
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    krzbor napisał:
    Zobacz temat, który promuję (w stopce). To rozwiązanie na pewno działa.

    Bardzo dobrze opisane, jeśli na którymś pinie ESP8266 12E jest czysto w czasie startu, to można wykonać takie sterowanie. Spróbuję też z dodaniem rezystorów podciągających do zera, ale wydaje mi się, że to nic nie da.
  • #22 17098745
    krzbor
    Poziom 29  
    Posty: 1757
    Pomógł: 41
    Ocena: 1064
    Dałem przebiegi - widać, że na Rx (GPIO3) jest stabilny sygnał. U mnie ten układ sterują bramą garażową i bramą wjazdową. Jeszcze nigdy się przez przypadek nie otwarła.
  • #23 17101031
    Maryush
    Poziom 22  
    Posty: 884
    Pomógł: 2
    Ocena: 90
    Rezystory na nic się zdały. Sterowanie wykonam pośrednio przez transoptor i powinno być dobrze. Czy ESP8266 12E ma drugi UART? Pierwszy chciałbym wykorzystać do komunikacji z Atmegą a drugi do debugowania. Programy piszę w arduino.
  • #24 17101479
    krzbor
    Poziom 29  
    Posty: 1757
    Pomógł: 41
    Ocena: 1064
    Odnośnie drugiego UART nie doczytałeś do końca mojego promowanego tematu :) Tam też ktoś zadał to pytanie. Nie rozumiem dlaczego nie zastosowałeś sposobu z linią Rx - czy po podłączeniu przez rezystor 3k3 do masy był na tym wyjściu jakiś sygnał podczas startu?
  • #25 17101651
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Maryush napisał:
    Rezystory na nic się zdały.
    Pierwszy rezystor od lewej podłączyłeś odwrotnie. Drugi jest za duży albo wewnętrzne podciągnięcie jest za moce. Policz sobie co wyszło na bazie tranzystora. Jeśli pin 16 jest w stanie wysokim (google) to prędzej go spalisz niż ściągniesz do masy. Ty chyba bardzo nie chcesz tego zrobić.

Podsumowanie tematu

✨ W dyskusji poruszono problem nieustalonych stanów pinów I/O w module ESP8266 12E, które powodują chwilowe włączenie obu przekaźników sterujących silnikiem AC, co prowadzi do jego przegrzewania. Uczestnicy sugerują różne rozwiązania, w tym zastosowanie sprzętowego debounce'u, filtrów RC, opóźnione włączenie zasilania przekaźników oraz użycie układów logicznych do zapobiegania jednoczesnemu włączeniu przekaźników. Wskazano również na możliwość zastosowania układu NE555 do opóźnienia zasilania. Uczestnicy podkreślają znaczenie schematu połączeń oraz odpowiedniego programowania pinów, aby uniknąć niepożądanych stanów na wyjściu.
Wygenerowane przez model językowy.
REKLAMA