• si-foto-2015.jpg
  • si-foto-2016.jpg
  • si-foto2-2015.jpg
  • si-foto2-2016.jpg
  • si-foto3-2016.jpg

1.ročník - 2014

5.ročník - 2018

9. ročník - 2022

2.ročník - 2015

6.ročník - 2019

3.ročník - 2016

7.ročník - 2020

4.ročník - 2017

8.ročník - 2021

Slovo robot prvýkrát použil v roku 1920 český spisovateľ Karel Čapek vo svojom diele R.U.R.. Od vtedy ubehlo veľa rokov, avšak toto slovo používame dodnes.

Roboty sa stali súčasťou našich životov, sú všade okolo nás a my ich už berieme ako samozrejmosť. Málokto však presne vie, ako fungujú a na čo všetko vlastne môžu slúžiť.

Už odmala ma zaujímalo všetko, čo sa dokázalo hýbať a nebolo to živé. Sledoval som roboty, ktoré montujú karosérie áut, roboty, ktoré sa samy dokážu orientovať v priestore a dokonca s ním dokážu spolupracovať bez najmenšej chybičky.

Častokrát, keď som surfoval na internete, padol mi do oka nejeden robot. Vždycky som obdivoval prácu ľudí, ktorí takéto veci dokázali samostatne doma skonštruovať a priviesť k životu.

Raz som narazil na stránku, na ktorej jeden pán predstavoval svoje vlastnoručne skonštruované robotické rameno, avšak dokázal ho ovládať len manuálne. Zdalo sa mi to zaujímavé, ale nemal som prostriedky ani schopnosti na to, aby som niečo, aspoň na takejto úrovni skonštruoval, a tak som sa tým ďalej nezaoberal.

 

V treťom ročníku na našej strednej škole mi pribudol predmet s názvom Mechatronika, kde sme začali preberať základy robotiky, čo sú to vlastne roboty a všetky ich princípy. Tento predmet ma zaujal natoľko, že som si spomenul na nejaké robotické rameno, ktoré som niekedy videl na internete, a tak som po ňom znova začal pátrať.

Akonáhle som znova našiel túto stránku, začal som rozmýšľať, či by som to dokázal, čo by som potreboval pre skonštruovanie, čo by som pozmenil, poprípade vylepšil.

Do rúk sa mi dostal podobný mikrokontrolér ako použil pôvodný autor vo svojom výtvore, a snažil som sa s ním zoznámiť. Skúšal som zapájať jednoduché programy, od LED diód cez prepínače, tlačidlá a potenciometre až po servo motory.

Americký autor sci-fi Isaac Asimov vo svojej poviedke Klamár v roku 1941 použil ako prvý pojem „robotika“.

Taktiež vo svojom diele definoval tri základné zákony robotiky:

  • Robot nesmie ublížiť človeku alebo svojou nečinnosťou dopustiť, aby mu bolo ublížené.
  • Robot musí poslúchať človeka okrem prípadov, keď je to v rozpore s prvým zákonom.
  • Robot sa musí chrániť pred poškodením okrem prípadov, keď je to v rozpore s prvým alebo druhým zákonom.

Množstvo robotov v dnešnej dobe už funguje na princípe umelej inteligencie, čo je pre nás ľudí výhodou. Roboty dokážu pracovať samostatne, avšak niektorí odborníci nás varujú pred tým aby sa nám práve tieto roboty nevymkli spod kontroly a aby sme nedoplatili na svoju zvedavosť, čo všetko dokážu a kam až môžu zájsť.

 

1  Problematika a prehľad literatúry

1.1  Servo motor

1.1.1 Čo je servo motor

Servo motor je základným stavebným prvkom pri stavbe a navrhovaní jednoduchých robotických zariadení.

Skladá sa z malého jednosmerného elektoromotorčeka, najčastejšie na napätie 4,8 až 6V. Prenos krútiaceho momentu na výstupný hriadeľ zabezpečujú ozubené prevody, ktorými je spojený s hriadeľom elektromotora aj potenciometer.

 

1.1.2 Snímanie polohy a uhol otočenia

Úlohou už spomínaného potenciometra je snímanie polohy.

Ak je hriadeľ v správnom uhle, tak sa motor vypne. Ale ak riadiaci obvod zistí že uhol nie je správny, bude točiť motor na správnu stranu dovtedy, pokiaľ nenadobudne správny uhol.

Množstvo energie privádzanej do motora je priamo úmerná vzdialenosti, ktorú potrebuje motor na cestu. Takže, ak sa hriadeľ musí otáčať o veľkú vzdialenosť, motor bude bežať na plné obrátky. Ak je potrebné, aby sa hriadeľ posunul len o malú vzdialenosť, motor bude bežať na pomalšie obrátky. Toto priraďovanie energie sa nazýva Proporcionálna kontrola.

Uhol otočenia je určený dobou trvania impulzu. Každé servo má jeden ovládací kábel, po ktorom sa tento impulz prenáša. Servo očakáva impulz každých 20 milisekúnd. Dĺžka impulzu určuje, ako ďaleko sa má motor otočiť.

 

 

Obr. 1. Dĺžka impulzu a zmena uhla natočenia motora

 

1.1.3 Použité servo motory

  • Futaba S3003 – Standard Servo
    •  Modulácia:                 Analógový
    •  Krútiaci moment:      4,8V = 3,17kg/cm

                                                  6,0V = 4,10kg/cm

    •  Rýchlosť:                  4,8V = 0,23sek/60°

                                                    6,0V = 0,19sek/60°

    •  Hmotnosť:                37,0g
    •  Rotačný rozsah:        180°

 

 

  • TowerPro SG90 – Micro Servo
    •  Modulácia:                 Analógový
    •  Krútiaci moment:        4,8V = 1,80kg/cm
    •  Rýchlosť:                  4,8V = 0,10sek/60°
    •  Hmotnosť:                9,0g
    •  Rotačný rozsah:         180°

 

 

1.2 Mikrokontrolér Arduino

1.2.1 Čo je Arduino

Arduino je open-source platforma založená na mikrokontroléri ATMega od firmy Atmel a grafickom vývojovom prostredí, ktoré vychádza z prostredia Wiring a Processing.

Arduino môže byť použité na vytváranie samostatných interaktívnych zapojení, alebo môže byť pripojené k softvéru na počítači.

 

1.2.2  Použitá doska pre mikrokontrolér Arduino UNO

Mikrokontrolér:                                  ATMega328

Prevádzkové napätie:                         5V

Vstupné napätie:                                7-12V

Výstupné napätie:                              6-20V

Digitálne I/O piny:                             14

Analógové vstupné piny:                     6

DC prúd na I/O pinoch:                      40mA

Flash pamäť:                                     32KB, z toho 0,5kb používané pre bootloader

SRAM:                                              2KB

EEPROM:                                         1KB

Taktovacia frekvencia:                       16MHz

 

Obr. 4. Doska pre mikrokontrolér Arduino UNO

 

1.2.3 Programovacie prostredie

Po pripojení dosky cez USB k PC je možné naprogramovať mikrokontrolér cez vývojové prostredie od firmy Arduino.

Obr. 5. Programovacie prostredie pre Arduino

 

Program sa píše medzi dve základné časti:

  • void setup()

{

Príkazy nastavenia pinov

}

 

  • void loop()

{

Jadro programu, ktoré sa opakuje v slučke

}

 

2 Ciele práce

Hlavným cieľom tejto práce bolo zostavenie fungujúceho robotického ramena, ktoré dokáže buď samostatne alebo manuálne pracovať.

Využitie tohto robotického ramena by bolo hlavne na účely vzdelávania a posúvania hraníc praktickej tvorby žiakov. Zariadenie by bolo možné použiť na „propagáciu“ robotiky verejnosti a v neposlednom rade by bolo cieľom sebavzdelávanie, získavanie nových zručností v oblasti programovania, konštrukcie a elektroniky.        

 

3 Materiál a metodika

3.1 Postup práce

3.1.1 Riadiaci panel

Riadiaci panel sme vytvorili z 0,5mm plechu, ktorý sme vystrihli a ohli do požadovaného tvaru.

Na spodnú časť riadiaceho panelu sme umiestnili riadiacu jednotku  Arduino UNO a prepojovací plošný spoj. 

 

Obr. 6. Spodná časť riadiaceho panelu – Arduino UNO, prepojovací plošný spoj

 

Na zadnej časti nájdeme vstup pre USB typ B, vstup pre vstupné napájanie mikrokontroléra Arduino 9V, taktiež konektor pre napájanie servo motorov 5V a sériový 9 pinový port slúžiaci na prenos signálu robotickému ramenu.

 

Obr. 7. Zadná časť riadiaceho panelu – vstupy a výstupy

 

Vrchnú časť tvorí hlavný vypínač, prepínač medzi manuálnym a automatickým módom, signalizačné LED diódy (auto/manual) a potenciometre pre manuálne ovládanie.

 

Obr. 8. Vrchná časť riadiaceho panelu

 

3.2.1 Prepojovací a rozvádzací plošný spoj

Prepojovací plošnýspoj sme vytvorili pomocou metódy jednotných spojov. Spoje sme nakreslili fixkou a následne sme plošný spoj vyleptali v leptacom roztoku a za stáleho miešania sme za 20 minút vyleptali plošný spoj, do ktorého sme následne prispájkovali vodiče smerujúce z potenciometrov, prepínača, napájania, USB, servo motorov a LED diód. Následne sme ho umiestnili do riadiaceho panelu.

 

 
Obr. 9. Prepojovací plošný spoj (príloha č. 1)

 

Rozvádzací plošný spoj sme vyhotovili pomocou metódy jednotných medzier. Medzery boli vyrezané do pásky nalepenej na doske plošného spoja. Taktiež bol leptaný v leptacom roztoku po dobu 15 minút. Do tohto plošného spoja sme prispájkovali pätice, ktoré nám slúžia na prepojenie servo motorov. Taktiež sú z tohto plošného spoja vyvedené vodiče, ktoré sú pripevnené na 9 pinový sériový port, slúžiaci na pripojenie robotického ramena k ovládaciemu panelu.

 

  

Obr. 10. Rozvádzací plošný spoj

 

3.1.3  Skelet robotického ramena

Základný náčrt súčiastok pre skelet sme objavili na internetovej stránke pôvodného autora. Boli však nutné úpravy týchto náčrtov, a to z dôvodu inej veľkosti servo motorov.

Vytlačené a vystrihnuté papierové súčiastky sme prestriekali na priesvitné plexisklo, z ktorého sme následne za pomoci lupienkovej pílky vyrezali základný tvar súčiastok.

 

Obr. 11. Základný nákres súčiastok (príloha č. 2)

 

Obr. 12. Prestriekané súčiastky na plexiskle

 

Neskôr nasledovali detailnejšie úpravy. Pribrusovali sme jednotlivé časti na kotúčovej brúske a následne sme malým pilníkom upravovali drobnosti.

Do súčiastok sme pomaly začali vkladať servo motory a vyvrtávať diery pre 3mm skrutky, ktoré držia celý skelet pohromade. Rozostupy medzi jednotlivými protiľahlými časťami sme dosiahli použitím samoistiacich matíc.

 

Obr. 13. Hotový skelet robotického ramena

 

3.1.4  End effector

Najdôležitejšou časťou celého robotického ramena je end effector, čiže časť, ktorou rameno uchopí predmet, s ktorým chce manipulovať. Tejto časti sme venovali najväčšiu pozornosť. Bolo potrebné vyriešiť problém s pripevnením servo motora, ktorý riadi mechanickú časť tohto uchopovania a taktiež prevod medzi dvoma do seba zapadajúcimi súčiastkami.

 

 

Obr. 14. End effector (príloha č. 2)

 

3.1.5  Program

Program je písaný v oficiálnom programe Arduino.

Postupne sme zapísali príkazy pre načítanie servo motorov:

Servo.servo1;

...

Servo.servo7;

 

Pridelili sme pin každému zariadeniu a miesto zapisovania hodnôt z potenciometrov a prepínača:

const int cervena = 10;

const int zelena = 9;

const int prepinac = 12;

int stavprepinaca = LOW;

int pot1 = 0;

int hodnota1;

...

int pot6 = 6;

int hodnota6;

servo1.attach(1);

...

servo7.attach(7);

 

Neskôr sme prešli k samotnému vykonávaniu pohybov.

Ako prvá je v hlavnom programe umiestnená podmienka, ktorá nám zisťuje, či je prepínač medzi manuálnym a automatickým módom zapnutý alebo vypnutý:

stavprepinaca = digitalRead(prepinac);

if(stavprepinaca==HIGH)

 

Ak je prepínač zapnutý a na výstupe má jednotu (HIGH), čiže signál, tak sa aktivuje manuálny mód a zasvieti zelená kontrolka:

digitalWrite(zelena, HIGH);

digitalWrite(cervena, LOW);

 

Následne môžeme zadaním príkazu pre čítanie polohy potenciometra vykonávať zapisovanie hodnoty a posun servo motora na daný uhol:

hodnota1 = analogRead(pot1);

hodnota1 = map(hodnota1, 0, 900, 0, 160);

servo1.write(hodnota1);

...

 

Ak je prepínač vypnutý a na výstupe je nula (LOW), tak podmienka vydá príkaz pre vykonanie automatického módu, zhasne zelená kontrolka a zasvieti červená:

digitalWrite(zelena, LOW);

digitalWrite(cervena, HIGH);

 

Následne sa do hodnôt servo motorov zapisujú presné polohy, presné uhly pootočenia, rýchlosť servo motorov a prestávky medzi danými pozíciami v milisekundách:

servo6.write(70,15,false); 

  servo7.write(48,15,false);

  delay(1800);

  servo1.write(156,15,false)

...

 

Akonáhle sa automatický program skončí, červená kontrolka zabliká pre signalizáciu končiaceho sa programu:

digitalWrite(cervena, LOW);

    delay(500);

    digitalWrite(cervena, HIGH);

    delay(500);

    digitalWrite(cervena, LOW);

    delay(500);

    digitalWrite(cervena, HIGH);

delay(500);

    digitalWrite(cervena, LOW);

    delay(500);

    digitalWrite(cervena, HIGH);

 

 

Ak však prepínač neprepneme do polohy pre automatické riadenie, tak sa automatický program začne samostatne opakovať.

Z dôvodu bezpečnosti sa automatický program, ktorý práve prebieha, nedá prepnúť späť na manuálny, to môže nastať až po ukončení automatického programu.

V prípade zlyhania robotického ramena sa celé zariadenie vypne centrálnym vypínačom na riadiacom paneli.

 

4  Výsledky a diskusia

Po tom, ako sme skonštruovali či už samotné robotické rameno alebo riadiaci panel, nastávali problémy pri testovaní.

Ako prvé sa ukázalo, že servo motory sú síce napájané dostatočným napätím, ale prúd nie je dostatočne veľký. To malo za príčinu, že akonáhle boli servo motory zaťažené čo i len kúsok viac, dochádzalo k neustálim výpadkom. Riešením pridanie samostatného napájania pre servo motory 5V.

Ďalším závažným problémom bolo to, že servo motor, ktorý bol umiestnený na end effectore, sa pri záťaži nadmerne zahrieval a následne sa začal vo vnútri točiť, avšak navonok sa nedialo nič. Následne bolo potrebné tento servo motor nechať vychladnúť a potom fungoval znova chvíľku ďalej, ale chyba sa opäť opakovala. Výsledným riešením tohto problému bolo, že sme museli prerobiť súčiastku, ktorá bola pripevnená na tento servo motor, aby naňho nevyvíjala taký veľký tlak a následne nedochádzalo k prehrievaniu a kolapsu systému.

Posledným pretrvávajúcim, ale nie veľmi závažným problémom je samotné programovanie automatického módu, ktoré je veľmi pracné a vyžaduje neustále skúšanie, opakovanie programu a prepisovanie hodnôt pre dosiahnutie správnej manipulácie s predmetom.

 

5  Záver práce

Výsledkom našej práce je funkčné robotické rameno, pri ktorom máme ako  obsluhujúca osoba možnosť sa rozhodnúť pre manuálne ovládanie alebo pre už vopred definovaný program, ktorý vykoná prácu automaticky a bez zásahu inej osoby.

Toto robotické rameno má široké využitie, či už ako učebná pomôcka, na rôzne prezentačné účely alebo jednoducho pre zábavu.

Mojím ďalším cieľom je neustále pracovať na vývoji a zlepšovaní tohto robotického ramena a do budúcna vybudovať výpomocný program pre programovanie, buď virtuálnou formou, čiže nastavovaním virtuálneho robota na obrazovke PC, alebo  zobrazovaním uhlov pri manuálnom nastavení robotického ramena na obrazovke umiestnenej na riadiacom paneli.

© 2024 Súťaž: Strojár - Inovátor
Back to Top