This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:projects:tudengid11:mikrorobot [2011/04/08 04:41] – mihhail smirnov | et:projects:tudengid11:mikrorobot [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Mikrorobot ====== | ||
| + | |||
| + | Kui me valisime milline robot alustada proekteerida, | ||
| + | |||
| + | ===== Meeskond ===== | ||
| + | * Serov Vyacheslav | ||
| + | * Konstantin Tšistjakov | ||
| + | * Aleksandr Bõkov | ||
| + | * Jana Iljina | ||
| + | * Igor Vinogradov | ||
| + | ===== Nädalaaruanded ===== | ||
| + | - Nädal 1 {{http:// | ||
| + | - Nädal 2 {{http:// | ||
| + | - Nädal 3 {{http:// | ||
| + | |||
| + | ===== 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 ===== | ||
| + | {{: | ||
| + | |||
| + | Süsteemi mudel kirjeldab süsteemi struktuuri, käitumist jt. olulisi aspekte. | ||
| + | |||
| + | ===== Ideelahendused ===== | ||
| + | |||
| + | Kui me hakkasime mõtlema roboti mehaanilisest osast ja gabariididest, | ||
| + | |||
| + | < | ||
| + | ===== 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// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | // | ||
| + | |||
| + | ==== 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 | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | Kiirus võib reguleerida programmi mutmise kaudu. | ||
| + | |||
| + | ===== Elektroonika ===== | ||
| + | Siin on toodud | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | // | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | // | ||
| + | |||
| + | ===== 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| s | ||
| + | |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| | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | //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, | ||
| + | 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. | ||
| + | {{http:// | ||
| + | ^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:// | ||
| + | |||
| + | http:// | ||
| + | |||
| + | <code c> | ||
| + | #define F_CPU 8000000L | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include " | ||
| + | int wall = 4; | ||
| + | ISR(TIMER0_OVF_vect) | ||
| + | { | ||
| + | IR_LEDR_PORT^=1<< | ||
| + | IR_LEDL_PORT^=1<< | ||
| + | IR_LEDF_PORT^=1<< | ||
| + | TCNT0=time; | ||
| + | } | ||
| + | int wall_on() | ||
| + | { | ||
| + | TCNT0 = time; | ||
| + | sei(); | ||
| + | while(1) | ||
| + | { | ||
| + | if((IR_RESF_PIN& | ||
| + | { | ||
| + | cli(); | ||
| + | wall = 1; //takistus ees | ||
| + | break; | ||
| + | } | ||
| + | if((IR_RESR_PIN& | ||
| + | { | ||
| + | cli(); | ||
| + | wall = 2;// | ||
| + | break; | ||
| + | } | ||
| + | if((IR_RESL_PIN& | ||
| + | { | ||
| + | cli(); | ||
| + | wall = 3;// | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | return wall; | ||
| + | } | ||
| + | int main() | ||
| + | { | ||
| + | TCCR0 = 1<< | ||
| + | TIMSK = 1<< | ||
| + | IR_RESR_DDR & | ||
| + | IR_RESR_DDR & | ||
| + | IR_RESR_DDR & | ||
| + | IR_LEDR_DDR |= 1<< | ||
| + | IR_LEDF_DDR |= 1<< | ||
| + | IR_LEDL_DDR |= 1<< | ||
| + | MOTOR_L1_DDR |=1<< | ||
| + | MOTOR_L2_DDR |=1<< | ||
| + | MOTOR_R1_DDR |=1<< | ||
| + | MOTOR_R2_DDR |=1<< | ||
| + | while(1) | ||
| + | { | ||
| + | wall_on(); | ||
| + | if(wall==1) | ||
| + | { | ||
| + | MOTOR_R1_PORT |= 1<< | ||
| + | MOTOR_R2_PORT &=~ (1<< | ||
| + | MOTOR_L1_PORT &=~ (1<< | ||
| + | MOTOR_L2_PORT |= 1<< | ||
| + | _delay_ms();// | ||
| + | MOTOR_R1_PORT &=~ (1<< | ||
| + | MOTOR_L2_PORT &=~ (1<< | ||
| + | wall = 4; | ||
| + | } | ||
| + | if(wall==2) | ||
| + | { | ||
| + | MOTOR_R1_PORT |= 1<< | ||
| + | MOTOR_R2_PORT &=~ (1<< | ||
| + | MOTOR_L1_PORT &=~ (1<< | ||
| + | MOTOR_L2_PORT |= 1<< | ||
| + | // | ||
| + | MOTOR_R1_PORT &=~ (1<< | ||
| + | MOTOR_L2_PORT &=~ (1<< | ||
| + | wall = 4; | ||
| + | } | ||
| + | if(wall==3) | ||
| + | { | ||
| + | MOTOR_L1_PORT |= 1<< | ||
| + | MOTOR_L2_PORT &=~ (1<< | ||
| + | MOTOR_R1_PORT &=~ (1<< | ||
| + | MOTOR_R2_PORT |= 1<< | ||
| + | // | ||
| + | MOTOR_L1_PORT &=~ (1<< | ||
| + | MOTOR_R2_PORT &=~ (1<< | ||
| + | wall=4; | ||
| + | } | ||
| + | if(wall==4)// | ||
| + | { | ||
| + | MOTOR_R1_PORT |= 1<< | ||
| + | MOTOR_R2_PORT &=~ (1<< | ||
| + | MOTOR_L1_PORT |= 1<< | ||
| + | MOTOR_L2_PORT &=~ (1<< | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code c> | ||
| + | #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, | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | //Top emaplaat// | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | // | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | //Diood ja vastuvõtja// | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | //Ülevaade eraldamisega// | ||
| + | |||
| + | ===== Majanduskalkulatsioon ===== | ||
| + | ^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: | ||
| + | |||
| + | ===== 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, | ||
| + | |||
| + | Töö lõpus selgus tõsiasi, et roboti korralikuks töötamiseks on vaja oluliselt rohkem aega planeerida testimisele, | ||
| + | |||
| + | Kokkuvõteks arvame, et projekt oli huvitav ja hariv ning andis aimu integreeritud süsteemide projekteerimisest ja valmistamisest. | ||
| + | |||
| + | ===== Viited ja kasutatud materjalid ===== | ||
| + | |||
| + | - Kodulabori juhendmaterjal http:// | ||
| + | - ATmega128 andmeleht | ||
| + | - Dudziak, R., Köhn, C., Sell, R., Integrated Systems & Design, TUT Press, 2008 | ||
| + | - www.atmel.com | ||
| + | - www.elfa.ee | ||
| + | |||