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 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):
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
Pozdrawiam i z góry dziękuję za pomoc
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++
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):
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
Pozdrawiam i z góry dziękuję za pomoc
