Robot na LPT i mikrokontrolerze Gr I4.2, Informatyka Wtorek 16:40
Transkrypt
Robot na LPT i mikrokontrolerze Gr I4.2, Informatyka Wtorek 16:40
Robot na LPT i mikrokontrolerze Gr I4.2, Informatyka Wtorek 16:40 Skład grupy Imię i nazwisko Marcin Domaoski Michał Matłoka Łukasz Mocek Szymon Napierała Dawid Neumann Michał Nienartowicz Filip Nowak Wiesław Nowak Bartosz Piasecki Wojciech Piasecki Patrycja Płatek Andrzej Przybyszewski Paweł Rzanny Michał Witczak Michał Zimniewicz Zadanie Pomoce drobne Koordynator projektu, elektronika, lutowanie, sprawozdanie Wytrawianie płytki Mechanika Elektronika, wytrawianie płytki Mechanika Oprogramowanie Przygotowanie trasy, crossowanie kabla LPT, Przygotowanie filmu, pomoce drobne Oprogramowanie, elektronika 1. Wstęp Naszym zadaniem było skonstruowanie robota poruszającego się po białych kartkach A4. Jego sterowanie miało odbywad się przez port LPT z wykorzystaniem układów 8259 i 8253. Zgodnie z radami udzielonymi na wykładzie postanowiliśmy podzielid prace na 3 części: Mechanika Elektronika Oprogramowanie Na swojej drodze napotkaliśmy wiele problemów, które również opisaliśmy w naszym sprawozdaniu. 2. Mechanika Postanowiliśmy zbudowad robota poruszającego się na trzech kołach. Do dwóch z nich podłączone zostały silniki. Trzecie obraca się samoczynnie podążając za kierunkiem jazdy. Jako obudowę użyliśmy pudełko po klockach Lego Technic. Zaważyły o tym jego waga – lekkie bo plastikowe, oraz wymiary – idealnie pasujące do rozmiaru zaprojektowanej płytki. Silniki postanowiliśmy kupid w firmie Wobit (Mobot). Niestety ale czas realizacji zamówienia wyniósł, aż 5 dni. Wybraliśmy silniki prądu stałego z przekładnią 1:200, dające 35 obrotów na minutę (co przy kołach o średnicy około 5cm daje prędkośd 10cm/s). Robot zasilany jest razem 7 bateriami AA umieszczonymi w dwóch koszyczkach. Pierwszy z nich, z czterema bateriami służy do zasilania silników, drugi z trzema do zasilania układów elektronicznych. Wbrew początkowych przypuszczeo iż jedna bateria nie będzie dawała 1,5V, okazało się, że cztery dają 6,3V. Dlatego postanowiliśmy podzielid zasilanie. Niestety, ale po przylutowaniu kabelków do jednego z silników ten przestał działad. Jak się okazało firma Wobit oferuje na miejscu silniki tylko po 40 euro netto, więc kilku z nas w poniedziałek (dzieo przed pierwotnym terminem zaliczenia projektu) wybrała się na „wycieczkę” do Pniew. Nie wiele brakowało a skooczyło by się na pchaniu samochodu z powodu braku paliwa… Czujniki zostały przyklejone taśmą izolacyjną do dwóch „czułek” uformowanych z drutów. Dzięki ich niewielkiej elastyczności możemy zmieniad odległośd czujników od podłoża. Płytka zostaje przymocowana do obudowy za pomocą dwóch śrub. 3. Elektronika Płytka została zaprojektowana przyszłościowo. Uwzględniliśmy w jej schemacie fakt, iż za kilka tygodni otrzymamy zadanie zbudowania robota na mikrokontrolerze. Dlatego już teraz użyliśmy mikrokontroler ATmega8, który działając w trybie LPT tylko przekierowuje sygnały ze swoich wejśd na wyjścia i odwrotnie. Dodatkowo umiesiliśmy dwa przełączniki na obudowie, jeden z nich pozwala włączyd/wyłączyd robota, drugi służy do przełączania trybów LPT/mikrokontroler. Najbardziej problematyczny okazał się proces trawienia płytki. Pierwsza próba zakooczyła się porażką – częśd ścieżek się nie wytrawiła. Druga poszła lepiej, mimo to dwie ścieżki miały ubytki, a podczas wiercenia otworów na elementy elektroniczne złamało się wiertło. Podjęliśmy jednak jeszcze jedną próbę, która zakooczyła się sukcesem. Wtedy jednak pojawiły się kolejne problemy – duża liczba elementów i koocówek do kabelków do przylutowania, a także złe podłączenie linii do złącza LPT. Okazało się, że na płytce zostało wytrawione odbicie lustrzane tego do czego dążymy (program EAGLE dodał na schemacie złącze męskie zamiast żeoskiego), więc postanowiliśmy rozebrad koocówkę kabla i pozamieniad parami odpowiednie pary kabelków. W ten sposób powstała nowatorska konstrukcja– skrosowany kabel LPT! W swojej konstrukcji początkowo użyliśmy dwóch czujników TCRT5000. Ich przewaga nad CNY70 to odległośd działania – około 12 mm w porównaniu do 0,5mm CNY70. Niestety ale w trakcie testowania jeden z nich uległ przepaleniu. Do tego testy wykazały iż, różnica napięd między nawierzchnią białą a czarną była zbyt mała, dlatego postanowiliśmy jednak użyd CNY70. Problem sprawiły nam tranzystory sterujące silnikami. To właśnie z ich powodu robot nie chciał działad na zajęciach przed świętami. Poznaoskie „zagłębia” elektroniczne to: Ul. Kwiatowa, ul. Łąkowa Skrzyżowanie ulic J. Matejki i H. Siemiradzkiego Chwaliszewo Ul. Gruszkowa - Wobit 3.1. LPT W naszym robocie wykorzystujemy linie: D0, D1 – silniki ACK - przerwanie Paper End , Select Status – czujniki GND - masa 3.2. ATmega8-16PU Podłączenie programatora: PB3, PB4, PB5, PC6. Przełącznik LPT/mikrokontroler PD4 Czujniki PD2, PD3 Wspólna masa – GND Zasilanie z 3 baterii – VCC. Silnik prawy – PC3 Silnik lewy – PC2 Przerwanie dla LPT - PC4 Stan czujników dla LPT - PC1, PC0 Mikroprocesor 8 bitowy FLASH 8K EEPROM 512B RAM 1024 b Zegar 16Hz 3 timery Minimalne napięcie zasilania 4,5V Maksymalne napięcie zasilania 5,5V 3.3. Schemat płytki Każdy czujnik składa się z dwóch „części” – emitera i detektora, stąd wynikają 2 linie podłączenia napięcia. Sygnały z czujników przechodzą przez komparatory, porównujące poziom napięcia z ustawionym na potencjometrze. Tranzystory na liniach prowadzących z ATmegi do LPT były wymagane do osiągnięcia 0V na danych liniach. Tranzystory MOSFET służą do włączania/wyłączania silników. Aby uruchomid silnik wysyłana jest do niego logiczna '1', aby wyłączyd logiczne '0'. Czujnik na białej trasie daje logiczne '0', a na czarnej logiczne '1'. 1. 2. 3. 4. 5. Złącze LPT. Miejsce podłączenia programatora. ATmega8. Tranzystory MOSFET zasilające silniki. Miejsca podłączenia silników. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Miejsce podłączenia + zasilania silników. Masa zasilania silników. Miejsce podłączenia zasilania ATmegi. Podłączenie włącznika robota. Przełącznik LPT/Mikrokontroler. 3 tranzystory na drodze ATmega -> LPT opisane wyżej. Miejsce podłączenia czujników. Miejsce podłączenia komparatorów (2 linie czujniki-> komparatory, 2 linie komparatory >ATmega) Kondensator. Oporniki na liniach zasilających czujniki. Oporniki na liniach dochodzących do tranzystorów MOSFET. W obecnej wersji nie używane. 4. Oprogramowanie Od samego początku pojawiły się problemy. Turbo C pod DOS’em nie chciał skompilowad nawet prostego programu „Hello World”. Potem nie chciał przyjmowad wstawek asemblerowych. Po instalacji nowszej wersji pokonaliśmy ten problem. Okazała się, że wersja 2.0 w ogóle nie obsługiwała wstawek asemblerowych. Wtedy jednak pojawiły się problemy z połączeniem przez LPT. Działało przekazywanie danych w kierunku wyjściowym, ale nie wejściowym. Po wielu godzinach walk okazało się, że przyczyną problemów było uszkodzenie złącza w używanym laptopie (prawdopodobnie jeszcze przed rozpoczęciem prac). Przed uruchomieniem robota sprawdzamy stan zworki na płytce opisanej AT/LPT – wybranie trybu pracy: w pierwszym sama ATmega steruje robotem, w drugim komputer przez LPT. 4.1. LPT W trybie LPT praca ATmegi sprowadza się do wykonywania w kółko pętli, w której sprawdzamy stan 4 wejśd: sygnały z dwóch czujników informacja z LPT sterująca dwoma silnikami i podajemy odpowiednie informacje na 5 wyjśd: informacja sterująca dwoma silnikami (przepisywana bez zmian z wejścia na wyjście) stan dwóch czujników dla LPT (przepisywany bez zmian) informacja dla LPT (pin ACK) o wystąpieniu przerwania (zbocze rosnące i stan wysoki na czas >5us) Jedyną więc nietypowością w przebiegu pętli (poza "suchym" przepisywaniem 4 bitów z wejśd na wyjścia) jest sprawdzanie czy zmienił się (w jakikolwiek sposób) stan obu czujników. Jeśli tak to na pin ACK portu LPT podawana jest informacja. Program na laptopie ma odpowiednio zaprogramowane na to przerwanie i reaguje na nie manipulując odpowiednio silnikami. Program realizuje prosty algorytm, jeśli zostanie zgłoszone przerwanie, sprawdzamy, który z czujników je wygenerował, a następnie wyłączamy silnik po przeciwnej stronie. Jeśli dwa czujniki znajdą się jednocześnie poza planszą, wybieramy ten sam kierunek co ostatnio. Komunikacja komputer<-> LPT odbywa się przez trzy porty: 378 – port danych 379 – port statusu 37A – port kontrolny Na porcie kontrolnym ustawiamy konfigurację (odblokowanie przerwao itp.) Port danych służy do wysyłania danych w kierunku PC->LPT->robot. Bity 0 i 1 tego portu odpowiadają pinom D0 i D1 w gnieździe LPT. Prowadzą przez ATmegę do silników. Port statusowy służy do odbierania danych (kierunek robot->LPT->PC). Bit 4 (2^4 = 16) i 5 (2^5=32) tego portu to piny Paper end (12) i Select Status (13) w gnieździe LPT, na które podawana jest z ATmegi informacja o stanie czujników. 4.2. ATmega8 Udało się nam nawet zaimplementowad wstępną wersję oprogramowania dla ATmegi umożliwiającą samodzielne działanie. Program ten nie został jeszcze jednak w pełni przetestowany. Używaliśmy AVR Studio. Program najpierw rejestruje obsługę dwóch przerwao, po czym wchodzi w pętlę nieskooczoną. Pętla jest przerywana tylko wystąpieniem przerwania generowanego przez każdy z czujników z osobna gdy zmieni się jego stan. Funkcja obsługi przerwania włącza tylko lub wyłącza odpowiedni silnik. Kody programów załączone na koocu sprawozdania. 5. Podsumowanie i wnioski Konstrukcja robota sprawiła nam wiele problemów. Wynikało to z niewielkiego doświadczenia w dziedzinie projektowania układów elektronicznych a także z niezależnych od nas zdarzeo losowych. Na budowę poświęciliśmy ponad 30 godziny. Osoby obecne przy większości spotkao zostały pogrubione w tabeli na pierwszej stronie. Giełdy staroci nie zawsze są tanie (a wręcz bardzo drogie w porównaniu do Allegro!). Assembler ATmegi różni się od poznanego przez nas assemblera 8080. 13 dni to zdecydowanie za mało czasu na zbudowanie porządnego robota z odzysku. Wbrew pozorom 4 baterie AA nie dają mniej niż 6V a więcej(nawet 6,3V). Kierunek kręcenia się wiertła ma znaczenie (wsteczny biegiem wiertarki da się wywiercid dziurę w płytce, aczkolwiek są pewne problemy z przewierceniem plastiku). Jadąc do Pniew pamiętaj zatankowad. Nie należy ufad programowi EAGLE.