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

[C][ATmega8] - Robot przestaje działać gdy podłączam serwo

Cargo1906 29 Wrz 2013 19:22 2589 8
  • #1 12791547
    Cargo1906
    Poziom 9  
    Witam,
    jestem w trakcie budowy robota. Będzie to połączenie line follower'a z robotem, którego zadaniem będzie omijanie przeszkód. Jako czujniki linii zastosowałem TCRT5000, a moduł odpowiedzialny za wykrywanie przeszkód to dwie diody IR oraz odbiornik TSOP. Częstotliwość dla diód generowana jest przez ATTiny13A. Która wysyła sygnał na piny PD2 i PD3 ATmegi, wraz z nadejściem odpowiedniego stanu generowane jest przerwanie.
    Całość składa się z trzech płytek uniwersalnych (całość już polutowana). Na pierwszej z nich 3 czujniki linii, na drugiej ATmega8 i mostek H (l293d), a na trzeciej właśnie ATTiny oraz diody i odbiornik IR.

    Kod już jest praktycznie gotowy, wklejam go poniżej. Na początku wszystko złożyłem na płytce stykowej i całość działała jak należy. Dalej układ podzieliłem na wspomniane 3 moduły i tu pojawił się problem. O ile moduł czujnika linii, jak i moduł z TSOP'em działają poprawnie, tak moduł z ATmegą już niekoniecznie, a właściwie działanie psuje się, gdy podpinam serwa.

    Układ zasilam przez stabilizator 7805, 4 bateriami AA 1.5V, wynosi ono niecałe 5V. Natomiast do pinu VCC2 mostka H podpinam napięcie filtrowane kondensatorami bezpośrednio z wyjścia koszyka, wynosi ono ponad 6V.

    Na początku wydawało mi się, że problem leży po stronie płytki z modułem z ATmegą i mostkiem H. Znalazłem jedno zwarcie, które poprawiłem, więcej błędów nie widzę. Teraz gdy sprawdzam napięcie na pinach do których podpinam serwa wszystko jest ok - gdy nie ma przeszkody napięcie jest dodatnie, gdy jest robot się zatrzymuje, po czym ją omija - tak ma być w założeniu. Natomiast gdy podepnę serwa robot zachowuje się jakby nieustannie miał przed sobą przeszkodę, tj. zatrzymuje się, po czym omija ją i tak w kółko :?

    Serwa to przerobione TowerPro MG90S, bez elektroniki. Cały układ po złączeniu na płytce stykowej (łącznie z serwami) działa poprawnie, więc serwa pracują jak należy.

    Myślałem, że wina może być zasilania - jednak gdy ATmegę i mostek mam wpięty w płytkę stykową, a zasilanie jest bez zmian, wszystko działa poprawnie.
    Dzisiaj pół dnia szukałem zimnych lutów, zwarć - niczego nie znalazłem. Ponadto dlaczego program działałby poprawnie bez serw, a z serwami już się zawieszał? :|
    Może wina jest po stronie kodu? Dlaczego więc na płytce stykowej ten sam kod działa jak powinien? Gdy przenoszę ATmegę na płytkę uniwersalną i dopóki nie podłączę serw nadal wszystko działa poprawnie. Problem zaczyna się gdy do płytki uniwersalnej podłączę serwa :/

    Możliwe jest, że same serwa generują takie zakłócenie, że zaburza ono pracę ATmegi? Dlaczego więc, nie dzieje się tak gdy układ załączam na płytce stykowej? Wówczas serwa niczego nie zakłócają.

    Oto mój kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Kod nie jest jeszcze ostateczny, chciałbym by robot inaczej reagował na przeszkodę, mimo to teraz skupiłem się na tym, by w ogóle działał jak powinien

    Schemat modułu z ATmegą (modułu z TSOP'em i czujnikami linii na razie nie wklejam, te bowiem działają poprawnie):

    [C][ATmega8] - Robot przestaje działać gdy podłączam serwo


    Będę wdzięczny za każdą pomoc każdy pomysł dlaczego układ po podłączeniu serw przestaje działać. Ja siedzę nad tym trzeci dzień z rzędu i niczego mądrego nie wymyśliłem :cry:

    Pozdrawiam i z góry dziękuję za pomoc
  • #2 12791672
    lekto
    Poziom 35  
    Brak kondensatorów odsprzęgających.
  • #3 12792047
    Konto nie istnieje
    Poziom 1  
  • #4 12792435
    BlueDraco
    Specjalista - Mikrokontrolery
    Jak napisał atom1477 - za niskie napięcia dla 7805 (albo zmień stabilizator na LDO), ponadto brak rezystorów przy LED, który powoduje b. duże obciążenie prądowe - możliwość uszkodzenia LED lub mikrokontrolera + spadek napięcia zasilania.
  • #5 12792891
    Cargo1906
    Poziom 9  
    Wiem, że 7805 wymaga przynajmniej 7V, jednak odkąd go stosuje chyba jeszcze nigdy nie poprowadziłem dla niego więcej niż 6,5V, bo tyle daje mój zasilacz (przerobiona ładowarka). Wówczas wszystko działało i stabilizator obniżał napięcie o te 1,5V stąd uznałem, że te 7V na wejściu ma pewne widełki. Gdy układ załączam na płytce stykowej zasilanie jest to samo - koszyczek z 4 bateriami AA, wynosi trochę ponad 6V i układ działa jak powinien.

    lekto napisał:
    Brak kondensatorów odsprzęgających.


    W którym miejscu ich brakuje?

    Przy diodach LED oczywiście są rezystory 1k, przepraszam, ale umknęło mi to przy tworzeniu schematu.
  • #6 12793031
    dondu
    Moderator na urlopie...
    Cargo1906 napisał:
    Wiem, że 7805 wymaga przynajmniej 7V, jednak odkąd go stosuje chyba jeszcze nigdy nie poprowadziłem dla niego więcej niż 6,5V, bo tyle daje mój zasilacz (przerobiona ładowarka). Wówczas wszystko działało i stabilizator obniżał napięcie o te 1,5V stąd uznałem, że te 7V na wejściu ma pewne widełki.

    W elektronice nie ma "uznaniowości". Albo ufasz w to co określił producent w dokumentacji i stosujesz się do tego, albo pracujesz poza dopuszczalnymi parametrami. Jeżeli to drugie, to nie możesz się spodziewać prawidłowej pracy.

    Dlatego poczytaj nieco o regulatorach napięcia, by zrozumieć dlaczego Twoje podejście do elektroniki jest obarczone ryzykiem błędnego działania urządzenia i dlaczego powinieneś wykorzystać regulator LDO: http://mikrokontrolery.blogspot.com/2011/03/Regulatory-napiecia-stabilizatory.html


    Cargo1906 napisał:
    lekto napisał:
    Brak kondensatorów odsprzęgających.

    W którym miejscu ich brakuje?

    To jest proste do ustalenia. Sięgasz po dokumentację każdego zastosowanego półprzewodnikowego elementu elektronicznego i znajdujesz tam informację w tym zakresie. A jeżeli nie znamy angielskiego, to zaglądamy do artykułów z działu Zasilanie i zakłócenia: http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_zasilanie_zaklocenia


    Cargo1906 napisał:
    Serwa to przerobione TowerPro MG90S, bez elektroniki.

    Czyli wszelkie zabezpieczenia także usunąłeś. Powinieneś więc poznać zjawisk oraz metodę jego eliminacji: http://mikrokontrolery.blogspot.com/2011/03/przekaznik-i-zaklocenia.html Zakłócenia te eliminować należy u źródła, a elektronika, którą usunąłeś takie zabezpieczenia zapewne posiadała.

    Następnie poprawiasz schemat, pokazując dodatkowo część zasilającą i wtedy dopieszczamy go tak, by działał poprawnie.

    ... a w międzyczasie przeglądasz spis treści na w/w stronie, by nabyć wiedzę, która będzie Ci potrzebna, tak jak powyższa.
  • #7 12793372
    Konto nie istnieje
    Poziom 1  
  • #8 12793952
    Cargo1906
    Poziom 9  
    Dzięki wszystkim za odpowiedzi, porady zawsze w cenie :)

    Na pewno użyję stabilizatora LDO, jednak w tym momencie takiego nie posiadam, a sklep elektroniczny odwiedzę najwcześniej połowie tygodnia.

    Wstawiam poprawiony schemat:

    [C][ATmega8] - Robot przestaje działać gdy podłączam serwo

    Dodałem kondensatory przy serwach, co poprawiło jakość działania przy pracy z jednym serwem, zawieszało się ono bardzo rzadko. Jednak gdy podłączam oba w jednym czasie wówczas wyłączają się przy napotkaniu przeszkody.
    Na pewno uzbroję się w stabilizator LDO. Nie wstawiam żadnego schematu zasilania, bo nie wiem jeszcze jaki stabilizator uda mi się nabyć, a dopiero potem stworzę schemat na podstawie datasheetu.

    Tu mój schemat z 7805:

    [C][ATmega8] - Robot przestaje działać gdy podłączam serwo
  • #9 12794048
    Konto nie istnieje
    Poziom 1  
REKLAMA