Mateusz Skiba Jakub Szymaczek. LINEFOLLOWER WiX

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

MCAR Robot mobilny z procesorem AVR Atmega32

Podstawy budowy robotów

Raport z budowy robota Krzysio

Autonomiczny robot mobilny LF3 klasy linefollower. Jacek Jankowski

Linefollower Torpeda. Magdalena Kaczorowska

SDD287 - wysokoprądowy, podwójny driver silnika DC

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Autonomiczny robot mobilny w kategorii linefollower MORPROF

SDD287 - wysokoprądowy, podwójny driver silnika DC

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Mikrokontrolery AVR Wprowadzenie

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

ROBOT MOBILNY TYPU LINE FOLLOWER JACK. Michał Rybczyński

Robot mobilny klasy minisumo Wojak Wszechmocny. Robert Budziński

KAmduino UNO. Rev Źródło:

MozhePoyedzye. Robot klasy MiniSumo. Konrad Bednarek Michał Rataj

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

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

STEROWNIKI ROBOTÓW ( PROJEKT ) ROBOT KLASY LINEFOLLOWER

Elektrolityczny kondensator filtrujący zasilanie stabilizatora U12 po stronie sterującej

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

TIGER Autonomiczny robot mobilny typu Line Follower

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

E-TRONIX Sterownik Uniwersalny SU 1.2

1. W gałęzi obwodu elektrycznego jak na rysunku poniżej wartość napięcia Ux wynosi:

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

KAmodQTR8A. Moduł QTR8A z ośmioma czujnikami odbiciowymi

Płytka uruchomieniowa XM32

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

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

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

Wyjścia analogowe w sterownikach, regulatorach

AUTONOMOUS GUARDIAN ROBOT AUTONOMICZNY ROBOT WARTOWNIK

Sterownik momentu obrotowego silnika prądu stałego

Wyniki (prawie)końcowe - Elektroniczne warcaby

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Płytka ewaluacyjna z ATmega16/ATmega32 ARE0021/ARE0024

Projekt i wykonanie robota klasy Micromouse

Płytka laboratoryjna do współpracy z mikrokontrolerem MC68332

SERIA D STABILIZATOR PRĄDU DEDYKOWANY DO UKŁADÓW LED

Projektowanie urządzeń mikrokontrolerowych w kontekście wymagań przemysłu motoryzacyjnego Maciej Dubicki

CHŁOPCZYK Robot typu Line Follower

- WALKER Czteronożny robot kroczący

Proste układy wykonawcze

SML3 październik

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Konstrukcja mostka mocy typu "H" opartego o układ HIP4081A Robert Szlawski

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Generator tonów CTCSS, 1750Hz i innych.

SIMSON. Raport. Robot moblilny klasy Line follower. Łukasz Kaźmierczak. Dawid Kwaśnik. Małgorzata Lewandowska. Wrocław, r.

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

ZL8AVR. Płyta bazowa dla modułów dipavr

Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

W semestrze letnim studenci kierunku Aplikacje Internetu Rzeczy podczas ćwiczeń z programowania CAD/CAM

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Kurs Wprowadzający. Daniel Wlazło, Mikołaj Marcinkiewicz

Podstawowe zastosowania wzmacniaczy operacyjnych wzmacniacz odwracający i nieodwracający

SYSTEMY MIKROPROCESOROWE W AUTOMATYCE. Projekt bariery świetlnej.

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

MOBOT-MBv2-AVR Płyta główna robota mobilnego z procesorem AVR Atmega128

LABORATORIUM PODSTAW ELEKTRONIKI MATERIAŁY POMOCNICZE SERIA PIERWSZA

Uniwersalna płytka generatora tonów CTCSS, 1750Hz i innych.

Touch button module. Moduł przycisku dotykowy z podświetleniem LED

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

Robot klasy minisumo

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Część 4. Zmiana wartości napięcia stałego. Stabilizatory liniowe Przetwornice transformatorowe

PX342. Driver PWM 1x10A INSTRUKCJA OBSŁUGI

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

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

Elektronika z wykorzystaniem Arduino i Raspberry Pi : receptury / Simon Monk. Gliwice, copyright Spis treści. Przedmowa 11

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

GAMMA_X_1Cw. 1. Dane techniczne. 2. Opis urządzenia Sterowanie: możliwość sterowania 1 napędem. 2. Pamięć: do 20 nadajników

MPI-8E 8-KANAŁOWY REJESTRATOR PRZENOŚNY

U W A G I D O M O N T A ś U Z E S T A W U L A B O R A T O R Y J N E G O A B C 0 1 U S B 3, A B C 0 2

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Politechnika Białostocka

Systemy wbudowane. Paweł Pełczyński

Analogowy sterownik silnika krokowego oparty na układzie avt 1314

Aoi Ryuu. v2.0 moduł z mikroprocesorem Atmega169 dla makiety dydaktycznej Akai Kaba

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

Wstęp. Opis ATMEGA128 MINI MODUŁ VE-APS-1406

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Robot micromouse Rzuf nincza. Hubert Grzegorczyk

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

Instytut Teleinformatyki

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Politechnika Poznańska, Instytut Elektrotechniki i Elektroniki Przemysłowej, Zakład Energoelektroniki i Sterowania Laboratorium energoelektroniki

Stabilizatory impulsowe

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

Kuchnie indukcyjne IV generacji firm Bosch, Neff,

SML3 październik

MultiTool instrukcja użytkownika 2010 SFAR

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Transkrypt:

Mateusz Skiba Jakub Szymaczek LINEFOLLOWER WiX

Spis Treści 1. Wstęp... 2. Konstrukcja nośna...... 3. Zasilanie......... 4. Mikrokontroler i towarzyszące elementy elektroniczne... 5. Czujniki... 6. Sterowanie napędami..... 7. Zaimplementowany program... 8. Literatura... 9. Zdjęcia...

1. Wstęp Przedstawiony raport prezentuje informacje dotyczące tworzenia robota typu linefollower o nazwie WiX. Robot powstał w związku z warsztatami rekrutacyjnymi do koła naukowego KoNaR. 2. Konstrukcja nośna Konstrukcja nośna robota opiera się na płytce drukowanej wykonanej z laminatu dwustronnego. Do płytki po bokach przymocowane są silniki wraz z przekładniami oraz wyłożyskowana kulka spełniająca rolę ślizgu.

3. Zasilanie Robot zasilany jest akumulatorem litowo-polimerowym, 2-ogniwowym o napięciu 8,4V oraz pojemności 400 mah (złącze J11). Akumulator świetnie radzi sobie ze znacznym obciążeniem pochodzącym z silników. Do układu zasilającego zalicza się również stabilizator napięcia 7805. Stabilizuje on napięcie akumulatora na 5V, które służy do zasilania mikroprocesora robota. Jest to stabilizator typu Low Drop Out nawet przy krytycznie niskim poziomie akumulatora (6V) napięcie wyjściowe wynosić będzie 5V. Kondensatory ceramiczne(o pojemności 100 nf każdy) oraz elektrolitowe(o pojemności 2200uF każdy) służą do odfiltrowania zakłóceń w układzie. W układzie w celach filtracji przewidziana została również cewka L2. Przy budowie robota zastąpiono ją jednak zwarciem. Poprowadzono dwie ścieżki masy (GND oraz GND1) osobne dla mostka H z silnikami oraz reszty układu celem zmniejszenia zakłóceń pochodzących od silników. 4. Czujniki Wykorzystano czujniki odbiciowe CNY70 w ilości 6 sztuk. Zostały one rozmieszczone symetrycznie wzdłuż robota, po 3 z każdej strony na planie ¼ okręgu w ten sposób że rozchodzą się od środka na zewnątrz. Dwa czujniki skrajne S1 oraz S2 (po jednym z każdej strony) znalazły się przed osią kół. Reszta znalazła się za osią. Odległość między środkiem czujników S5 oraz S6 wynosi 22 mm. Czujnikami steruje tranzystor typu MOSFET odbierający sygnał z mikroprocesora. Mikroprocesor włącza i wyłącza tranzystor co powoduje naprzemienne pomiary natężenia odbitego promieniowania z włączoną i wyłączoną diodą (pomiar różnicowy). Rezystancje elementów R2 oraz R3 zostały dobrane eksperymentalnie, tak by brak natężenia odbitego światła dawał na wyjściu czujnika napięcie około 5V, a natężenie odbite od materiały białego napięcie około 150-200 mv.

5. Mikrokontroler i towarzyszące elementy elektroniczne a) Mikrokontroler Do sterowania robotem użyto mikroprocesora z rodziny AVR firmy Atmel ATmegi88. Układ zasilany może być napięciem 4,5 5,5 V. Taktowany jest wewnętrznym rezonatorem 8MHz. Posiada przetwornik analogowo-cyfrowy z 6 kanałami, obsługuje 2 przerwania zewnętrzne, posiada kanały PWM. Posiada 8kB pamięci flash, co jest wystarczające nawet na bardzo obszerny program na robota typy Linefollower. Od mikrokontrolera wyprowadzone są nóżki razem z filtrami na zewnętrzny rezonator. Oprócz zasilania logiki podpięte i odfiltrowane za pomocą kondensatora (C3, 100 nf) oraz cewki (L1, 10uH) napięcie zasilające przetwornik analogowo-cyfrowy. Do wyprowadzenia złącza do programowania (JP1) podpięte są micoswitche. Dzięki temu wyprowadzenia mikroprocesora, które domyślnie są przeznaczone do programowania mogą być wykorzystywane w czasie pracy programu. Przyciski filtrowane są kondensatorami(c26, C27, C28, każdy po 100nF) celem pozbycia się efektu drgania styków przycisków. b) Układ scalony 4093 Przewidziane zostały enkodery na koło w postaci diody, fotokomórki oraz kółka z naciętymi szczelinami pochodzące z myszki kulkowej. Układ scalony składa się z 4 bramek NAND z układem Schmitta, których celem jest zniwelowanie stanów wolnozmiennych generowanych przez enkodery. c) dodatkowe wyprowdzenia Przygotowane zostały dodatkowe złącza J12( 5V), J16(zasilanie z akumulatora) oraz J17(masa), które umożliwiają dalszą rozbudowę robota. 6. Sterowanie napędami Robot napędzany jest dwoma miniaturowy silnikami prądu stałego DG1224-043 ze zintegrowaną przekładnią zębatą o przełożeniu 43:1( 150 obrotów/min, napięcie zasilania 3V). Do ich sterowania użyty został mostek H L298. 4 wyprowadzenia z mikrokontrolera (PD5,PD6,PD7,PB0) pozwalają sterować kierunkiem obrotu silnika. Wyprowadzenia PB1, PB2 odpowiadają za modulację PWM, co pozwala regulować moc obroty silników. Układ L298 zasilany jest zz napięcia stablilizowanego 5V, silniki natomiast, bezpośrednio z akumulatora. Silniki zabezpieczone przed prądami wstecznymi są diodami szybkimi 1N4007.

7. Zaimplementowany program: Program napisany został w języku C. Część programu wzorowana lub skopiowana została z udostępnionych przez KoNaR materiałów. Zajmuje on w przyblizeniu 1kB (1/8 pamięci flash mikroporcesora). Można go podzielić można na 4 części: -sekcja nagłówkowa (zdefiniowane makra ułatwiające pisanie kolejnych części programu): #define F_CPU 8000000L #define SET_IN2 PORTD = _BV(7) /* PB0 -> INPUT 1 L298 */ #define CLR_IN2 PORTD &= ~_BV(7) #define SET_IN2_OUT DDRD = _BV(7) #define SET_IN1 PORTB = _BV(0) /* PD7 -> INPUT 2 L298 */ #define CLR_IN1 PORTB &= ~_BV(0) #define SET_IN1_OUT DDRB = _BV(0) #define SET_IN4 PORTD = _BV(5) /* PD6 -> INPUT 3 L298 */ #define CLR_IN4 PORTD &= ~_BV(5) #define SET_IN4_OUT DDRD = _BV(5) #define SET_IN3 PORTD = _BV(6) /* PD5 -> INPUT 4 L298 */ #define CLR_IN3 PORTD &= ~_BV(6) #define SET_IN3_OUT DDRD = _BV(6) /* UWAGA: Dwa ponizsze porty nie moga zostac zmienione na inne! */ #define SET_ENA_OUT DDRB = _BV(1) /* PB1 (OC1A) */ #define SET_ENB_OUT DDRB = _BV(2) /* PB2 (OC1B) */ #define ADC_ENABLE (1<<ADEN) #define ADC_CONVERT (1<<ADSC) #define ADC_VREF_TYPE ((0<<REFS1) (1<<REFS0)) #define ADC_PRESCALE_128 ((1<<ADPS2) (1<<ADPS1) (1<<ADPS0)) #define T 25 #define PRZOD 600 #define LEKKO 300 #define OSTRO 0 #define L1 500*0.6 #define L2 300*0.6 #define L3 0 #define WW 600 #define P1 530*0.6 #define P2 315*0.6 #define P3 0 #define WS 1023 #define PROG 400 #include <avr/io.h>

#include <util/delay.h> /* pętla właściwa programu odpowiedzialna za sterowanie robotem na podstawie wiadomosci z czujników */ while(1) stan=czytaj_adc(); if(!stan) jazdawprzod(l1,p1); else if(stan&0b100000) obrotwprawo(ws,ww); _delay_ms(t);} else if(stan&0b000001) obrotwlewo(ww,ws); _delay_ms(t);} else if(stan&0b010000) jazdawprzod(l3,p1); else if(stan&0b000010) jazdawprzod(l1,p3); else if(stan&0b000100) jazdawprzod(l2,p1+100); else if(stan&0b001000) jazdawprzod(l1+100,p2); else if(stan&0b001100) jazdawprzod(l1,p1); else if(stan&0b000011) obrotwlewo(ww,ws); _delay_ms(t);} else if(stan&0b110000) obrotwprawo(ws,ww); _delay_ms(t);} else if(stan&0b111000) obrotwprawo(ws,ww); _delay_ms(1);} else if(stan&0b000111) obrotwlewo(ww,ws); _delay_ms(1);} else if(stan&0b110011) jazdawprzod(l1,p1); else if(stan&0b011110) jazdawprzod(l1,p1); }

8. Wnioski Podczas budowy robota oraz testowania go na torze wykryto kilka wad, których należałoby uniknąć podczas konstruowania tego typu robotów: a) Założenie, że lepiej sterować robotem z osią obrotu z przodu okazało się błędne. W przypadku ostrzejszych zakrętów tylko przednie czujniki wykrywają czarną linię. Gdy robot jedzie z dużym wypełnieniem sygnału PWM po wykryciu czarnej linii silniki nie są w stanie wystarczająco szybko zareagować i siła bezwładności robota wyrzuca go poza linię i robot nie jest w stanie już wrócić. b) Wymiary robota oraz rozmieszczenie czujników na planie okręgu celem ścinania zakrętów nie spełniają swoich założeń. Efekt jest wprost odwrotny robot skręcając zatacza szeroki łuk. Najlepszym wyjściem wydaje się tu odwrotne, standardowe podejście: długi robot z wysuniętymi czujnikami. c) Silniki zasilane bezpośrednio z w pełni naładowanego akumulatora powodują szybszą prace kół jednak wraz ze spadkiem napięcia zasilającego robot zachowuje się inaczej, co bardzo komplikuje dobór odpowiednich nastaw algorytmu. Rozsądnym wyjściem wydaje się zastosowanie przetwornicy impulsowej, która zasili silnik stałym napięciem, bez znacznych strat energii. d) Kondensatory podłączone równolegle do microswitchy celem zniwelowania efektu drgania styków musiano wylutować. Okazało się, że wygładzają sygnały programatora, co uniemożliwiało komunikację z mikroprocesorem.