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.

Podobne dokumenty