SPRAWOZDANIE. Architektura systemów komputerowych projekt robota W Y K O N A N I E :

Podobne dokumenty
Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Instytut Teleinformatyki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

MCAR Robot mobilny z procesorem AVR Atmega32

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Programowanie mikrokontrolerów AVR z rodziny ATmega.

E-TRONIX Sterownik Uniwersalny SU 1.2

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Programowanie mikrokontrolerów AVR

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

DOKUMENTACJA. dot. Budowy i przebiegu konstrukcji linefollower-a. Data: MCHT2 Jakub Tomczyk Łukasz Pawelec Mateusz Wróbel

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Autonomiczny robot mobilny w kategorii linefollower MORPROF

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

MOBOT RoboSnake. Moduł wieloczłonowego robota

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Mikrokontrolery AVR Wprowadzenie

Instytut Teleinformatyki

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

Zestaw Startowy EvB. Więcej informacji na stronie:

MikloBit ul. Cyprysowa 7/ Jaworzno. rev MB-AVR-ISP programator

Schemat blokowy architektury AVR

Programator STK500v2 USB

Projekt i wykonanie robota klasy Micromouse

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

Wprowadzenie do systemu Delphi

Instrukcja obsługi. PROGRAMATOR dualavr. redflu Tarnów

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Materiały. Języki programowania II (Java+AVR-GCC) Literatura

Programator procesorów rodziny AVR AVR-T910

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Komunikacja w mikrokontrolerach Laboratorium

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Po uruchomieniu Lazarusa należy wybrać z paska górnego opcję Projekt i następnie Nowy Projekt. Pokaże się okno:

Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

Instytut Teleinformatyki

MultiTool instrukcja użytkownika 2010 SFAR

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Instrukcja do laboratorium Akademii ETI *

WIZUALIZACJA I STEROWANIE ROBOTEM

Programator AVR USBasp

Uniwersalny sterownik silnika krokowego z portem szeregowym RS232 z procesorem AT90S2313 na płycie E200. Zestaw do samodzielnego montażu.

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

Sterownik silnika krokowego. Aleksander Koreń

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

dokument DOK wersja 1.0

INTERFEJS LPG/CNG FTDI USB INSTRUKCJA INSTALACJI ORAZ KONFIGURACJI URZĄDZENIA

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

INSTRUKCJA OBSŁUGI.

Sterownik Spid Pant 8 i Ant 8. Podręcznik użytkowania

Instytut Teleinformatyki

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Politechnika Białostocka

micro Programator ISP mikrokontrolerów AVR zgodny z STK500v2 Opis Obs³ugiwane mikrokontrolery Wspó³praca z programami Podstawowe w³aœciwoœci - 1 -

MSA-1 Mikroprocesorowy sterownik do przełącznika antenowego

SYSTEM PRZERWAŃ ATmega 32

Kod produktu: MP01611-ZK

Altus 50 RTS / 60 RTS

WARIATOR WYPRZEDZENIA ZAPŁONU WARIATOR USTAWIENIA

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

WARIATOR USTAWIENIA Białystok, Plażowa 49/1, Poland,

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Wyprowadzenia sygnałow i wejścia zasilania na DB15

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Zestaw Edukacyjny Atmega-8 (AJAWe-0711) Porty wejścia-wyjścia.

Wbudowane układy komunikacyjne cz. 1 Wykład 10

Instrukcja obsługi programatora AVR Prog USB v2

Komunikacja w mikrokontrolerach. Podstawy programowania. Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

USB interface in 8-bit microcontrollers PIC18F family manufactured by Microchip.

Interface sieci RS485

Sterownik źródła zasilania STR-Z01

Instrukcja obsługi programatora AVR Prog USB v2

JEDNOSTKA CENTRALNA MPJ6. Instrukcja obsługi

Instrukcja obsługi. SQCA244 instrukcja obsługi

DWUKIERUNKOWY REGULATOR SILNIKA DC VDC 20A

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy. Przebieg ćwiczenia

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

NAZWA PRODUKTU: Interaktywny ROBOT OLBRZYM K1 Walczy Strzela Y73 Cechy produktu

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

Przemysłowy odtwarzacz plików MP3

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRYCZNY KATEDRA ENERGOELEKTRYKI LABORATORIUM INTELIGENTNYCH INSTALACJI ELEKTRYCZNYCH

Instrukcje sterujące. Programowanie Proceduralne 1

Wyniki (prawie)końcowe - Elektroniczne warcaby

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.


lider projektu: finansowanie:

Raport z budowy robota typu Linefollower Mały. Marcin Węgrzyn

Instrukcja obsługi Poczwórny sterownik silników krokowych SQCA244 Bipolarny sterownik dla 4 silników krokowych do 4A z wejściem LPT,

Robot mobilny klasy mini-sumo Żubr

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

W.J WIELICZKA

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Transkrypt:

Grupa I5a (poniedziałek godz. 8:00) Poznań dn. 08.06.2008r. SPRAWOZDANIE Architektura systemów komputerowych projekt robota W Y K O N A N I E : Tomasz Stróżyk 80150 Kamil Piska 80125 Paweł Skrzypek 80144 Jakub Kaczmarek 80072 Tomasz Skowroński 80143 Strona 1 z 9

1. Wymagania ogólnie projektu. Robot powinien pokonywać trasę o kształcie litery S, składającą się z białych kartek. W przypadku wyjechania poza trasę powinien sam na nią wrócić. Robot powinien być wykonany w dwóch wersjach: - autonomiczny robot obsługiwany poprzez port LPT podłączony do komputera - autonomiczny robot obsługiwany poprzez mikrokontroler 8-bitowy Rys 1. Robot w czasie budowy Rys 1a. Robot w czasie budowy Rys 1b. Robot w czasie budowy Strona 2 z 9

2. Schemat budowy robota, oraz jego obsługa poprzez port LPT. Rys 2. Schemat podłączenia silników Powyższy schemat pokazuje podłączenie silników. Jeden silnik (podłączony pod piny D4, D5) odpowiedzialny jest za poruszanie pojazdu przód/tył, natomiast drugi silnik (piny D2, D3) wykonuje skręty. Do sterowania każdym silnikiem wykorzystujemy po dwie pary tranzystorów (PNP i NPN), które po otrzymaniu napięcia z pinu na porcie LPT, przekazują napięcie z baterii do silnika. Przedstawię teraz poszczególne kombinacje sygnałów na pinach i reakcję robota (W celu uproszczenia przyjmiemy, że napięcie na danym pinie oznaczamy 1, brak napięcia 0): D2=1; D3=0 D2=0; D3=1 D2=0; D3=0 D4=0; D5=1 D4=1; D5=0 D4=0; D5=0 Skręt w lewo Skręt w prawo Brak skrętu Jazda w tył Jazda w przód Postój Strona 3 z 9

Rys 3. Układ sterujący pracą silników Czujniki: Do wykrywania białego podłoża wykorzystaliśmy czujniki firmy SEEKA, zasilane baterią 9 voltową, które reagują (zależnie od ustawienia) na biały/czarny kolor wysyłając na wyjście 9 volt. Do przekazania sygnału na port LPT wykorzystaliśmy przekaźniki 9 voltowe. Do cewki z każdego mamy podłączone wyjście z każdego czujnika, a do przekazywania napięcia użyliśmy jeden ze styków portu danych (dokładnie D1). Z przekaźników informacje o wyjechaniu poza trasę są przesyłane przez wejścia 12 (lewy czujnik), 13 (prawy czujnik), 10 (jeżeli którykolwiek wykryje stan niepożądany). Poniżej schemat sterowania czujnikami: Rys 4. Seeka GSZ3S Strona 4 z 9 Rys 5. Schemat podłączenia czujników

Rys 6. Czujnik w naszym robocie Program obsługujący robota: Do napisania programu użyliśmy języka Delphi, a nie C, z jednego powodu, a mianowicie istnieje biblioteka w języku Delphi (ZLPortio), która w miarę prosty sposób pozwala obsługiwać porty LPT w systemie WINDOWS XP. Kod programu: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Zlportio, StdCtrls, ExtCtrls; var Form1: TForm1; const LPTdata=$378; LPTdata2=$379; // Port danych // Port statusowy implementation {$R *.dfm procedure TForm1.FormCreate(Sender: TObject); begin if ZLIOStarted then Label1.Caption := 'Sterownik załadowany poprawnie.' else Strona 5 z 9

end; Label1.Caption := 'Nie można załadować sterownika.'; procedure TForm1.Timer1Timer(Sender: TObject); var b,c:byte; begin while True do begin b:=portreadb(lptdata2); // czytamy bieżącą wartość if(b=111) then c:=20 //robot wyjechał na prawo, skręć w lewo else if (b=95) then c:=24 //robot wyjechał na lewo, skręć w prawo else c:=16; // jedź prosto portwriteb(lptdata,c); // wpisujemy nową wartość Label2.Caption:=IntToStr(b); // kontrolnie wypisujemy liczbę end; end; end. 3. Robot sterowany za pomocą mikrokontrolera. Mikrokontroler Do obsługi robota użyliśmy mikrokontrolera AVR - Atmega8-16PU. Jest to 8-bitowy mikrontroler produkowany przez firmę ATMEL. Jest zasilany 5 voltami, posiada 3 porty (PB, PC, PD), możliwość ustawiania zgłaszania przerwania na zbocza lub sygnał. Jako układ jest tani, ma darmowe, aczkolwiek dobrze rozbudowane oprogramowanie. Do programowania użyliśmy języka C w kompilatorze WinAvr, a jako programator PonyProg2000 wraz z programatorem sprzętowym podłączanym pod port LPT AVR PROG I LPT. Schemat połączenia programatora z mikrontrolerem (jak i schemat mikrokontrolera): Strona 6 z 9 Rys 7. Schemat połączenia mikrokontrolera i programatora

Do obsługi robota użyliśmy następujących pinów (odpowieniki pinów LPT). Do czego służy Pin na LPT Pin na Atmega8 Skręt w lewo D2 (nr 4) PC0 (nr 23) Skręt w prawo D3 (nr 5) PC1 (nr 24) Jazda w przód D4 (nr 6) PC2 (nr 25) Jazda w tył D5 (nr 7) PC3 (nr26) Lewy czujnik PaperOut (nr 13) PD2/INT0 (nr 4) Prawy czujnik Select (nr 12) PD3/INT1 (nr 5) Napięcie na pinach INT pojawia się analogicznie jak w wersji z LPT, tylko tym razem napięcie bierzemy z napięcia całego układu. Układ z racji, że potrzebuje do działania 5V, jest zasilany wykorzystując port USB. Rys 8. Mikrokontroler i programator Strona 7 z 9

Program obsługujący robota #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #define STOP 0 #define FORWARD 1 #define LEFT 2 #define RIGHT 3 #define BACKWARD 4 void go(int dir){ int prt = PORTC & 0xF0; switch(dir){ case FORWARD: prt=4; break; case LEFT: prt=5; break; skręconymi w lewo case RIGHT: prt=6; break; skręconymi w prawo case BACKWARD: prt=8; break; case STOP: prt=0; break; PORTC = prt; // jazda na przód // jazda na przód z kołami // jazda na przód z kołami // jazda w tył // stop void sensor_int(){ int sensor = (bit_is_set(pind, 2)? 0 : 2) + (bit_is_set(pind, 3)? 0 : 1); lewy int backmode,i ; // +2 jeśli prawy // +1 jeśli start_int: switch(sensor){ case 1: go(left); break; case 2: go(right); break; case 3: go(forward); break; default: go(stop) goto start_int; // tylko lewy włączony //tylko prawy włączony //oba wyłączone break; ISR(INT0_vect){ sensor_int(); ISR(INT1_vect){ sensor_int(); //obsługa przerwań int main (void) { int prt = PORTC & 0xF0; unsigned int i,j=0; DDRC = 0x0F; //ustawienie 4 bitów sterujących silnikami w tryb 'OUTPUT' DDRD = 0; //ustawienie portu D (czujniki) w tryb 'INPUT' PORTC = 0; //ustawienie 0 na piny sterujące silnikami Strona 8 z 9

GIMSK =_BV(INT0); GIMSK =_BV(INT1); //ustawienie bitów w masce przerwań MCUCR &= ~_BV(ISC11); MCUCR &= _BV(ISC10); MCUCR &= ~_BV(ISC01); MCUCR &= _BV(ISC00); sei(); // obsługa przerwań zbocze // opadające, rosnące // włączenie obsługi przerwań while(1){ ; return (0); 4. Napotkane problemy. - pierwszym problemem okazało się wybranie sposobu napędzania robota oraz metody jego skręcania, pierwszym pomysłem było napędzanie przednich kół, z których każde mogło by się kręcić do przodu lub do tyłu co powodowało by skręt, jednak w końcu zdecydowaliśmy się na użycie jednego silnika do obsługi napędu tylnego i jednego do skrętu kołami tylnymi (zasada podobna do tych stosowanych w koparkach). - kolejnym problemem było to, że robot powinien jeździć, a jednak nie poruszał się (gdy podnosiło się go podnosiło to wtedy silniki działały i koła ruszały się), przyczyną tego problemu jak się okazało był za ciężki kabel LPT. - następnym problemem był zakup mikrokontrolera, po kupnie modelu poleconego przez sprzedawcę w sklepie (AT89C51 firmy Atmel) okazało się, że nie posiada on w pamięci bootloadera, który by pozwolił przesyłać dane bezpośrednio (tzn. przez MAX232) z RS-232, udało nam się to rozwiązać dokonując zakupu Atmega8-16PU. - ostatnim problemem o którym chcieliśmy napisać (bo było sporo więcej różnych pomniejszych problemików i kłopotów z którymi musieliśmy się zmierzyć w czasie etapów tworzenia robota) było rozwiązanie zasilania mikroukładu i programatora, które potrzebowały napięcia 5V, rozwiązaniem było wykorzystanie portu USB jako źródła napięcia. Strona 9 z 9