BROB 2016 ROBOTIKA SEMESTRÁLNY PROJEKT B12. ROBOTIC ARM

Σχετικά έγγραφα
Obvod a obsah štvoruholníka

Matematika Funkcia viac premenných, Parciálne derivácie

Start. Vstup r. O = 2*π*r S = π*r*r. Vystup O, S. Stop. Start. Vstup P, C V = P*C*1,19. Vystup V. Stop

1. písomná práca z matematiky Skupina A

7. FUNKCIE POJEM FUNKCIE

3. Striedavé prúdy. Sínusoida

AerobTec Altis Micro

Pevné ložiská. Voľné ložiská

M6: Model Hydraulický systém dvoch zásobníkov kvapaliny s interakciou

Prechod z 2D do 3D. Martin Florek 3. marca 2009

1. Limita, spojitost a diferenciálny počet funkcie jednej premennej

PRIEMER DROTU d = 0,4-6,3 mm

Goniometrické rovnice a nerovnice. Základné goniometrické rovnice

HASLIM112V, HASLIM123V, HASLIM136V HASLIM112Z, HASLIM123Z, HASLIM136Z HASLIM112S, HASLIM123S, HASLIM136S

Matematika 2. časť: Analytická geometria

Moderné vzdelávanie pre vedomostnú spoločnosť Projekt je spolufinancovaný zo zdrojov EÚ M A T E M A T I K A

Priamkové plochy. Ak každým bodom plochy Φ prechádza aspoň jedna priamka, ktorá (celá) na nej leží potom plocha Φ je priamková. Santiago Calatrava

24. Základné spôsoby zobrazovania priestoru do roviny

ARMA modely čast 2: moving average modely (MA)

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Matematický model robota s diferenciálnym kolesovým podvozkom

Ekvačná a kvantifikačná logika

Servopohon vzduchotechnických klapiek 8Nm, 16Nm, 24Nm

Matematika prednáška 4 Postupnosti a rady 4.5 Funkcionálne rady - mocninové rady - Taylorov rad, MacLaurinov rad

Motivácia pojmu derivácia

Návrh vzduchotesnosti pre detaily napojení

UČEBNÉ TEXTY. Pracovný zošit č.2. Moderné vzdelávanie pre vedomostnú spoločnosť Elektrotechnické merania. Ing. Alžbeta Kršňáková

7 Derivácia funkcie. 7.1 Motivácia k derivácii

Riešenie rovníc s aplikáciou na elektrické obvody

Gramatická indukcia a jej využitie

KLP-100 / KLP-104 / KLP-108 / KLP-112 KLP-P100 / KLP-P104 / KLP-P108 / KLP-P112 KHU-102P / KVM-520 / KIP-603 / KVS-104P

6 APLIKÁCIE FUNKCIE DVOCH PREMENNÝCH

,Zohrievanie vody indukčným varičom bez pokrievky,

Metódy vol nej optimalizácie

Meranie na jednofázovom transformátore

Staromlynská 29, Bratislava tel: , fax: http: // SLUŽBY s. r. o.

C. Kontaktný fasádny zatepľovací systém

KATALÓG KRUHOVÉ POTRUBIE

Kompilátory. Cvičenie 6: LLVM. Peter Kostolányi. 21. novembra 2017

Transformátory 1. Obr. 1 Dvojvinuťový transformátor. Na Obr. 1 je naznačený rez dvojvinuťovým transformátorom, pre ktorý platia rovnice:

Motivácia Denícia determinantu Výpo et determinantov Determinant sú inu matíc Vyuºitie determinantov. Determinanty. 14. decembra 2010.

Model redistribúcie krvi

KATEDRA DOPRAVNEJ A MANIPULAČNEJ TECHNIKY Strojnícka fakulta, Žilinská Univerzita

Kontrolné otázky na kvíz z jednotiek fyzikálnych veličín. Upozornenie: Umiestnenie správnej a nesprávnych odpovedí sa môže v teste meniť.

u R Pasívne prvky R, L, C v obvode striedavého prúdu Činný odpor R Napätie zdroja sa rovná úbytku napätia na činnom odpore.

Cvičenie č. 4,5 Limita funkcie

DOMÁCE ZADANIE 1 - PRÍKLAD č. 2

Riadiaca karta PiDi_3805

1 Prevod miestneho stredného slnečného času LMT 1 na iný miestny stredný slnečný čas LMT 2

ARMA modely čast 2: moving average modely (MA)

Zadanie pre vypracovanie technickej a cenovej ponuky pre modul technológie úpravy zemného plynu

Modul pružnosti betónu

Akumulátory. Membránové akumulátory Vakové akumulátory Piestové akumulátory

KAGEDA AUTORIZOVANÝ DISTRIBÚTOR PRE SLOVENSKÚ REPUBLIKU

Metodicko pedagogické centrum. Národný projekt VZDELÁVANÍM PEDAGOGICKÝCH ZAMESTNANCOV K INKLÚZII MARGINALIZOVANÝCH RÓMSKYCH KOMUNÍT

x x x2 n

Chí kvadrát test dobrej zhody. Metódy riešenia úloh z pravdepodobnosti a štatistiky

23. Zhodné zobrazenia

Numerické metódy Zbierka úloh

Z O S I L Ň O V A Č FEARLESS SÉRIA D

M8 Model "Valcová a kužeľová nádrž v sérií bez interakcie"

Riadenie zásobníkov kvapaliny

ZADANIE 1_ ÚLOHA 3_Všeobecná rovinná silová sústava ZADANIE 1 _ ÚLOHA 3

STRIEDAVÝ PRÚD - PRÍKLADY

η = 1,0-(f ck -50)/200 pre 50 < f ck 90 MPa

Elektrický prúd v kovoch

vantum s.r.o. VŠETKO PRE ELEKTROERÓZIU V3 Kap.11 / str. 1

Riadenie elektrizačných sústav

Úvod do lineárnej algebry. Monika Molnárová Prednášky

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Podnikateľ 90 Mobilný telefón Cena 95 % 50 % 25 %

difúzne otvorené drevovláknité izolačné dosky - ochrana nie len pred chladom...

MIDTERM (A) riešenia a bodovanie

Vlastnosti regulátorov pri spätnoväzbovom riadení procesov

Život vedca krajší od vysnívaného... s prírodou na hladine α R-P-R

Návod na montáž. a prevádzku. MOVIMOT pre energeticky úsporné motory. Vydanie 10/ / SK GC110000

Rozsah hodnotenia a spôsob výpočtu energetickej účinnosti rozvodu tepla

VT-HADICE & PLAST s.r.o.

MERANIE OPERAČNÝCH ZOSILŇOVAČOV

MOSTÍKOVÁ METÓDA 1.ÚLOHA: 2.OPIS MERANÉHO PREDMETU: 3.TEORETICKÝ ROZBOR: 4.SCHÉMA ZAPOJENIA:

ÚLOHA Č.8 ODCHÝLKY TVARU A POLOHY MERANIE PRIAMOSTI A KOLMOSTI

Odporníky. 1. Príklad1. TESLA TR

Derivácia funkcie. Pravidlá derivovania výrazov obsahujúcich operácie. Derivácie elementárnych funkcií

Rozsah akreditácie 1/5. Príloha zo dňa k osvedčeniu o akreditácii č. K-003

Úprava textu. Použitie schránky: Hlavička a Päta: Poznámka pod čiarou: Modul č.3 WORD pre pokročilých

REZISTORY. Rezistory (súčiastky) sú pasívne prvky. Používajú sa vo všetkých elektrických

Komplexné čísla, Diskrétna Fourierova transformácia 1

Otáčky jednosmerného motora

16. Základne rovinné útvary kružnica a kruh

Riešenie úloh v simulačnom jazyku MATLAB s využitím skriptov a funkcií

RETRobot. David Gustafík

MPO-02 prístroj na meranie a kontrolu ochranných obvodov. Návod na obsluhu

Ohmov zákon pre uzavretý elektrický obvod

Numerické metódy matematiky I

Pilota600mmrez1. N Rd = N Rd = M Rd = V Ed = N Rd = M y M Rd = M y. M Rd = N 0.

Elektronika decentralizovaného riadenia robotického ramena

MERANIE NA IO MH7493A

URČENIE MOMENTU ZOTRVAČNOSTI FYZIKÁLNEHO KYVADLA

UČEBNÉ TEXTY. Moderné vzdelávanie pre vedomostnú spoločnosť Meranie a diagnostika. Meranie snímačov a akčných členov

Súčtové vzorce. cos (α + β) = cos α.cos β sin α.sin β cos (α β) = cos α.cos β + sin α.sin β. tg (α β) = cotg (α β) =.

Transcript:

BROB 2016 ROBOTIKA SEMESTRÁLNY PROJEKT B12. ROBOTIC ARM AUTORI PROJEKTU: FILIP BAÁŠ 173555 ÚAMT FEKT MARTIN BUDAY 173621 ÚAMT FEKT FILIP KRIVOKLATSKÝ 173684 ÚAMT FEKT ŠIMON MARKO 173697 ÚAMT FEKT VEDÚCI PROJEKTU: Ing. FRANTIŠEK BURIAN, Ph.D. 47783 BRNO 2016

NÁZOV PROJEKTU: B12. Robotic Arm ZADANIE PROJEKTU: Navrhněte a realizujte čtyřosý robotický manipulátor vyrobený technologií 3D tisku. Zaměřte se na přesnost polohování a stabilitu. Navrhněte a realizujte ovládací elektroniku k tomuto robotu s použitím procesoru kategorie Atmel AVR. Navrhněte základní software na PC, který robotu dokáže posílat základní příkazy, a tento robot se dle nich bude pohybovat. Konstrukce robotu by měla vyhovovat hře "piškvorky", předpokládá se pokračování v SP/BP. PREREKVIZITY: Hardware, Software (C/C++) DÁTUM ZADANIA: 18.2.2016 DÁTUM ODOVZDANIA: 6.5.2016

Poďakovanie Touto cestou by sme sa chceli poďakovať všetkým, vďaka ktorým sme mohli projekt Robotic Arm realizovať. Hlavne sa chceme poďakovať ústavu ÚAMT, pod ktorým funguje predmet BROB, vďaka ktorému sme mali možnosť pracovať na tomto projekte a vyskúšať si navrhnúť a oživiť vlastného stacionárneho robota. Ďakujeme za to, že nám bolo sprístupnené laboratórium, v ktorom sme mohli pracovať na svojom projekte a využiť 3D tlačiareň. Ďakujeme pánovi Ing. Františkovi Burianovi, Ph.D. ktorý nám bol vždy ochotný vytlačiť potrebné diely a radil nám pri návrhu modelu. Ďakujeme firme, ktorá nám dodala potrebné ložiská ako dar.

Obsah 1. Popis riešenia... 5 2. Hardware... 6 2.1. Výber konštrukcie modelu a návrh pomocou programu Solid Works... 6 2.2. 3D tlač... 9 2.3. Ložiská... 9 2.4. Krokové motory... 10 2.4.1. Drivery pre krokové motory... 12 2.5. Servo... 13 2.6. Arduino Nano... 13 2.7. Gyroskopy MPU-6050... 14 2.8. Napájanie Zdroj... 15 2.9. Návrh riadiacej dosky... 16 3. Software... 18 3.1. Simulácia v Matlabe... 18 3.2. Arduino program... 24 3.3. C# program... 25 4. Možné vylepšenia... 27 4.1. Pridanie kamery... 27 5. Záver/Zhrnutie projektu... 28 4

1. Popis riešenia Stacionárne manipulátory sú v súčasnosti veľmi využívané zariadenia. Využitie nachádzajú vo výrobných fabrikách, kde vďaka svojej nesmiernej presnosti rýchlosti a presnosti nahrádzajú ľudské ruky. Tieto manipulátory sa vyskytujú v rôznych prevedeniach, najčastejšie však ako 3-osé, alebo 6-osé. Tento projekt je zameraný na výrobu a oživenie 4-osého robotického manipulátoru, schopného vykonať jednoduché a aj zložité pokyny, ktoré mu užívateľ zadá. Problematiku stacionárnych robotov a výrobu 4-osého stacionárneho manipulátoru sme si vybrali z dôvodu, že sme chceli vyskúšať tímovú prácu na väčšom projekte, ktorého účelom bol návrh, výroba a konštruovanie zariadenia. Ako študenti na Elektrotechnickej Fakulte sme mali skúsenosti s kreslením modelov v programe SolidWorks a takisto s programovaním v jazykoch C/C++/Matlab, čo bola pre nás obrovská výhoda. Zadanie sme riešili v niekoľkých krokoch. Prvým krokom bolo výber správnych súčiastok pre pohon a riadenie manipulátoru. Následne sme nakreslili a odsimulovali funkčný model v programe SolidWorks. Po doladení modelu, sme si manipulátor vytlačili pomocou 3D tlačiarne. Súčasne s tlačením sme písali program pre simuláciu a riadenie manipulátoru v Exceli a Matlabe. Po skonštruovaní sme spojili Software a Hardware pomocou C# programu a manipulátor oživili. 5

2. Hardware 2.1. Výber konštrukcie modelu a návrh pomocou programu Solid Works Vôbec prvou úlohu, pri riešení tohto projektu, pre nás bol výber správnej konštrukcie robotického manipulátoru. Podmienkami bolo, aby bol jednoduchý, vytlačiteľný pomocou 3D tlačiarne a lacný. Medzi robotickými manipulátormi rôzneho druhu sme našli dva, ktoré nám zo všetkých vyhovovali najviac. Dobot Dobot je jednoduchý 4-osí robotický manipulátor poháňaný tromi krokovými motormi a jedným servo pohonom. Je komerčne vyrábaný a predáva sa v cene $399. Konštrukcia manipulátoru je z hliníku. Je nesmierne presný aj vďaka gyroskopom na svojej konštrukcií a užívateľ ho môže využiť na množstvo úkonov, počnúc kreslením zadaného obrázku až po riadenie pomocou užívateľovej ruky. Obrázok 1Manipulátor Dobot uarm uarm je takisto robotický manipulátor založený na jednoduchom princípe. Je riadený štyrmi servo motormi, čo obmedzuje jeho presnosť. Konštrukcia je voľne stiahnuteľná na internete a užívateľ si ho môže skonštruovať prakticky z ľubovoľného materiálu. Vo väčšine prípadov je riadený pomocou dosky Arduino, no nie je to zásadou. Manipulátor nemá na svojej konštrukcií žiadne gyroskopy, vďaka spätnoväzobnej vlastnosti servo motorov. Tie ho však obmedzujú na maximálne otočenie o 180º okolo z osi otáčania. Obrázok 2 Manipulátor uarm O oboch robotických manipulátoroch sme pozbierali maximum informácií a vďaka ich správnemu skombinovaniu sme sa pokúsili vytvoriť najlepšiu alternatívu týchto robotov. 6

V programe SolidWorks sme vytvorili viacero verzií konštrukcie, kým sme sa všetci zhodli na jednom návrhu. Návrhy konštrukcie: Obrázok 3 Prvý návrh konštrukcie Obrázok 4 Druhý návrh konštrukcie Finálna podoba: Dosiahnuť finálny tvar manipulátoru nám zabralo približne jeden mesiac. Model navrhnutý pomocou programu SolidWorks vo svojej konečnej podobe obsahuje okrem hlavnej konštrukcie aj komponenty ako ložiská, skrutky, matice, dištančné stĺpiky a gyroskopy, a je možné si ho prezrieť v súboroch priložených ku tejto dokumentácií. Obrázok 5 Konečná podoba konštrukcie Konštrukciu sme sa snažil navrhnúť tak, aby mala vhodný design, snažili sme sa vyvarovať ostrým hranám a prednosť sme dávali oblým tvarom. Na boku ramena je z oboch strán napísaný názov manipulátoru armbot a na oboch stranách podstavy je logo Ústavu automatizácie a meracej techniky. 7

Obrázok 6 Konštrukcia - pohľad z boku Rozmery v nulovej polohe: Šírka: 24cm Výška: 32cm Dĺžka: 31cm Váha: ~3,5 kg 8

2.2. 3D tlač 3D tlač je spôsob výroby jednoduchých a niektorých zložitých objektov, zhotovených z rôznych materiálov, zväčša z umelých hmôt. 3D tlač pracuje na princípe nanášania vrstiev roztaveného materiálu a týmto postupom postupne modeluje objekt. Vedenie nášho predmetu nám poskytlo možnosť využiť 3D tlačiareň na účely projektu. Túto možnosť sme s veľkou radosťou prijali a na jej základe sme sa pokúšali vytvoriť konštrukciu, ktorá by bol vytlačiteľná na takejto tlačiarni. Použitý materiál: Materiál, ktorý nám bol poskytnutý, a ktorý sa využili ako konštrukčný materiál pre manipulátor, bol materiál s názvom PLA. Tento materiál je vyrobený z organických materiálov ako napríklad kukurica a cukrová trstina. Je dobre tepelne spracovateľný, lacný, ľahký a pevný. Tento materiál je biologicky rozložiteľný vo voľnej prírode a preto je vo veľa prípadoch vhodná náhrada plastov. 2.3. Ložiská Ložiská sú komponenty zariadení, ktoré zabezpečujú minimálne trenie pri prenose rotačného pohybu. Väčšinou sa skladajú z dvoch klzných plôch, po ktorých sa valia ložiskové guličky. V našom projekte sme takéto komponenty potrebovali, keďže všetky pohyby manipulátoru pozostávajú z rotačných pohybov. Ďalším dôvodom bolo dosiahnutie maximálnej presnosti manipulátoru. Pre tento projekt sme použili tri druhy ložísk: Radiálne ložisko: 638/5 (11x) Obrázok 7 Rozmery ložiska 638/5 9

Radiálne ložisko: 61701 ZZ (1x) Obrázok 8 Rozmery ložiska 61701 ZZ Axiálne ložisko 51112 (1x) Obrázok 9 Rozmery ložiska 51112 2.4. Krokové motory Krokové motory sú elektrické motory, ktorých chod sa skladá z krokov. Jeden krok je pri krokovom motore pohyb, ktorý vykoná krokový motor pri zmene aktívnosti dvoch susedných cievok. Tento krok je možné ešte zjemniť pomocou mikrostepu, ktorý sme v našom projekte využili. Pri výbere vhodných krokových motorov u nás rozhodovala hlavne cena, krútivý moment, váha a uhol o ktorý sa krokový motor otočí pri vykonaní jedného kroku. Výber správneho krokového motoru bol pre nás veľmi dôležitý z dôvodu vysokých cien krokových motorov. 10

NEMA 17 Gear Ratio 14:1 Tento krokový motor bol jeden z mála, ktorý spĺňal naše požiadavky. Mal veľmi malý uhol kroku, ktorý bol ešte zmenšený planétovou prevodovkou (14:1), prijateľnú cenu, váhu a tiež krútiaci moment. Bližšie informácie o motore je možné si prečítať v nasledujúcich tabuľkách: Obrázok 10 Parametre krokového motoru Nema 17 Obrázok 11 Rozmery krokového motoru Nema 17 11

2.4.1. Drivery pre krokové motory Drivery krokových motorov sú obvody, ktoré zabezpečujú jednoduchší spôsob riadenia krokových motorov. Užívateľovi zabezpečuje riadenie krokového motor bez toho, aby si na to musel písať program. Obrovskou výhodou je možnosť nastavenia riadenia pomocou microstepov. Microstep riadenie je riadenie, kedy krokový motor nevykonáva pohyb po celých krokoch, ale po 1/2-1/32 krokoch. Výhodou takéhoto pohybu, je plynulejší chod motora a takisto možnosť jemnejšieho nastavovania uhlov. Nevýhodou je nižšia maximálna uhlová rýchlosť motora. Obrázok 12 Príklad mikrostepu Toto zmenšenie uhlovej rýchlosti je spôsobené tým, že Arduino už nie je schopné generovať tak často impulzy pre drivery. Pre riadenie sme použili drivery DRV8825. Napájanie je potrebné zabezpečiť 8,2 45 VDC (Zdroj, ktorý sme použili má napätie 8,5V). Maximálny prúd, ktorý driver dokáže dodať s externým chladením je 2,2A. Maximálny prúd pre jednu fázu motora je 1,68A. Nastavenie prúdu do fázy je možné pomocou trimra na plošnom spoji. Tento prúd sme kvôli prehrievaniu nastavili na nižšiu hodnotu, konkrétne 1A, ktorá pri danom zaťažení a rýchlosti plne dostačuje. Obrázok 13 Principiálne zapojenie drivera DRV8825 a priebeh výstupného napätia drivera pri použití microstepu x32 12

2.5. Servo Servo malo v našom projekte zabezpečovať štvrtú os, okolo ktorej sa mal robot otáčať. Toto servo sme však do finálnej verzie neimplementovali, lebo nebolo nutné. Na kreslenie nám postačovala trojstupňová voľnosť, pomocou ktorej sme sa dostali všade, kde by sme sa dostali ak by sme servo implementovali. V každom prípade je náš model navrhnutý tak, že je pripravený na servo. Hlava je rozobrateľná a v prípade potreby je možné vložiť modul so servom a pripojiť ho na riadiacu dosku ku Arduinu, kde sú pripravené vstupy až na dve servá. 2.6. Arduino Nano Arduino Nano je voľne šíriteľná doska založená na AVR mikroprocesoroch, konkrétne (ATMEGA 328P). Pre nášho robota sme použili túto dosku. Ovládame ňou krokové motory a komunikujeme s PC programom pomocou sériovej komunikácie. Arduino sme použili pre jeho kompaktnosť, nízku cenu a preto, aby sme nestrácali čas návrhom vlastnej dosky a mohli riešiť dôležitejšie veci. Pri výbere vhodnej dosky sme vedeli, že nepotrebujeme zbytočne predimenzované dosky, ktorých potenciál by sme nevyužili a Arduino Nano nám dokázalo zabezpečiť presne to, čo sme potrebovali a vo vhodnej cenovej relácií. Obrázok 14 Rozloženie pinov na doske Arduino Nano Obrázok 15 Rozmery dosky Arduino Nano 13

2.7. Gyroskopy MPU-6050 Obvod, ktorý sme si vybrali (MPU-6050 6DOF 3 Axis Gyroscope+Accelerometer) je vyrobený technológiou MEMS a obsahuje v sebe 3-osý gyroskop a 3-osý akcelerometer na jednom čipe. Mal by dosahovať relatívne vysokú presnosť za nízku cenu. Obsahuje v sebe 16-bitový A/D prevodník na každý kanál, takže dokáže merať hodnoty všetkých natočení súčasne. K Arduinu sa dá pripojiť pomocou zbernice I2C a pomocou ďalšieho pinu, ktorý je pripojený na externé prerušenie Arduina. Tento pin je nastavený, ak sú v danom gyroskope nachystané dáta na prečítanie. Dáta sa potom čítajú cez zbernicu I2C. Obrázok 16 MPU 605 6DOF 3 Axis Gyroscope+Accelerometer 14

2.8. Napájanie Zdroj V našej a aplikácii sme zvolili na napájanie impulzný zdroj. Túto voľbu sme si zvolili preto, lebo klasický transformátorový zdroj by bol pri tomto výkone príliš ťažký a rozmerný. Popis činnosti impulzného zdroja: Vstupné sieťové napätie 230 V / 50 Hz je usmernené a jednoducho filtrované - širokopásmový filter na vstupe zabraňuje prenikaniu rušivých signálov zo zdroja do siete. Elektronický spínač je riadený v slučke spätnej väzby tak, aby výstupné napätie bolo konštantné. Za spínačom je obdĺžnikové napätie o frekvencii desiatok khz a amplitúde podľa vzťahu: u = U VST 2. Toto napätie je upravené impulzným transformátorom s feritovým jadrom na potrebnú veľkosť. Transformované napätie sa usmerňuje Schottkyho diódami a ďalej je filtrované výstupným filtrom. Zdroj spätnej väzby je rovnaký ako pri lineárnych zdrojoch. Navyše je tu obvodom riadený spínač, ktorý mení jednosmerné napätie na obdĺžnikové. Obrázok 17 Bloková schéma impulzného zdroja Pre náš projekt sme si zvolili adaptér SONY SCPH-70100 o menovitom napätí 8,5VDC a prúde 5,6A. Napätie sme volili podľa driver-ov pre motory, kde sme sa mohli pohybovať v rozsahu od 8,2VDC až do 45VDC, no pri hornej hranici napätia sme museli brať ohľad na riadiacu dosku Arduino, kde je použitý stabilizátor ktorý má svoju hornú hranicu približne 25VDC. Prúd je dimenzovaný tak, že adaptér by mal zvládnuť plný výkon všetkých troch motorov a ešte by mala ostať rezerva. Výhodou nášho riešenia je že, zdroj je ľahký a prenosný. Nemusí byť upevnený priamo na kostre manipulátoru a tým pádom nám neruší riadiacu elektroniku a neprehrieva ho. 15

2.9. Návrh riadiacej dosky Keďže sme ku riadeniu manipulátoru použili dosku Arduino Nano, a ovládanie motorov bolo zabezpečené modulmi DRV8825, bolo potrebné navrhnúť dosku, ktorá by bola kompaktná a modulárna. Pre tento účel sme navrhli pomocou software-u Eagle 6.3.0 jednoduchú dosku, na ktorej sú výstupné konektory pre motory, pätice pre dané moduly, filtračné a odrušovacie kondenzátory, konektory pre gyroskopy a microstep natavenie pre každý riadiaci modulu. Doska bola riešená, aby bola čo naj jednoduchšia a najkompaktnejšia. Obrázok 18 Navrhnutá schéma zapojenia pre riadiacu dosku 16

Ako prvé sme navrhli schému a následne samotnú DPS. Pri návrhu sme brali v ohľad umiestnenie modulov. Snaha bola vynaložená na to, aby silová časť nerušila riadiacu. Takisto sme sa snažili o to, aby bola doska prehľadná, jednoduchá na montáž a manipuláciu. Doska je vyrobená metódou nažehľovania a následne vyleptaná chloridom železitým (FeCl3). Je to jednostranná doska bez masky. Pre lepšiu predstavu sme využili funkciu ktorú nám ponúka software Eagle a vytvorili sme si 3D návrh. Pomocou software-u POV Ray v3.6 sme vyrenderovali presnú kópiu tejto dosky. Obrázok 19 Návrh DPS - Eagle Obrázok 21 3D render DPS Obrázok 20 Vyleptaná riadiaca doska 17

3. Software 3.1. Simulácia v Matlabe Pri tlači modelov u nás nastal mŕtvy bod, kedy sme boli obmedzený tým, že nemáme funkčný model a musíme čakať. Preto sme začali písať program pre simuláciu nášho manipulátoru, ktorý ešte fyzicky neexistoval, no vedeli sme jeho parametre a preto sme boli schopný ho presne opísať a napísať pre neho program. Prvý program sme napísali v programe Excel, za pomoci goniometrických funkcií. Vstupom programu boli x, y, z súradnice (súradnice hlavy manipulátoru) a výstupom bolo zobrazenie konečnej pozície manipulátoru na dvoch grafoch. Vstup: Výstup: Vedeli sme však, že tento program nie je dostatočný. Chceli sme simulovať v 3D a dostať ako výstup aj binárny kód, pomcou ktorého sa krokové motory budú riadiť. Preto sme začali písať program v Matlabe. Ako prvé sme sa pokúsili skopírovať výpočty z Excelu a postupne sme na ne začali nabalovať nové funkcie. Výsledok je program, v ktorom ako vstup užívateľ zadá maticu o n riadkoch a 3 stĺpcoch, ktoré predstavujú súradnice x, y, z. Program vytvorí n - 1 priamok a pre každú priamku vypočíta deriváciu uhlu každého z troch krokových motorov. Následne z derivácií Obrázok 22 Fyzický - matematický model motorov začne vytvárať binárnu tabuľku pre riadenie jednotlivých motorov, ktorú vytvára na základe akumulácie hodnôt uhlov voči nastavenému maximálnemu uhlu (pomocou 18

microstep), o ktorý sa motor môže pohnúť. Takto zhotovené tabuľky pre všetky priamky zlúči do jednej výslednej tabuľky, ktorá obsahuje už len znaky, ktoré si dokáže program v procesore manipulátoru preložiť a riadiť ním motory. Vstup programu môže byť nasledovný: Výstupom sú vykreslené dve trajektórie (ideálna a reálna) a dva grafy, kde na jednom sú priebehy hodnôt uhlov jednotlivých motorov a v druhom sú ich derivácie. Skoky na nulový hodnotu sú spôsobené prestávkami, ktoré program vytvára po dokončení každej priamky. Posledným výstupom programu je *.dat súbor, ktorý obsahuje binárne zakódované riadenie pre každý motor. Tento súbor je možné poslať do procesoru pomocou C# programu a procesor si ho rozkóduje a začne riadiť motory. Obrázok 23 Výstup Matlab programu Využitím spôsobu riadenia pomocou pohybu po priamke, je možné vykresliť ľubovoľný tvar. Vykreslenie oblých tvarov by bolo v tomto prípade realizované vykreslením veľmi krátkych priamok. 19

Diagram programu pre pohyb manipulátoru: Hlavné skripty: Vedľajšie skripty: Funkcie: setup.m arm_pos.m config.m main.m s1_trajectory.m s3_tab_decode.m s2_tab_gen.m ang2xyz.m xyz2ang.m motor_derivation.m tab_decode.m Hlavné scritpy: setup.m Hlavný skript pre užívateľa. Užívateľ si tu pomocou matice C môže zadať pohyb, ktorý chce, aby manipulátor vykonal. Takisto si tu môže užívateľ nadefinovať názov výstupného *.dat súboru, ktorý bude uložený v priečinku tabs, v adresári kde sa nachádza celý program. config.m Vedľajší program pre pokročilého užívateľa. Tu si môže nastaviť offset y a z osí, veľkosť Delay matice, ktorá zabezpečuje pozdržanie manipulátoru pri veľkom uhle medzi dvoma nasledujúcimi priamkami. Môže si nastaviť maximálny uhol pre pozdržanie, nastaviť microstep ktorý je nastavený na driveroch a iteráciu s ktorou chce, aby program počítal. main.m Skript určený pre správy chod celého prepočtu. Zabezpečuje správny postup pri výpočte tabuľky pre riadenie krokového motoru. Z tohto skriptu sa volajú všetky vedľajšie skripty. Nakoniec vytvára súbor *.dat. 20

Vedľajšie skripty: s1_trajectory.m Skript zabezpečujúci vykreslenie ideálnej trajektórie spolu s počiatočnou a konečnou polohou manipulátoru. Využíva funkciu arm_pos.m. s2_tab_gen.m Skript pre vytvorenie binárnej tabuľky pre riadenie krokových motorov. Využíva funkciu motor_derivation.m, ktorá mu posiela derivácie uhlov každého korkového motoru a za pomoci akumulátorov a sumácie z nich vytvára tabuľku. Tabuľka má 6 stĺpcov a n-1 riadkov, kde každá dvojica stĺpcov riadi jeden krokový motor: ρ (Rho) τ (Tau) φ (Phi) Direction Step Direction Step Direction Step Tabuľka 1 Rozloženie kódovaných bitov s3_tab_decode.m Spätnoväzobný skript, ktorý z vytvorenej tabuľky vytvára pohyb, ktorý by mal manipulátor vykonať. Tento skript je určený skôr pre programátora, ktorý môže vidieť ako bude manipulátor reagovať na jeho program, bez toho aby manipulátor fyzicky mal. Funkcie: arm_pos.m Funkcia vytvára konštrukciu manipulátoru v počiatočnej a konečnej polohe a následne tieto údaje vracia skriptu s1_trajectory.m. ang2xyz.m Funkcia, ktorá z uhlov pre každý jeden krokový motor vypočíta aktuálnu polohu v súradniciach x, y a z. xyz2ang.m Funkcia, ktorá z troch súradníc, ktoré predstavujú polohu hlavy manipulátoru, vypočíta všetky pri uhly krokových motorov. motor_dervitaion.m Najdôležitejšia časť celého programu. V tejto funkcií sa celý pohyb postupne, priamka po priamke rozsekáva na jednotlivé stepy. Zoberie sa jedna priamka, a zisťuje sa úsek od počiatku, kedy jeden z troch uhlov prekročí uhol jedného kroku. Ak sa tak stane, tak sa v závislosti od nastavenej iterácie hľadá čo najpresnejšia poloha konečného bodu, aby bol uhol jedného z krokových motorov čo najbližšie ku maximálnemu uhlu jedného kroku. Tento proces sa opakuje pre každú priamku a je ním zaistené, že v každom časovom okamihu sa bude minimálne jeden krokový motor pohybovať maximálnou rýchlosťou. Po spracovaní celého priebehu funkcia vráti do skriptu s2_tab_gen.m dve vygenerované tabuľky. V jednej sú hodnoty všetkých uhlov pri každom kroku a v druhej sú ich derivácie. tab_decode.m V tejto funkcií sa vykresľuje pohyb, ktorý vytvorí manipulátor po zadaní vygenerovanej tabuľky. Simuluje pohyb manipulátoru. 21

Poloha uhlov: Obrázok 25 Poloha uhlov - pohľad z vrchu Obrázok 24 Poloha uhlov - pohľad z boku Obrázok 26 Zobrazenie priebehu zmeny uhlov v závislosti od kroku V nasledujúcom grafe je možné si všimnúť, že v každom časovom okamihu pracuje minimálne jeden krokový motor na maximum, kde maximum pre každý motor je 0,03277º pre jeden krok pri použití x4 microstep. Obrázok 27 Zobrazenie derivácií uhlov v závislosti od kroku 22

Obrázok 28 Derivácie uhlov - priblížený pohľad Po priblížení je možné vidieť, že ani pri jednom kroku, derivácia nepresahuje ±maximálny uhol kroku, ale iterácia nastavená na hodnotu 5 sa dokáže dostatočne presne priblížiť tejto hodnote. Problémy: Tento problém sa vyskytoval pri vykresľovaní tvaru, ktorý pozostával z veľkého množstva priamok a bol spôsobený tým, že Po dokončení výpočtu pre jednu priamku, si program myslel že je v správnej pozícií, ktorú však vplyvom použitia akumulátorov nebolo možné dosiahnuť. Tento problém sa vyriešil tým, že sa po dokončení priamky prepísala Obrázok 29 Problém nepresného výpočtu a jeho riešenie ideálna súradnica počiatku nasledujúcej priamky na reálu a efekt nepresného vykresľovania sa stratil. Takisto sa teraz po vrátení do počiatočnej polohy stratí maximálne ±1 krok na každý krokový motor, kde sa bez ošetrenia tohto problému strácali desiatky krokov. 23

3.2. Arduino program Program je písaný vo vývojovom prostredí Arduino IDE, kde je možné písať programy v C/C++. V tomto projekte je Arduino použité iba ako medzičlen medzi PC a drivermi, pretože slúži iba na sprostredkovanie dát vypočítaných pomocou PC v Matlabe. 1. Ovládanie krokových motorov: Na ovládanie krokových motorov sme použili drivre DRV8825, ktoré zabezpečujú generovanie potrebných signálov pre motory. Tým, že sme použili mikrostep x4, na výstupe drivera, teda na svorkách motora môže byť až 16 rôznych úrovní napätia, tým dosiahneme jemnejší krok. Na posielanie dát do driverov sme použili knižnicu AccelStepper od autora Mike McCauley, ktorá je voľne šíriteľná (licencie GPL) a má implementované všetky potrebné funkcie na ovládanie motorov, potrebné je iba nastaviť parametre: max. rýchlosť, zrýchlenie a dĺžku pulzu pre driver. 2. Program dokáže pracovať v 2 režimoch: 1. Režim, v ktorom môžeme ovládať absolútne polohu každého motora. Stačí zadať príslušné súradnice a motory sa posunú do zadanej polohy. Polohu každého motora nastavíme v programe a ten ju automaticky odošle do Arduina, ktoré túto požiadavku spracuje a vykoná. 2. Režim, kedy program prijíma z PC jednotlivé inštrukcie. Inštrukcia vždy obsahuje informáciu či sa má daný motor v danom časovom okamihu posúvať alebo nie a smer posunutia. Inštrukcie sú v Arduine ukladané do buffera, z ktorého sa potom pomocou prerušenia s definovaným časovým intervalom postupne načítavajú. Veľkosť buffera je nastavená na 512. Do buffera je na začiatku vždy potrebné nahrať aspoň 250 inštrukcií, aby sa začali vykonávať. Ak počet inštrukcií v bufferi klesne pod hranicu 200, je vygenerovaná požiadavka do PC, ktorá zabezpečí poslanie ďalších inštrukcií. 24

3.3. C# program Program je písaný v prostredí Microsoft Visual Studio 2013 v jazyku C# ako Windows Forms Application. Program sa v tomto prostredí vytvára ľahko, pretože všetky potrebné súčasti, ktoré potrebujeme jednoducho vložíme z Toolboxu (tlačidlá, textové polia, posuvníky a sériový port). Obrázok 30 Program na ovládanie armbota Obrázok 31 Konzola na ladiace účely programu armbot Na začiatku programu treba nadviazať komunikáciu s Arduinom pomocou sériového portu, ktorý vyberieme zo zoznamu. V programe potom môžeme na troch posuvníkoch nastaviť hodnotu natočenia každého motora. alebo ju priamo zadať do textového poľa na pravom kraji. Nad každým textovým poľom sa nachádza súčasná hodnota natočenia motora. Pri zmene jednej z týchto hodnôt, program automaticky pošle do Arduina reťazec s danými hodnotami natočenia. Pri zadávaní cez textové pole je nutné stlačiť Enter. Pre vrátenie armbota do počiatočnej polohy môžeme použiť tlačidlo Zero, ktoré pošle do Arduina reťazec s nulovými hodnotami. Tlačidlo Get Position slúži na získanie presnej polohy armbota z Arduina a tiež na zobrazenie počtu nespracovaných znakov v Arduine cez sériový port (túto funkciu sme využili pri ladení programu). Ďalšie 3 tlačidlá slúžia na odoslanie sekvencie príkazov vygenerovaných z Matlabu. Najskôr treba stlačiť tlačidlo Open Sequence a v dialógovom okne vybrať daný súbor. Ten je po otvorení spracovaný a pošle sa prvých 300 inštrukcií. Ďalšie inštrukcie sú odoslané až po príchode požiadavky z Arduina (je to možné vidieť aj v ladiacom konzolovom okne). Sekvenciu inštrukcií môžeme kedykoľvek prerušiť alebo po vykonaní znovu opakovať stlačením tlačidla Repeat. 25

Natočenie motora malého ramena [kroky] V hornom menu sú pre účely ladenia vytvorené funkcie na vypnutie a zapnutie driverov motorov a funkcia na zapnutie a vypnutie ladiacej konzoly. Oba programy majú nastavené limity polohy, do ktorých môžeme motory maximálne presunúť, aby mechanické časti robota spolu nekolidovali. Tieto hodnoty sme získali experimentálne tak, že sme robota uviedli do krajných polôh a hodnoty natočenia si zapísali. Z týchto hodnôt sme spravili aproximácie v exceli pomocou metódy najmenších štvorcov a výsledné rovnice implementovali do programov. V nasledujúcom grafe je vidieť, že maximálny uhol natočenia motora malého ramena sa mení v závislosti na natočení veľkého ramena. 1400 1200 1000 800 600 400 200 0-200 -400-600 -800-1000 -1200-1400 -1600-1800 Závislosť maximálneho natočenia motora malého ramena od natočenia motora veľkého ramena y = 1077 Pracovná oblasť y = -0,94666667x + 130,33333333 y = - 1383-1600 -1400-1200 -1000-800 -600-400 -200 0 200 400 600 800 1000 1200 1400 Natočenie motora veľkého ramena [kroky] Graf 1 Závislosť maximálneho natočenia motora malého ramena od natočenia motora veľkého ramena Problém s určovaním nulovej polohy robota a jeho riešenie V našom projekte sme na určovanie nulovej polohy ramena plánovali použiť gyroskopy MPU-6050. Potrebovali sme iba údaj o natočení daného rameno. Po odskúšaní daných gyroskopov sme zistili, že hodnota z gyroskopu sa ustáli až po relatívne dlhom čase, rádovo minúty. Preto sme túto možnosť vylúčili a do nulovej polohy je potrebné robota nakalibrovať manuálne. 26

Ďalšou funkciou, ktorá sa v menu programu v PC nachádza je tlačidlo TicTacToe. Stlačením tohto tlačidla začne robot kresliť hraciu plochu pre piškôrky a keď ju dokreslí, zobrazí príslušné tlačidlá na vypĺňanie hracej plochy. Na vyplnenie políčka si môžeme vybrať buď krížik X alebo krúžok O zaškrtnutím príslušného políčka v programe. Obrázok 32 Program pre hranie hry piškôrky Takto môžeme postupne vyplniť celé hracie pole. Táto funkcia je zatiaľ iba ukážka, že náš robot vyhovuje tejto hre. 4. Možné vylepšenia 4.1. Pridanie kamery V budúcnosti je možné pridať kameru na konštrukciu manipulátoru, ktorá by sledovala ťahy protihráča. Následne by sa údaje z kamery spracovali v počítači a rozhodli o najlepšom ťahu pre manipulátor. 27

5. Záver/Zhrnutie projektu Našou úlohou bolo navrhnúť a vyrobiť robotické rameno za pomoci technológie 3D tlače. Takisto sme mali správne zvoliť pohony a riadiacu elektroniku a na záver vytvoriť programy, ktoré sú k tomu potrebné. Ako prvé sme začali s návrhom konštrukcie. Pri návrhu sme museli riešiť viacero problémov (spôsoby uchytenia jednotlivých dielov ku sebe, spôsob uchytenia motorov, vytvorenie prevodu, ktorý by zabezpečoval aby hlava ramena bolo stále vodorovne so zemou). Tieto problémy sa nám podarilo vyriešiť a následne sme dali prototyp vytlačiť pomocou 3D tlačiarne. Popri navrhovaní robota, sme vytvorili aj riadiacu dosku s driverami a konektormi vyvedenými na pripojenie gyroskopov a serv. Pri zostavovaní robota sa opäť objavili problémy, ktorým sme ale nemohli zabrániť. Zistili sme, že diely nie sú vytlačené presne v mierke, ale sú mierne skrútené. Na malých dieloch nám toto skrútenie nevadilo, ale na väčších to už bol problém, pretože to spôsobilo vyosenie koncov rameno o približne 5mm. Tento problém sa nám nepodarilo úplne odstrániť a v konečnom dôsledku nepriaznivo ovplyvnil presnosť. Súčasne s tlačou sa začali písať simulačné programy v Exceli a Matlabe, kde Excel iba zobrazoval polohy ramena a Matlab zobrazoval celú trajektóriu pohybu a vygeneroval aj riadiaci kód pre Arduino. Pri písaní programu sa vyskytli rôzne problémy, ako napríklad nepresný matematický popis reálneho modelu, ktorý bolo nutné mierne upraviť. Takisto problém, kedy pri vykreslení väčšieho množstva priamok program nedokázal presne opísať žiadanú trajektóriu. Po opravení týchto problémov stačilo správne nakalibrovať reálnu nulovú polohu ramena. Po skonštruovaní robota sme sa pustili do písania C# a Arduino programov. Pri testovaní programov sme opäť narazili na problém s komunikáciu s PC. Keď program pracoval v režime, kedy prijímal inštrukcie z PC vznikali časové oneskorenie zo strany PC. Je to spôsobené tým, ako systém Windows spravuje procesy a prideľuje im čas na vykonanie určitej časti programu. Tento problém sme vyriešili vytvorením buffera v Arduine, ktorý si vždy načítal dostatok inštrukcií z PC na plynulý chod ramena. V Matlabe sme následne pomocou vektorov naprogramovali trasu robota (pre testovacie účely sme vykreslili text armbot ). Po spojení simulácie a riadenia, a ošetrení chýb s ktorými sme sa stretli, sme do programu Armbot implementovali hru piškôrky (TicTacToe). Robot na vyžiadanie užívateľa vykreslí hraciu plochu pre hranie piškvoriek 3x3. Následne je možné si vybrať krížik, alebo krúžok a zakresliť ho na požadovanú pozíciu. Z výsledkov, ktoré robot dosiahol môžeme usúdiť, že robot spĺňa požiadavky zadania a je s ním možné hrať hru piškôrky (TicTacToe). 28