Autonomiczny robot mobilny w kategorii linefollower MORPROF

15
Autonomiczny robot mobilny w kategorii linefollower MORPROF Autorzy projektu: Marek Płóciennik 145396 Marcin Wytrych 145419 Koordynator Projektu: Dr inż. Grzegorz Granosik

Transcript of Autonomiczny robot mobilny w kategorii linefollower MORPROF

Page 1: Autonomiczny robot mobilny w kategorii linefollower MORPROF

Autonomiczny robot mobilny w kategorii

linefollower

MORPROF

Autorzy projektu:

Marek Płóciennik 145396

Marcin Wytrych 145419

Koordynator Projektu:

Dr inż. Grzegorz Granosik

Page 2: Autonomiczny robot mobilny w kategorii linefollower MORPROF

Spis Treści:

1. Opis projektu

2.Konstrukcja

3. Elektronika

4. Sterowanie

5. Podsumowanie

Page 3: Autonomiczny robot mobilny w kategorii linefollower MORPROF

1. Opis projektu

Głównym założeniem realizowanego projektu było zbudowanie

autonomicznego robota mobilnego w kategorii linefollower. Takie roboty

mobilne mają za zadanie przejechać wyznaczoną trasę w jak najkrótszym

czasie. Trasa zbudowana jest z białej powierzchni i czarnej ok. 2 cm

szerokości linii, może składać się z przeróżnych odcinków określonych w

regulaminie. Przewidywany czas końcowy realizacji projektu „MORPROF”

był przewidziany na około 20 września 2009 r., ponieważ 28 września

2009r. organizowano zawody „Robotic Arena” we Wrocławiu. Aby

wystawić „MORPROFA” należało jednak przeprowadzić testy zachowania

się konstrukcji na torze.

Kolejnym założeniem było sprawdzenie możliwości sterowania robotem

za pomocą implementacji różnych typów oraz algorytmów sterowania np.

regulatora PID w celu płynnej kontroli pokonywanej trasy.

rys.1. Powyższe zdjęcie przedstawia przykładowy przebieg trasy dla robotów

kategorii linefollower.

Page 4: Autonomiczny robot mobilny w kategorii linefollower MORPROF

2. Konstrukcja

Aby robot mógł wystartować w zawodach jego konstrukcja musi spełniać

wymagania regulaminu. W regulaminie jest napisane że:

- Główny obrys robota musi mieścić się na kartce papieru formatu A4.

- Waga robota nie jest ograniczona.

- Robot musi poruszać się w sposób autonomiczny. Komunikacja z

robotem w czasie przejazdu trasy jest zabroniona (oprócz startu i

zatrzymania robota).

- Robot powinien być tak zaprojektowany by można było go uruchomić

na znak dany przez sędziego.

Podstawą konstrukcji całego robota był laminat (tworzywo sztuczne) do którego

zostały przymocowane silniki, czujniki oraz pakiety zasilające.

rys.2. Powyższy rysunek przedstawia widok z góry całej konstrukcji.

Całość napędzały 2 silniki DC z przekładnią o napięciu zasilania 12V i

prędkości 1200 obr/min. Silniki zostały zamontowane przy użyciu aluminium,

ponieważ jest to materiał łatwy w obróbce oraz łatwo dostępny.

Page 5: Autonomiczny robot mobilny w kategorii linefollower MORPROF

Układ napędowy oraz nośny składa się z:

- silnik DC (rys.3. oznaczone 2);

- elastycznego sprzęgła – służy do redukcji naprężeń oraz niedokładności

wynikających z ręcznej konstrukcji (rys.3. oznaczone 3);

- kół napędzających konstrukcję (rys.3. oznaczone 4);

- kółek realizujących stabilność konstrukcji oraz zabezpieczenie przed

podnoszeniem się lub opuszczaniem za nisko palety czujników (rys.3.

oznaczone 1);

- palety czujników (rys.3. oznaczone 4);

rys.3. Widok z dołu 1) kółka pomocnicze; 2) silniki; 3) elastyczne sprzęgło; 4)

koła napędzające; 6) regulacja palety czujników względem podłoża.

Kółka pomocnicze to kółeczka napinające taśmę magnetofonową w

odtwarzaczach kasetowych.

Całość zasilają dwa pakiety Ni-Mh używane w modelarstwie do modeli zdalnie

sterowanych RC o parametrach 7.2 V; 4000 mAh.

1

2

(

3

4 4

5

6

Page 6: Autonomiczny robot mobilny w kategorii linefollower MORPROF

3. Elektronika

Układ sterowania opiera się na prostej konstrukcji elektronicznej, bazującej na

mikrokontrolerze Atmega 8, podwójnym mostku H (układ L298) oraz

czujnikach odbiciowych QRD1114. Tworząc układ sterowania korzystaliśmy z

dokumentacji technicznej poszczególnych elementów.

Schematy oraz projekty płytek drukowanych zamieszczamy poniżej.

rys.4. Stabilizator zasilający

układ elektroniczny +5V.

rys.5. Schemat podłączenia mikrokontrolera z pozostałymi elementami.

Poniższe rysunki przedstawiają projekty płytek drukowanych oraz gotowe

zmontowane układy.

Page 7: Autonomiczny robot mobilny w kategorii linefollower MORPROF

rys.6. Projekt płytki. rys.7. Gotowy układ płytki.

rys.8. Projekt płytki mostka H. rys.9. Zmontowany układ mostka H.

Kolejne rysunki przedstawiają układy połączeń, wyprowadzeń oraz zawartości

komponentów

Page 8: Autonomiczny robot mobilny w kategorii linefollower MORPROF

rys.10. Schemat budowy czujnika linii. rys.11. Sposób podłączenia czujnika

linii.

rys.12. Schemat wewnętrzny układu L298.

rys.13. Widok układu

L298 oraz oznaczenie jego

wyprowadzeń.

Page 9: Autonomiczny robot mobilny w kategorii linefollower MORPROF

rys.14. Połowa układu L298 –jeden pełny mostek H.

Paleta czujników została zrealizowana na płytce uniwersalnej (rys.3

oznaczone 5) na podstawie schematu połączeń pokazanych na rys.7. Rezystory

umieszczone w obwodzie fotorezystora i diody ograniczają prąd płynący przez

te elementy. Sygnał podawany na wejście mikrokontrolera to napięcie w

zakresie 0-5V.

W sytuacji kiedy czujnik widzi białą powierzchnię, promieniowanie diody

odbija się od niej, polaryzuje fototranzystor, w wyniku czego przewodzi złącze

C-E. Napięcie na wyjściu „signal” (rys.7.) ma bardzo małą wartość (co jest

uzależnione od charakterystyki czujnika). W chwili gdy czujnik trafia na czarną

powierzchnię, promieniowanie diody zostaje przez nią pochłonięte. Skutkiem

tego jest brak polaryzacji tranzystora. Przez złącze C-E nie płynie prąd w

wyniku czego na wyjściu „signal” (rys.7.) jest stan wysoki (napięcie ok. 5V).

Cały układ z mikrokontrolerem działa na poziomach napięć zgodnych z logiką

TTL (0-5V).

Poniżej jest podana ch-ka prądu kolektora (fototranzystor w czujniku

QRD1114) w funkcji odległości. Wynika z niej że najlepsze osiągi są w

granicach 20-30 milsów. W milimetrach jest to przedział od 0,5080 do 0,7620.

Czujniki te sprawdzają się nawet przy odległości do około 5mm.

Silniki są sterowane za pomocą drivera zbudowanego z układu „L298” i

kilku elementów dodatkowych zgodnie z notą katalogową. Praca drivera jest

sterowana za pomocą dwóch bitów ustawiających kierunek oraz trzeciego bitu,

z którego generowany jest sygnał MSI (PWM) sterujący prędkością silnika.

Page 10: Autonomiczny robot mobilny w kategorii linefollower MORPROF

rys15. Powyższy rysunek przedstawia charakterystykę wyjścia fototranzystora

czujnika QRD1114 w zależności od odległości. Skala jest podana w milsach.

rys.17. Charakterystyka czujników w zakresie przejścia pomiędzy

powierzchniami białą i czarną.

Page 11: Autonomiczny robot mobilny w kategorii linefollower MORPROF

4. Sterowanie

Sterowanie robota jest zrealizowane w postaci programu napisanego w języku C

i zaimplementowanego w mikrokontrolerze. Poniżej jest zamieszczony listing

programu.

#include <avr/io.h> #define F_CPU 16000000 #include <util/delay.h> #define bc bit_is_clear #define bs bit_is_set //konfiguracja wejść, wyjść, ustawienie timerów, inicjalizacja PWM void pwm_init() { //ADC6 = 0x01; //ADC7 = 0x01; DDRC = 0xC0; DDRB = 0x06; //|= (1<<PB1)|(1<<PB2); DDRD = 0xF0; //|= (1<<PD4)|(1<<PD5)|(1<<PD6)|(1<<PD7); TCCR1A |= (1<<COM1A1) | (1<<COM1B1); TCCR1A |= (1<<WGM11); TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS11); ICR1 = 1023; OCR1B = 0;//wpisujac tu odpowiednie wartosci zmieniasz kierunek //obrotu badz zatrzymijesz serwo OCR1A = 0; PORTD |=(1<<4); //PORTD |=(1<<4); //ustawienia bitów na atm_8 do //sterowania silnikami PORTD &=~(1<<5); //PORTD &=~(1<<5) PORTD |=(1<<6); //PORTD |=(1<<6) PORTD &=~(1<<7); //PORTD &=~(1<<7); } void pwml(int pwm, int kierunek) //lewy silnik { OCR1B = pwm; if (pwm==0) { PORTD |= (1<<4); PORTD |= (1<<5); //zwarcie } else { if (kierunek==1) { PORTD |=(1<<4); PORTD &=~(1<<5); //przód } else { PORTD |=(1<<5); PORTD &=~(1<<4); //tył } } } void pwmr(int pwm, int kierunek) //prawy { OCR1A = pwm;

Page 12: Autonomiczny robot mobilny w kategorii linefollower MORPROF

if (pwm==0) { PORTD |= (1<<6); PORTD |= (1<<7); //zwarcie } else { if (kierunek==1) { PORTD |=(1<<6); PORTD &=~(1<<7); //przód } else { PORTD |=(1<<7); PORTD &=~(1<<6); //tył } } } int main() { pwm_init(); while(1) { if( bs(PINC,5)) // włączenie krańcowych czujników oznacza //obrót w miejscu { pwml(400,2); pwmr(700,1); goto s; } if( bs(PINC,0)) { pwml(700,1); pwmr(400,2); goto s; } if( bs(PINC,4)) // włączenie pośrednich czujników oznacza //obrót z jazdą do przodu ograniczoną prędkością { pwml(200,1); pwmr(650,1); goto s; } if( bs(PINC,1)) { pwml(650,1); pwmr(200,1); goto s; } if( bs(PINC,3)) // włączenie środkowych czujników oznacza //jazde do przodu z pełną prędkością { pwml(600,1); pwmr(600,1); goto s; } if( bs(PINC,2)) { pwml(600,1); pwmr(600,1); } s:; }}

Page 13: Autonomiczny robot mobilny w kategorii linefollower MORPROF

Program sterujący pracą robota składa się z części inicjując pracę silników,

mikrokontrolera oraz algorytmu regulującego sterowanie silnikami. Robot

posiada jedynie czujniki umieszczone w przedniej części.

Na następnej stronie zamieszczony jest schemat blokowy działania

programu.

rys.18. Algorytm działania programu.

Page 14: Autonomiczny robot mobilny w kategorii linefollower MORPROF

5. Podsumowanie

Morprof jest naszym pierwszym wspólnym projektem dla tego też

konstrukcja oraz wykonanie nie jest idealne. Robot jednak spełnia założone

oczekiwania.

Konstrukcja została wykonana w ramach możliwości oraz dostępu do

poszczególnych podzespołów, komponentów a także miejsca, w którym można

było wszystko poskładać i przeprowadzać niezbędne testy.

Projekty schematów oraz płytek drukowanych zostały wykonane w

programie EAGLE. Jest to środowisko dostępne bezpłatnie w wersji demo, w

którym na podstawie stworzonego schematu ideowego można utworzyć projekt

płytki.

Płytki były w pełni projektowane oraz wykonywane przez nas. Wykonanie

ich nie było łatwym zadaniem szczególnie w przypadku płytki z

mikrokontrolerem. Układ „atmega 8” jest w wersji „smd” co dodatkowo

zwiększyło trudności polutowania całego układu.

Paleta czujników została zamocowana w taki sposób, aby można było

doregulować odległość czujników od powierzchni. Miało to na celu otrzymanie

jak najdokładniejszych pomiarów z czujników.

Kwestia sterowania odbywa się metoda spełnienia warunków. Warunki

uwzględniają hierarchie ważności czujników, tzn. odczyt znajdujący się bliżej

krańca jest ważniejszy od odczytu znajdującego się bliżej środka. Algorytm

działania uwzględnia możliwość wystąpienia poślizgów w czasie wykonywania

obrotów, skutkiem tego pełna efektywna prędkość wysterowania silników

uzyskiwana jest jedynie przy załączonych środkowych czujnikach, przy

większych prędkościach pokonywania zakrętu robot ma tendencje do wypadania

z trasy na skutek konieczności zrównoważenia zbyt dużej wartości prędkości.

W początkowym założeniu chcieliśmy zastosować sterowanie za pomocą

regulatora PID. Doświadczenia pokazały że bez zastosowania enkoderów w

celu zbierania informacji o aktualnej prędkości, regulacja za pomocą regulatora

jest niepraktyczna.

Układ wykorzystuje 6 czujników podłączonych w sposób podany na rysunku

poniżej.

Page 15: Autonomiczny robot mobilny w kategorii linefollower MORPROF

rys.16. Wyprowadzenia konkretnych pinów z układu.

Czujniki są podłączone od pinu PC0 do pinu PC5 włącznie.

Na pinach PB1 i PB2 są wyprowadzone sygnały MSI (PWM).

Piny PD5, PD4, PD7 i PD6 służą do ustawiania kierunku obrotów silników.

W projekcie nie wykorzystaliśmy pinów ADC6 i ADC7 ale są podpięte do

wejść mikrokontrolera i wyprowadzone w celach ewentualnej modernizacji.

Czujniki są podpięte do portu C mikrokontrolera który w zależności od

konfiguracji może służyć jako wejście cyfrowe (stany 1 lub 0) a także jako

wejście przetwornika A/C.