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.
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.
Robot peab sobima mikroroboti standartide piirangutesse ja peab olema valmistatud kodulabori komponendidest. Ei tohi ületada maksumust 10 000 krooni.
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.
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
Rattakinnistuse joonis
Lähteandmed:
7800 pööred minutis (Faulhaber 2224012S 12V)
Ratta diameeter 4 cm
Hammaste arv: suurel hammasrattal - 24 ja väikel - 9
Kiirus võib reguleerida programmi mutmise kaudu.
Siin on toodud roboti andurite elektriskeem ja vastava trükiplaadi (PCB) montaažiskeem.
Elektriskeem
Trükiplaadi (PCB) montaažiskeem
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 tekstoliitil | 35 |
vineer | 16 |
Sensor
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 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.
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 |
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.
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 ).
Top emaplaat
Ülekanne
Diood ja vastuvõtja
Ülevaade eraldamisega
Komponent | Mark | Kogus | Hind(EEK) | Maksumus |
---|---|---|---|---|
Mootor | Faulhaber 12V | 2 | 150.- | 300.- |
Mikrokontroller | AVR ATmega8 | 1 | 100.- | 100.- |
Mootorite draiver | L293D | 1 | 40.- | 40.- |
Kondensaator | CPOL-EUE2-5 1000mkF | 1 | 10.- | 10.- |
Infrapunane vastuvõtja | IRM8601S | 3 | 30.- | 90.- |
LED | LED5MM | 3 | 3.- | 9.- |
Resistor | R-EU_R1206 10kOm | 1 | 1.- | 1.- |
Resistor | R-EU_R1206 510 Om | 3 | 1.- | 3.- |
Nupp | BUTTON_6MM | 1 | 20.- | 20.- |
Ratas | 30/5 mm | 2 | 15.- | 30.- |
Patareid | Sony alkaline AAA | 3 | 10.- | 30.- |
Erinevad kaablid | 1m | 10.- | 10.- | |
Muud tarvikud | 100.- | 100.- | ||
KOKKU: | 643.- |
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.