This is an old revision of the document!


Mikrorobot

Kui me valisime milline robot alustada proekteerida, me koos gruppikaaslastega teasime kindlasti, et ei taha teha bonaalseid asjau. Näiteks tänapäeval on väga populaarsed juhitavad robotid kaameraga, robotid mis oskavad sõita joone järgi ja n.e. Leppisime kokku, et meie robot peab olema autonoomne. Ja sellepärast et tänapäeval kõik elektroonika seadmed arenevad selles suunas, et olla väiksem ja energiasäästlikum, me valisime seda mis soobib meile – mikrorobot.

Meeskond

  • Serov Vyacheslav
  • Konstantin Tšistjakov
  • Aleksandr Bõkov
  • Jana Iljina
  • Igor Vinogradov

Nädalaaruanded

Lähteülesanne

Projekteerida ja valmistada antud komponentide baasil funktsionaalne mikroroboti koos baasnavigatsiooni funktsionaalsusega. Kui ta näeb tõkket, ta peab seda kindlaks teha ja vältida seda.

Nõuded

  • Maksimaalsed gabariidid: 20 cm x 20 cm x 20 cm
  • Maksimaalne kaal 2 kg
  • Liikumiskiirus max. 0,2 m/s
  • Täisautonoomne

Piirangud projekteerimisele

Peab olema tehtud välja antud komponendidest (erinev kodulaborist). Või isetehtud(plaadid ja nii edasi). Ei tohi ületada maksumust 10 000 krooni.

 

Süsteemi üldine mudel

{{:et:projects:tudengid11:system.gif?400

Süsteemi mudel kirjeldab süsteemi struktuuri, käitumist jt. olulisi aspekte.

Ideelahendused

Kui me hakkasime mõtelda roboti mehaanilisest osast (kõige suurem osa gabaritist), leppisime kokku et ta peab sõitma kahe ratastega. See annab piisavalt liikumisvõimalust. Ja sellega ta saab pöörda „tanki“ meetodil. See annab talle rohkem manööverdusvõimalust. Oli vaja lahendada probleem massitsentriga. Et tasakaalustada meie robotit ja teha massitsenter võimalikult madalam paigaldasime mootorid alusplaadi keskel ja patareid alusplaadi äärtel.

 

Mehaanika

Mehaaniline osa on väga lihtne. Meie robot seisab 2 ratastel. Lisaks on väike toetusrullik.. Ratad on ühendatud mootoriga. Selleks aitavad hammasratta ülekande mehhanism. Kõik patareid ja motorid asuvad alusplaadil. Mootorid on umbes keskel. Peal asub plaat elektriskeemiga ja anduritega. See plaat on kinnitatud põhiplaadil 4 varrase abil. joonis.jpg

Elektroonika

Siin on toodud roboti andurite elektriskeem ja vastava trükiplaadi (PCB) montaažiskeem. elektron.jpg

08304080319961.jpg

Juhtimine

Roboti juhtimine tuleneb süsteemi käitumismudelist ja on määratud lähteülesande funktsionaalsusega ning nõuete ja piirangutega. Meie robot on autonoomne, algoritmidega juhitav.

Algoritm

Algoritm kirjeldab süsteemi juhtloogikat ja on esitatud plokkdiagrammina. Lihtsama algoritmi koostamiseks piisab paarist elemendist ja nendevaheliste seoste kirjeldamisest. Kui roboti algoritm on koostatud korrektselt, siis on sellest roboti juhtprogrammi juba suhteliselt lihtne koostada. Kui robot märkab takistus ees, siis ta pöörleb sinna, kus takistust pole. Kui nii vasakul kui paremal takistusi ei ole, siis ta pöörleb vasakule. Kui robot märkab takistus kas vasakul või paremal, siis ta pöörleb vastassuunas 45 kraadi nurgal.

Tähis Tähendus 00 01 10
M1 vasak mootor seisab pöörleb päripäeva pöörleb vastupäeva
M2 parem mootor seisab pöörleb päripäeva pöörleb vastupäeva
F keskmine IK andur signaal puudub signaal olemas
FR parem IK andur signaal puudub signaal olemas
FL vasak IK andur signaal puudub signaal olemas

Lähtekood

#define F_CPU 8000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "def.h"
	int wall = 4;
	ISR(TIMER0_OVF_vect)
	{
	IR_LEDR_PORT^=1<<IR_LEDR;
	IR_LEDL_PORT^=1<<IR_LEDL;
	IR_LEDF_PORT^=1<<IR_LEDF;
	TCNT0=time;
	}
	int wall_on()
	{
	TCNT0 = time; 
	sei();
	while(1)
	{
	if((IR_RESF_PIN&(1<<IR_RESF))==0)
		{
		cli();
		wall = 1; //ïðåïÿòñâèå ñïåðåäè
		break;
		}
		if((IR_RESR_PIN&(1<<IR_RESR))==0)
		{
		cli();
		wall = 2;//ïðåïÿäñòâèå ñïðàâà
		break;
		}
		if((IR_RESL_PIN&(1<<IR_RESL))==0)
		{
		cli();ïðåïÿäñòâèå
		wall = 3;// ñëåâà
		break;
		}
	}
	return wall;
}
int main()
{
	TCCR0 = 1<<CS00|1<<CS01|0<<CS02;
	TIMSK = 1<<TOIE0;
	IR_RESR_DDR &=~(1<<IR_RESR); //ÏÐÈÅÌ ÎÒ IR ÏÐÈÅÌÍÈÊÀ
	IR_RESR_DDR &=~(1<<IR_RESR);
	IR_RESR_DDR &=~(1<<IR_RESR);
	IR_LEDR_DDR |= 1<<IR_LEDR; //ÏÅÐÅÄÀÒ×È ÈÐ ÑÈÃÍÀËÀ
	IR_LEDF_DDR |= 1<<IR_LEDF;
	IR_LEDL_DDR |= 1<<IR_LEDL;
	MOTOR_L1_DDR |=1<<MOTOR_L1;
	MOTOR_L2_DDR |=1<<MOTOR_L2;
	MOTOR_R1_DDR |=1<<MOTOR_R1;
	MOTOR_R2_DDR |=1<<MOTOR_R2;
	while(1)
	{
		wall_on();
		if(wall==1)
		{
			MOTOR_R1_PORT |= 1<<MOTOR_R1; //ÏÐÀÂÛÉ ÌÎÒÎÐ ÂÏÅÐÅÄ
			MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
			MOTOR_L1_PORT &=~ (1<<MOTOR_L1);//ËÅÂÛÉ ÌÎÒÎÐ ÍÀÇÀÄ
			MOTOR_L2_PORT |= 1<<MOTOR_L2;
			//_delay_ms();
			MOTOR_R1_PORT &=~ (1<<MOTOR_R1);
			MOTOR_L2_PORT &=~ (1<<MOTOR_L2);
			wall = 4;
		}
		if(wall==2)
		{
			MOTOR_R1_PORT |= 1<<MOTOR_R1; //ÏÐÀÂÛÉ ÌÎÒÎÐ ÂÏÅÐÅÄ
			MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
			MOTOR_L1_PORT &=~ (1<<MOTOR_L1);//ËÅÂÛÉ ÌÎÒÎÐ ÍÀÇÀÄ
			MOTOR_L2_PORT |= 1<<MOTOR_L2;
			//_delay_ms();
			MOTOR_R1_PORT &=~ (1<<MOTOR_R1);
			MOTOR_L2_PORT &=~ (1<<MOTOR_L2);
			wall = 4;
		}
		if(wall==3)
		{
			MOTOR_L1_PORT |= 1<<MOTOR_L1;//ËÅÂÛÉ ÌÎÒÎÐ ÂÏÅÐÅÄ
			MOTOR_L2_PORT &=~ (1<<MOTOR_L2);
			MOTOR_R1_PORT &=~ (1<<MOTOR_R1);//ÏÐÀÂÛÉ ÌÎÒÎÐ ÍÀÇÀÄ
			MOTOR_R2_PORT |= 1<<MOTOR_R2;
			//_delay_ms();
			MOTOR_L1_PORT &=~ (1<<MOTOR_L1);
			MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
			wall=4;
		}
		if(wall==4)// ïóòü ñâîáîäåí ìîæíî åõàòü
		{
			MOTOR_R1_PORT |= 1<<MOTOR_R1; //ÏÐÀÂÛÉ ÌÎÒÎÐ ÂÏÅÐÅÄ
			MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
			MOTOR_L1_PORT |= 1<<MOTOR_L1;//ËÅÂÛÉ ÌÎÒÎÐ ÂÏÅÐÅÄ
			MOTOR_L2_PORT &=~ (1<<MOTOR_L2);
		}
	}
}
#define IR_LEDR 2
#define IR_LEDR_PORT PORTD
#define IR_LEDR_DDR DDRD
#define IR_LEDF 1
#define IR_LEDF_PORT PORTD
#define IR_LEDF_DDR DDRD
#define IR_LEDL 0
#define IR_LEDL_PORT PORTD
#define IR_LEDL_DDR DDRD
#define IR_RESF 1
#define IR_RESF_PORT PORTC
#define IR_RESF_DDR DDRC
#define IR_RESF_PIN PINC
#define IR_RESR 2
#define IR_RESR_PORT PORTC
#define IR_RESR_DDR DDRC
#define IR_RESR_PIN PINC
#define IR_RESL 0
#define IR_RESL_PORT PORTC
#define IR_RESL_DDR DDRC
#define IR_RESL_PIN PINC
#define MOTOR_L1 0
#define MOTOR_L1_PORT PORTB
#define MOTOR_L1_DDR DDRB
#define MOTOR_L2 2
#define MOTOR_L2_PORT PORTB
#define MOTOR_L2_DDR DDRB
#define MOTOR_R1 1
#define MOTOR_R1_PORT PORTB
#define MOTOR_R1_DDR DDRB
#define MOTOR_R2 3
#define MOTOR_R2_PORT PORTB
#define MOTOR_R2_DDR DDRB
#define time 230

Viivitus paneme katsetes.

Valmislahendus

Projekti raames valminud robotplatvorm on valmistatud üldiselt plastikust. Alusplaadil on kinnitatud rattad, kaks mootorit keskel, äärtel patareid. Kõik raskemaid komponendid panime alusplaadile masstsentri madalamiseks. Varraste peal on kinnitatud teine plaat peale elektroonikakomponendidega ( mikrokontroller, LED j.n.e ).

083040805299aa.jpg

08304080931d30.jpg

083040807fba8b.jpg

Majanduskalkulatsioon

Komponent Mark Kogus Hind Maksumus
Mootor Faulhaber 12V2150.-300.-
MikrokontrollerAVR ATmega81100.-100.-
Mootorite draiverL293D140.-40.-
KondensaatorCPOL-EUE2-5 1000mkF110.-10.-
Infrapunane vastuvõtja IRM8601S330.-90.-
LEDLED5MM33.-9.-
ResistorR-EU_R1206 10kOm 11.-1.-
ResistorR-EU_R1206 510 Om31.-3.-
NuppBUTTON_6MM 120.-20.-
Ratas30/5 mm 215.-30.-
PatareidSony alkaline AAA310.-30.-
Erinevad kaablid1m 10.-10.-
Muud tarvikud 100.-100.-
KOKKU: 643.-

Kokkuvõte ja järeldused

Roboti hind tuli välja suhteliselt madal arvestades sellega, et mõned osad olid isetehtud, jootmine tegime ise j.n.e. Tootmise hinda saaks veel alandada, optimeerides komponentide ja materjalikulu. Projekti käigus tutvusime mehhatroonikasüsteemi projekteerimise, valmistamise ja testimisega, mis andis meile esmakordse sellelaadse kogemuse.

Töö lõpus selgus tõsiasi, et roboti korralikuks töötamiseks on vaja oluliselt rohkem aega planeerida testimisele, seda eriti tarkvara osas. Erinevad moodulid ei pruugi alati koos korrektselt töötada, kuigi eraldi katsetades oli kõik korras. See näitab, et süsteemi moodulite integreerimine on tõsine väljakutse ja selleks tuleb planeerida oluliselt rohkem aega ja ressurssi.

Kokkuvõteks arvame, et projekt oli huvitav ja hariv ning andis aimu integreeritud süsteemide projekteerimisest ja valmistamisest.

Viited ja kasutatud materjalid

  1. Kodulabori juhendmaterjal http://home.roboticlab.eu
  2. ATmega128 andmeleht
  3. Dudziak, R., Köhn, C., Sell, R., Integrated Systems & Design, TUT Press, 2008
et/projects/tudengid11/mikrorobot.1302056415.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0