Jak to działa?
Przy projektowaniu układu moim głównym założeniem było stworzeniem uniwersalnej, nieskomplikowanej elektroniki dla robota. Jej uniwersalność miała polegać na łatwej rozbudowie i na prostym dostosowywaniu do nowej mechaniki (silniki, nowe elementy wykonawcze itd.). Główna funkcjonalność skupiona jest na pierwszej z dwóch płytek. Jej schemat widoczny jest na rysunku 1.
Centralnym elementem jest mikroprocesor AVR Atmega16, który połączony jest z układem MAX232 oraz ekspander portów sterowany przez I²C PIC8574T. Oprócz wyżej wymienionych trzech układów można znaleźć jeszcze wyświetlacz LCD 2×16 znaków, blok zasilania, kilka kontrolek oraz masę złączy służących do rozbudowy. Całość miała być zasilana z pakietu li-pol 7,4V, więc zastosowałem stabilizator L7805 oraz kilka kondensatorów, które filtrują stabilizowane napięcie, znajdują się one zarówno przed i za stabilizatorem. Nie należy z nich rezygnować, gdyż mogą nastąpić problemy podczas zasilania silników z tego samego źródła zasilania, co elektronika. Tak jak było już wspomniane, głównym układem jest ATmega16 z wyprowadzonym przyciskiem do resetu, złączem ISP oraz kwarcem. Prócz tych podstawowych elementów, na płytce można znaleźć następujące złącza: 2×5 pin – uniwersalna linia zasilania 5V, 2×5 pin – złącze do sterownika silników, 1×3 pin – RS232, 1×3 pin – do podłączenia serwomechanizmów (2 sztuki), 1×2 pin – zasilanie serwomechanizmów, 1×4 pin – wyjścia ekspandera portów (2 sztuki), 1×16 pin – wyświetlacz LCD 2×16 znaków zgodny ze sterownikiem HD44780, 1×3 pin – czujnikach Sharp np.: GP2Y0A02Y (2 sztuki), 2×2 pin – miejsce dla zworki łączącej interfejs RS232 z układem MAX232, 1×2 pin – I²C, 1×2 – zasilanie silników sterownych przez osobny moduł, 1×6 pin – porty I/O (ADC), 1×2 pin – złącze zasilania całości, 1×2 pin – złącze dla przełącznika. Druga płytka to sterownik silników. Jego schemat zaprezentowany jest na rysunku 2.
Sterownik silników to osobny i niezależny moduł oparty na układzie L298N. Pozwala on na niezależne sterowanie kierunkiem obrotów silnika i ich prędkością. Całość jest prostym układem wzorowanym na schematach z noty katalogowej układu. Warto zwrócić uwagę, że L298N na wyjściach nie ma diod zabezpieczających przed prądami wstecznymi wytwarzanymi przez silnik. Należy dodać 8 diod na wyjściu układu (po dwie na każde wyjście), tak jak widać to na schemacie. Producent w nocie katalogowej zaleca użycie szybkich diod, ja użyłem diody 1N5819. Układ L298N używany był przeze mnie wielokrotnych i to w różnych formach, jednak męczyło mnie już to, że przy każdym rozmontowywaniu układu (wyjmowaniu płytek z obudowy) wyjęcie sterownika silników należało poprzedzić wypięciem aż 9 przewodów (3 na każdy silnik, masa, zasilanie silników, zasilanie logiki układu), dlatego w tym projekcie sterownik z główną płytką postanowiłem połączyć za pomocą 10-żyłowej taśmy i złączy takich jak do programatora (które nie umożliwiają odwrotnego podłączenia). Aby nie robić zamieszania z jednym kablem, który miałby doprowadzać zasilanie do silników, zrobiłem dla niego osobne złącze na płycie głównej (złącze ZAS_SIL), aby więc połączyć silniki z płytą główną, należy: podłączyć je do modułu z L298N, moduł połączyć taśmą z płytą główną, do złącza JP15 na płycie głównej dołączyć zasilanie dla silników. Zaprojektowane w programie Eagle płytki drukowane pokazane są na rysunkach 3 i 4.
Czujniki
W opisie nie przedstawiam żadnych czujników, bo tak jak wspomniałem, układ uważam za zestaw uruchomieniowy i każdy może dołączyć do niego to, co mu się podoba. Na płytce głównej znajdują się dwa złącza do czujników analogowych np. do dalmierzy SHARP. Inne czujniki można podłączyć do pozostałych portów.
Mechanika
Konstrukcja robota wykonana jest z laminatu dwustronnego pokrytego czarnym sprayem szybkoschnącym. Projekt mechaniki został wykonany w Corelu, ale można go również wykonać w dowolnym innym programie graficznym. Można też zaprojektować sobie robota w programach CAD, ja naszkicowałem później konstrukcję w Autodesk Inventor (screeny projektu widoczne są na rysunkach 5 i 6).
Następnie projekt wydrukowałem na papierze samoprzylepnym, który później nakleiłem na laminat. Wzorując się na liniach projektu wydrukowanego na papierze wyciąłem laminat najpierw małą wiertarką z tarczą tnącą, a następnie już dokładniej doszlifowałem całość pilnikiem. (Jeśli ktoś nie dysponuje akurat papierem samoprzylepnym, a robi sam płytki drukowane, może również wydrukować projekt na papierze termotransferowym, a następnie przeprasować go na płytkę, tak samo jak wzory ścieżek.) W ramie robota w odpowiednich miejscach są otwory na metalowe łączniki oraz na dwa serwomechanizmy modelarskie, napędzające całą konstrukcję. Prócz boków konstrukcji, do których przykręcane są silniki, wszystkie inne elementy są przykręcane na metalowych dystansach do płytek. Na etapie projektowania warto też zaplanować miejsca na otwory, przez które przechodzić będą przewody, u mnie są to 4 niewielkie prostokątne otwory. Tak jak wspomniałem, napędem całości są dwa przerobione na pełny obrót serwomechanizmy modelarskie, nie miałem pod ręką żadnego ciekawego materiału na koła, więc wykorzystałem zakrętki od słoików, na które nakleiłem później gumową uszczelkę do okien o profilu E. Jako trzeci punkt podporu wykorzystałem kulę umieszczoną w łożysku, można to znaleźć w każdym markecie budowlanym.
Program
Cały urok tej konstrukcji polega na tym, że każdy, kto choć trochę potrafi programować, może sam napisać dowolny program. Ja piszę programy w BASCOM-ie, jest to język bardzo łatwy, więc każdy na podstawie schematu konstrukcji bez problemu powinien napisać program dla robota.
Możliwości rozbudowy
Właśnie łatwość rozbudowy miała być głównym atutem tej konstrukcji. Do zwiększenia możliwości pojazdu można wykorzystać wolne porty I/O mikrokontrolera oraz RS232 i interfejs I²C. Ja nie dobudowywałem jeszcze żadnych specjalnie skomplikowanych układów, dodałem tylko enkodery – szybko przerobiony układ z czujnikami linii. W planach mam dobudowanie czujnika z komputerowej myszki optycznej, który miałby informować o realnym przesunięciu konstrukcji oraz dodanie skanera 2D opartego na 2 microserwach i 2 czujnikach optycznych Sharpa.