Skocz do zawartości

Wyzwalanie się wejść atmegi 8


Pomocna odpowiedź

Napisano

Witam!

Mam problem otóż dotykając dłuższym kablem (ok. kilka m) do wejść atmegi wyzwala się ono i wykonują się operacje które są zawarte w programie, nie byłoby nic dziwnego w tym gdyby nie to że druga strona tego kabla wisi w powietrzu. Teoretycznie powinienem zwierać do masy aby wejście zadziałało, a tutaj wystarczy dotknięcie dłuższym przewodem. Dodam też że stosując microswitch i zwierając do masy również działa.

Program (w C) raczej bez znaczenia bo to standardowa operacja sprawdzania stanu wejścia z wykorzystaniem wewnętrznego pull upa.

Jaka może być przyczyna takiego stanu rzeczy, jakieś zakłócenia?

Zakłócenia. Czasami jak dotknę jednym przewodem multimetru masy w robocie, to procesor się restartuje 😋. Co ciekawe, dzieje się tak tylko przy zasilaniu z zasilacza sieciowego.

Hmmm.... a w jaki sposób sobie z tym poradzić? Zasilanie mam wydaje mi się że przefiltrowane, Stabilizator liniowy, za nim kilka kondensatorów, oczywiście blisko samej atmegi. Dodam jeszcze że kilka cm, pod atmegą pracuje parę przekaźników, cewki mają o mocy 360mW, nie wiem czy pole elektromagnetyczne które generują może mieć coś wspólnego.

a w jaki sposób sobie z tym poradzić?

Nie zostawiać "wiszących" sygnałów, podpinać je przez rezystor do vcc lub do masy. Chyba, że chcesz mieć taką właśnie antenę

Co masz na myśli mówiąc sygnały? Wejścia te które używam mam teoretycznie podpięte rezystorem do vcc, jako wew. pull up. No chyba że masz na myśli linie portów, których w ogóle nie definiuję jako wejścia\wyjścia, tzn. nie mam mowy o nich w programie 😉

Edit:

Poczytałem troche w Internecie na temat zostawiania wiszących linii, i powiem szczerze że zdania są podzielone, jedni zostawiają drudzy definiują w programie jako I\O. Ja szukając rozwiązania mojego problemu, spróbowałem tego drugiego sposobu i zdefiniowałem wszystkie nieużywane linie jako wejścia włączając pull upa, i rezultat żaden, wejście nadal wyzwala się po przyłożeniu przewodu...

MasterFun, nie rozumiem czego się spodziewałeś. Podłączasz do pinu mikrokontrolera antenę, w której indukują się sygnały z otaczającego nas zewsząd pola elektromagnetycznego. Dla wejścia, które ma dość dużą impedancję kilkumetrowy przewód jest jak bateria, która ma jakieś napięcie i ono wystarczy aby wyzwolić zmianę na wejściu.

Hmm.. a jak rozwiązać ten problem? Czy można byłoby między linię portu a GND wstawić tranzystor i bazą tego tranzystora sterować tym portem? Jak uwzględnić prądy Ice żeby dobrać odpowiedni rezystor bazy a przy tym nie uszkodzić atmegi?

MasterFun, wytłumacz mi proszę po co chcesz podłączać antenę pod wejście mikrokontrolera?

Jeśli ten przewód wisi w powietrzu bo jest do niego podłączony switch to musisz dodać zewnętrzny rezystor podciągający do Vcc 10k i może szeregowo z tym kablem rezystor około 100 Om zaraz przy mikrokontrolerze. Tranzystor tylko wzmocni sygnały indukujące się w tym kablu więc to odpada.

  • Pomogłeś! 1

Sabre, dziękuję teraz znacznie lepiej, spróbowałem tak jak napisałeś, i zakłócenia były znacznie mniejsze, bo nie za każdym razem linia wyzwalała się sama. Fakt faktem nie było jeszcze idealnie, bo czasem powstawała loteria, ale to zawsze jakiś krok naprzód. Swoją drogą w moim dziwacznym urządzeniu urwałem ośkę od silnika, więc dalej nic nie zrobię, dlatego póki co dziękuję za dotychczasowe odpowiedzi.

Pozdrawiam

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...