CNC robot

From Razmjenavjestina-wiki
Jump to: navigation, search

SIG:Elektronika

Contents

CNC Robot

Htjeli bismo napraviti robot za upravljanje alatima, npr automatsko bušenje štampanih pločica, nešto poput CNC mašine ali jednostavno i jeftino da može vozit na open source CNC software. Interesantno, ima i projekt koji ima cijelu logiku CNC u ATMEGA8 mikrokontroleru.

Standardna CNC mašina

Jedna mogućnost je napraviti standardni xyz okvir gdje se alat miče u xz ravnini (lijevo-desno gore-dolje) a materijal u y smjeru (naprijed-nazad). Imamo 3 stupnja slobode, znači da ni alat ni materijal ne mogu mijenjati nagib nego uvijek stoje okomito. Prednost je jednostavniji software a nedostatak je kumulativna greška kod xy zbog tzv. "lufta"

Naša verzija

Druga mogućnost bio bi robot obješen o 8 niti (slično kao marioneta), robocrane zapravo jedna od varijanti Stewart platforme odn. hexapoda. Ideja da napravimo ovo nastala brainstormingom nakon razmjene vještina, skoro da smo otkrili toplu vodu. Naša verzija je da alat visi u zraku obješen o 4 niti prema gore i 4 niti prema dolje ali možemo raditi i NIST verziju sa svim nitima prema gore. Svaka nit ima motor koji je zateže ili otpušta pa se alat može kretati proizvoljno u xyz i mijenjati nagib u 3 osi. Imamo 6 stupnjeva slobode (zato trebamo najmanje 6 niti i 6 motora). Ali nije sve tako jednostavno - da bismo pomoću pomaka motora odredili poziciju treba ih više, najmanje 7 znači najbolje 8). Kad su sve niti pravilno zategnute nema lufta a preciznost je visoka. Robot sa nitima može lako povećati radno područje tako što niti objesimo o veći okvir. Dodatna prednost je to što su niti flexibilne i imaju senzore sile pa se alat neće tek tako slomiti ako malo "oštrije" priđemo materijalu. U softwareu će trebati malo 3D geometrije, zbrajanja vektora al zato će robot biti ultra-cool

Interface prema kompjuteru

Jedan AVR sa 40 pinova kao ATMEGA16 je više nego dovoljan za upravljanje sa 8 step motora i očitavanje 8 analognih senzora sile. Iako se može nabaviti ATMEGA1284P sa 128K, treba što manje logike staviti u mikrokontroler a što više u kompjuter. Linija upravljanja: linux (high level kontrola geometrije i zategnutosti niti) -> usb/serial -> mikrokontroler (low level upravljanje stepovima motora) -> izlazni tranzistor -> zavojnica statora motora.

Upravljanje nitima

Kako upravljati nitima? Na svaku montiramo dinamometar (mjeri silu kojom je nit napeta) i linearni motor. Možemo uzeti steper motor s pužem na osovini i nazubljenim koloturom koji namotava nit - zbog koloture ima praktički neograničen hod. Kolotur napravimo tako da u njega stane samo 1 sloj niti dakle ona se u njemu mota kao spirala, tako da prema koracima možemo odretiti duljinu niti. A može i [http://www.haydonkerk.com/Products/StepperMotorLinearActuators/HybridLinearActuators/tabid/73/Default.aspx hibridni captive step motor] kao size 23 (sila 200N - oko 20kg pri brzini 1-2 cm/s) koji u sebi ima maticu koja se okreće motorom i uvlači/izvlači šaraf koja povlači nit bez rotacije. Taj motor je jako praktičan ali ima mali hod (oko 6cm). Koji god uzeli, super je ako ga se može montirati direktno na nit bez ikakvih drugih ležajeva.

Upravljanje alatom

Kako upravljati alatom? Jednostavno, izaberemo bilo koju poziciju centra alata xyz i 3 kuta rotacije alata oko osi xyz). Izračunamo duljinu svake niti za potrebnu poziciju alata i damo naredbu motorima da napnu niti. Ovaj kratki primjer u maximi to računa za zadane pozicije alata (sredina, 10 stupnjeva yaw, 10 pitch, 10 roll i pomak od sredine). Rotacija mi je malo sumnjiva, provjerite da nisam nešto zbrljavio s matricama. Rezultat toga su duljine svih 6 niti.

Određivanje početne pozicije alata

Na početku ne znamo gdje je alat niti koordinate točaka o koje su niti obješene. Jedino što znamo je broj koraka svakog motora i zategnutost niti. Pretpostavimo da je početna pozicija alata u ishodištu (0,0,0) i da proizvoljno odabrane tri točke vezanja niti definiraju ortogonalne smjerove osi x,y i z. Robot treba istražiti prostor i kalibrirati se tako da zna svoju točnu poziciju u prostoru i poziciju svih točki učvršćenja. Kako? Tako da definiramo koje su nepoznanice i riješimo jednadžbe. Jednadžbe dobijemo tako da pomičemo alat slučajno po prostoru a svakim slijedećim pomakom uvodimo veći broj jednadžbi nego što uvodimo nepoznanica. Zato trebamo više niti od stupnjeva slobode. Tako npr. početnu poziciju alata smo definirali kao ishodište dakle ona je "poznata" ali zato imamo 27 drugih nepoznanica:

Svakim slijedećim pomakom robota dobivamo

Stoga, počevši od 27 nepoznanica, svaki slijedećim pomakom smanjujemo broj nepoznanica za 2 ali povećavamo broj jednadžbi za 8. Nakon 14 pomaka robota možemo ih sve riješiti. Dobićemo impresivni sistem od 111 algebarskih jednadžbi i 111 nepoznanica, a rješićemo ga Maximom egzaktno ili ako to neide metodom sukcesivnih aproksimacija.

Na početku motori slučajno pomiču alat po prostoru a niti se održavaju jednako zategnute. U memoriji se pamte brojeve koraka svakog motora za svaku poziciju.

Simulator

Da se bolje vizualizira rad robota mogli bi ga napraviti pomoću povray raytracera ili još bolje blender 3D modelera koji ima scripting language sa matematičkim formulama i vektorima/matricama, idealno za vektorski račun. Ima i [http://www.foro3d.com/f225/learning-the-blender-game-engine-77053.html tutorial] kako se koristi blenderov game engine. Ovdje je tutorial za realistični model špage koja se dinamično rasteže pa o nju možemo objesiti alat.

Joystick

Ručno upravljanje - trebalo bi simulator interfaceirati na playstation USB joystick gdje možemo sa lijevim padom vozit alat lijevo-desno naprijed-nazad, sa throttle (gas) gore dolje a sa desnim padom kontroliramo nagib yaw-pitch i i roll na buttone.

Reference

Našo sam par dobrih članaka o tome:

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
Razmjena Po Gradovima