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

Robot peab sobima mikroroboti standartide piirangutesse ja peab olema valmistatud kodulabori komponendidest. 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õtlema roboti mehaanilisest osast ja gabariididest, leppisime kokku et ta peab sõitma kahe ratastega. See annab piisavalt liikumisvõimalust. Ja sellega ta saab pöörelda „tanki“ meetodil. See annab talle rohkem manööverdusvõimalust. Et tasakaalustada meie robotit ja teha massitsenter võimalikult madalam paigaldasime raskemaid komponendid alusplaadil.

 

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. Peal asub plaat elektriskeemiga ja anduritega. See plaat on kinnitatud põhiplaadil 4 varrase abil.

3D muudel

joonis.jpg

Rattakinnistuse joonis

Teoreetiline maksimaalne kiirus

Lähteandmed:

7800 pööred minutis (Faulhaber 2224012S 12V)

Ratta diameeter 4 cm

Hammaste arv: suurel hammasrattal - 24 ja väikel - 9

083079151fe344.jpg

Kiirus võib reguleerida programmi mutmise kaudu.

Elektroonika

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

083076297563a4.jpg

Elektriskeem

083076291bd6f5.jpg

Trükiplaadi (PCB) montaažiskeem

Dioodid

Diood vilgub 38 kHz sagedusel, selle sagedusele reageerib vastuvotja. Kaugus objektile saab reguleerida kahe viisiga:

1. Sageduse muutumine (38 kHz koige suurem kaugus)

2. Vahetada resistrit (suurem takistus, vaiksem kaugus)

Kaugus soltub ka objekti materjalist

Anduri test erinevate materjalide reageerimisele (ühel sagedusel)

Materjal Kaugus (sm)
paberileht 15
käsi 8
must rahakott nahast peaaegu ei reageeri materjal
peegel 35
fotopaber 15-18
valge puuvilli kude 12
punane paber 15-18
roheline paber 15-18
kollane paber 15-18
hiirematt 12
tekstoliit 9
vask tekstoliitil35
vineer 16

0830762951e049.jpg

Sensor

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 sellist roboti juhtprogrammi juba suhteliselt lihtne koostada. Kui robot märkab takistust ees, siis ta pöörleb sinna, kus takistust pole. Kui nii vasakul kui paremal takistust ei ole, siis ta pöörleb vasakule. Kui robot märkab takistust kas vasakul või paremal, siis ta pöörleb vastassuunas 45 kraadi nurgal. 083076299db624.jpg

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

http://depositfiles.com/files/q85y2a2zw - .hex file ATmega48'le

http://depositfiles.com/files/684l89o2z - .hex file ATmega8'le

	#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; //takistus ees
			break;
			}
			if((IR_RESR_PIN&(1<<IR_RESR))==0)
			{
			cli();
			wall = 2;//takistus paremal
			break;
			}
			if((IR_RESL_PIN&(1<<IR_RESL))==0)
			{
			cli();
			wall = 3;//takistus vasakul
			break;
			}
		}
		return wall;
	}
	int main()
	{
		TCCR0 = 1<<CS00|1<<CS01|0<<CS02;
		TIMSK = 1<<TOIE0;
		IR_RESR_DDR &=~(1<<IR_RESR); //Vastuvõtt IR vastuvõtjast
		IR_RESR_DDR &=~(1<<IR_RESR);
		IR_RESR_DDR &=~(1<<IR_RESR);
		IR_LEDR_DDR |= 1<<IR_LEDR; //Saatmine IR signaali
		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; //Parem mootor edasi
				MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
				MOTOR_L1_PORT &=~ (1<<MOTOR_L1);//Vasak mootor tagasi
				MOTOR_L2_PORT |= 1<<MOTOR_L2;
				_delay_ms();//Viivitus pöörlimiseks
				MOTOR_R1_PORT &=~ (1<<MOTOR_R1);
				MOTOR_L2_PORT &=~ (1<<MOTOR_L2);
				wall = 4;
			}
			if(wall==2)
			{
				MOTOR_R1_PORT |= 1<<MOTOR_R1; //Parem mootor edasi
				MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
				MOTOR_L1_PORT &=~ (1<<MOTOR_L1);//Vasak mootor tagasi
				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;//Vasak mootor edasi
				MOTOR_L2_PORT &=~ (1<<MOTOR_L2);
				MOTOR_R1_PORT &=~ (1<<MOTOR_R1);//Parem mootor tagasi
				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)//Takistust ei ole, võib sõida edasi
			{
				MOTOR_R1_PORT |= 1<<MOTOR_R1; //Parem mootor edasi
				MOTOR_R2_PORT &=~ (1<<MOTOR_R2);
				MOTOR_L1_PORT |= 1<<MOTOR_L1;//Vasak mootor edasi
				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 ja patareid. Kõik raskemaid komponendid panime alusplaadile masstsentri madalamiseks. Varraste peal on kinnitatud teine plaat peale elektroonikakomponendidega ( mikrokontroller, LED j.n.e ).

08307628312d86.jpg

Top emaplaat

0830762857cd1a.jpg

Ülekanne

083076287d0a96.jpg

Diood ja vastuvõtja

083076289d5873.jpg

Ülevaade eraldamisega

Majanduskalkulatsioon

Komponent Mark Kogus Hind(EEK) 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 ja jootmine olid isetehtud. Tootmise hinda saaks veel alandada, optimeerides komponentide ja materjalikulu. Projekti käigus tutvusime mehhatroonikasüsteemi projekteerimise, valmistamise ja testimisega, mis andis meile esmakordse sellelaadse kogemust.

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.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
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