Miskolci Egyetem Gépészmérnöki és Informatikai Kar Villamosmérnöki Intézet Elektrotechnikai-Elektronikai Intézeti Tanszék
Villamosmérnöki szak Elektronikai tervezés és gyártás szakirány
Az elektronikai gyártásban használt robotok, azok alkalmazási területei és vezérlésük. Szakdolgozat
Krajnyák Dániel VWHA9K 2014
1
Eredetiségi nyilatkozat Alulírott Krajnyák Dániel (neptun kód:VWHA9k) a Miskolci Egyetem Gépészmérnöki és Informatikai Karának végzős BSc Villamosmérnöki szakos hallgatója ezennel büntetőjogi és fegyelmi felelősségem tudatában nyilatkozom és aláírásommal igazolom, hogy a: Az elektronikai gyártásban használt robotok, azok alkalmazási területei és vezérlésük. című szakdolgozatom saját, önálló munkám; az abban hivatkozott szakirodalom felhasználása a forráskezelés szabályi szerint történt. Tudomásul veszem, hogy plágiumnak számít: - szószerinti idézet közlése idézőjel és hivatkozás megjelölése nélkül; - tartalmi idézet hivatkozás megjelölése nélkül; - más publikált gondolatainak saját gondolatként való feltüntetése.
Alulírott kijelentem, hogy a plágium fogalmát megismertem, és tudomásul veszem, hogy plágium esetén a szakdolgozat visszavonásra kerül.
Miskolc, 2013-11-22
Aláírás
Tartalomjegyzék 1.
BEVEZETÉS ..................................................................................................................................... 3
2.
AZ ELEKTRONIKAI GYÁRTÁS SORÁN HASZNÁLHATÓ ROBOTOK .............................. 4
3.
ROBOTOK OSZTÁLYOZÁSA ...................................................................................................... 5 3.1 ROBOTOK FELOSZTÁSA ...................................................................................................................... 5 ELLÁTANDÓ FELADAT SZERINTI CSOPORTOSÍTÁS ......................................................... 6
4.
4.1 ANYAGKEZELŐ ROBOTOK .................................................................................................................. 6 4.2 MŰVELETVÉGZŐ ROBOTOK ................................................................................................................ 8 4.3 SZERELŐ ROBOTOK ............................................................................................................................ 8 5.
ROBOTOK, MINT MECHANIZMUSOK ..................................................................................... 9
6.
ROBOTOK MORFOLÓGIAI ELEMZÉSE .................................................................................. 9
7.
ROBOTIKAI RENDSZER ELEMEI............................................................................................ 12
8. ELEKTRONIKAI GYÁRTÁSBAN ALKALMAZHATÓ EGYSZERŰBB ROBOT FELÉPÍTÉSEK ........................................................................................................................................ 13 8.1 Mozgó asztalos kivitel ................................................................................................................. 13 8.2 Mozgó hidas ................................................................................................................................ 14 8.3 Kinyúló karos robot..................................................................................................................... 15 ROBOTOK ALKALMAZHATÓSÁGÁNAK MÓDJAI ............................................................. 15
9.
9.1 FORRASZTÁSI MEGOLDÁSOK ..................................................................................................... 15 9.1.1 Kontakt forrasztófej .................................................................................................................. 15 9.1.2 Lézeres forrasztás..................................................................................................................... 16 9.1.3 Indukciós forrasztás ................................................................................................................. 17 9.1.4 Mikro láng forrasztó ................................................................................................................ 17 9.1.5 Szelektív hullámforrasztás ........................................................................................................ 18 9.2 DISZPENZÁLÁSI MÓDSZEREK ............................................................................................................ 19 9.2.1 Csapos adagolás ...................................................................................................................... 20 9.2.2 Kontaktnélküli adagoló ............................................................................................................ 21 9.3 CSAVAROZÁS ................................................................................................................................... 22 9.4 JELÖLÉSI MÓDSZEREK ...................................................................................................................... 23 9.4.1 Címkés ...................................................................................................................................... 24 9.4.2 Lézeres jelölés .......................................................................................................................... 25 9.5 ANYAGMOZGATÓ ROBOTOK ............................................................................................................. 26 10.
ROBOTOKAT FELÉPÍTŐ MECHANIKUS ELEMEK ........................................................ 28
11.
ROBOTOK VEZÉRLŐEGYSÉGEI ........................................................................................ 31
12.
LABVIEW VEZÉRLŐPROGRAM MŰKÖDÉSE ................................................................. 33
12.1 AZ ADATFELDOLGOZÁS FOLYAMATA, FELHASZNÁLÓI FELÜLET MŰKÖDÉSE................................... 34 12.2 ADATOK BEOLVASÁSA, MENTÉSE ................................................................................................... 35 12.3 MOZGÁSPARANCSOK FELDOLGOZÁSA AUTOMATIKUS ÉS MANUÁLIS MÓDBAN ............................... 36 12.4 UTASÍTÁSOK FELDOLGOZÁSA ......................................................................................................... 38 12.5 SEBESSÉGVEKTOR KISZÁMÍTÁSA ÉS KOMPONENSEKRE BONTÁSA ................................................... 41 12.6 SEBESSÉGEK ÉS GYORSULÁSOK KORLÁTOZÁSA.............................................................................. 46 12.6.1 Sebesség korlátozása .............................................................................................................. 46 12.6.2 Gyorsulás korlátozása ............................................................................................................ 49
1
12.7 KOMMUNIKÁCIÓ............................................................................................................................. 50 13. VEZÉRLŐÁRAMKÖR KAPCSOLÁSI RAJZA ........................................................................... 54 14. MIKROKONTROLLER PROGRAMJA........................................................................................ 59 14.1 A MIKROKONTROLLER KONFIGURÁLÁSA, VÁLTOZÓK ÉS FÜGGVÉNYEK DEKLARÁLÁSA.................. 60 14.2 FŐPROGRAM ................................................................................................................................... 64 14.3 RX MEGSZAKÍTÁS, ADAT VÉTELE ................................................................................................... 64 14.4 TIMER1 MEGSZAKÍTÁS, LÉPTETÉS KEZELÉSE .................................................................................. 66 14.5 TIMER0 MEGSZAKÍTÁS, GYORSÍTÁS KEZELÉSE ............................................................................... 67 14.6 KÜLSŐ MEGSZAKÍTÁS ..................................................................................................................... 69 15.
A NYOMTATOT ÁRAMKÖR MEGTERVEZÉSE ÉS MEGÉPÍTÉSE .............................. 70
16.
ÁRAMKÖR ÉLESZTÉSE, TESZTELÉS ................................................................................ 74
17.
ÖSSZEFOGLALÓ ..................................................................................................................... 77
18.
KÖVETKEZTETÉSEK ............................................................................................................. 77
19.
SUMMARY ................................................................................................................................. 79
20. FELHASZNÁLT IRODALOM ........................................................................................................ 80 21.
ÁBRAJEGYZÉK ........................................................................................................................ 81
22. MELLÉKLET .................................................................................................................................... 82
1. Bevezetés
Szakdolgozatom témája: ”Az elektronikai gyártásban használt robotok, azok alkalmazási területei és vezérlésük.” Az iparban a robotok alkalmazása már évtizedekkel ezelőtt elkezdődött, azóta megállás nélkül szélesedik az alkalmazásuk köre. Manapság számtalan helyen kihasználják, a gyorsaságukat, pontosságukat és az egyéb előnyös tulajdonságukat. A szakdolgozatomban szeretnék bepillantást nyújtani, hogy az elektronikai gyártás során, hol és hogyan alkalmazhatóak ezek a gépek. A robot szó hallatán talán sokakban a sok csuklóponttal és nagy szabadsági fokkal rendelkező pályavezérlésű robotok jutnak eszébe, amik rendkívül rugalmasan programozhatóak és jól közelítik az emberi kar finom mozgásait is, de sok helyen az alkalmazásuk fölöslegesen nagy költséget jelent, és a robot képességei se lesznek kihasználva. Az ilyen robotok helyet a szakdolgozatomban inkább azokra a jóval egyszerűbb, mindössze három tengellyel rendelkező robotokra szeretnék koncentrálni, amik az adott gyártási körülményhez van tervezve, és a feladataikat minden igényt kielégítően, költség hatékonyan el tudják végezni. A szakdolgozat első felében, összegyűjtöm, hogy mik a robotokat jellemző közös tulajdonságok, azokat milyen felépítésben lehet megvalósítani, és milyen típusú munkákat tudnak elvégezni. A második részben bemutatom, hogy a robotokat, milyen eszközökkel lehet ellátni, és az adott feladat elvégzéséhez mikor melyiket célszerű alkalmazni. A dolgozat harmadik, egyben legnagyobb részében bemutatom, három egymásra merőlegesen elhelyezet tengellyel rendelkező robot, pontvezérlésére alkalmas vezérlőáramkörének az építését és a vezérlő programok fejlesztését. A tervezés során az volt a célom, hogy egy olyan áramkört építsek ami, vezérlési oldalról nem igényel különleges és drága eszközöket, a megfelelő program alkalmazásával és a vezérlő áramkör megépítése után, kis túlzással bármilyen USB porttal rendelkező PC alkalmassá tehető robotvezérlési feladatokra.
2. Az elektronikai gyártás során használható robotok A VDI 2860 irányelv (1981) szerint: „az ipari robot univerzálisan állítható többtengelyű mozgó automata, amelynek mozgás-egymásutánisága (utak és szögek) szabadon – mechanikus beavatkozás nélkül – programozható és adott esetben szenzorral vezetett,
megfogóval,
szerszámmal
vagy
más
gyártóeszközzel
felszerelhető,
anyagkezelési és technológiai feladatra felhasználható.” Tömörebben megfogalmazva: A robot olyan, nyílt kinematikai láncú mechanizmus, amelynek: - minden tengelye irányított mozgásra képes - a rászerelt megfogó vagy műveletet végző eszköze programozható - mesterséges intelligencia funkciókra képes. - automatikus működésre képes - előírt programozható feladatokat végez - együttműködik a környezetével A robot egy mechatronikai egység, azaz a mechanikai, elektromechanikai szerkezeti elemek egyesítésével létrehozott berendezés. [1]
3. Robotok osztályozása Mozgatott mechanika
Ipari manipulátor
Ipari robot
Inteligens szenzort vezérelt robot
point-straight line
contiunuous path robot
sensor controlled
PS
CP
SC
Teleoperációs manipulátor
Pont-szakasz vezérlésű robot
Egyszerű mozgás
Tetszőleges mozgás Nincs program
kötött program
Szervo robot Pályavezérlésú robot
Programozható manipulátor
1. ábra Robotok osztályozása [1]
3.1 Robotok felosztása
Mozgatott mechanizmusokat két fő csoportra oszthatjuk, ipari manipulátorokra és ipari robotokra. Az ipari manipulátorok vezérlése fejletlen, a végrehajtató feladatok száma korlátozott, egy mozgásciklus végrehajtására alkalmasak, programozásuk körülményes. A teleoperációs manipulátorok programmal nem rendelkeznek, ezeket egy ember irányítja, ott alkalmazzák őket ahol a munkavégzés az ember számára veszélyes, vagy fizikai ereje nem elégséges a munka elvégzésére. Ezekben az esetekben a kezelő személyzet egy elzárt helységből irányítja a folyamatot, ahonnan jó rálátása van a folyamatra. Az ipari robotok közös tulajdonsága, programvezérlés. A csoporton belül a legfejletlenebb vezérlési mód a pont-szakaszvezérlés,
A célpontok adottak, a pontokat összekötő pálya tulajdonságait a robot felépítése határozza meg. Nincs útmérés, a koordináták mentén diszkrét helyzetekben van pozícióérzékelés.
Nincs
helyzetszabályozókörös
pozícionálás,
csak
útvezérlés.
Programozása mozgássorrend előírásból és helyzetkapcsolók beállításából áll. Vezérlése PLC szintű. A robotkéz helyzetét csak kevés pontban definiálja. Pályavezérlésű, vagy szervorobotok esetében, a programozott pont pályáját a program meghatározza.
Koordinátánként
külön
útmérővel
rendelkezik
és
helyzetszabályozókörrel pozícionál. A robotfunkciók és pályák számjegyesen programozhatók (CNC típusú vezérlő). Általában van betanítási üzemmód. Intelligens robotok bizonyos mértékű szenzoraltsággal rendelkeznek. Bizonyos pályaelemeket a feladat jellege határoz meg a robot szenzorjainak segítségével.[2]
4. Ellátandó feladat szerinti csoportosítás 4.1 Anyagkezelő robotok
Feladatuk a munkadarabok vagy a műveleti eszközök mozgatása.[3] - adagolás megmunkáló gépre, - megtartás, forgatás (operációhoz, vagy operáció alatt), - áthelyezés program szerint, - válogatás, rendezés, - szerszámozás, szerszámcsere, - mérőeszköz csere, Az
üzemen
belüli
gépesített
anyagmozgatásban
a
legfontosabb
feladat
a
szállítóberendezések (konvejorok, szállítószalagok ) kiszolgálása. A munkadarabok és az alapanyagok fel- és lepakolása. A pakolás során az anyagok rendezettségének magváltoztatása. Pl. rendezet halmazba rakás ún. palettázás.[4]
A szereléshez szükséges anyagokat úgy továbbítsuk a műveletet végrehajtó személynek vagy gépnek, hogy a munkafolyamatot minél hatékonyabban, a lehető legkevesebb mellék idővel ellehessen végezni. Az anyagmozgató robottal szemben támasztott követelmény, a robot szinkronizálása, a szállítóberendezés mozgásához. Magas hozamú szállítóberendezések kiszolgálására, vagy magas számú párhuzamosan dolgozó robotot kell alkalmazni, aminek hátránya a magas költség és a nagy helyfoglalás. Célravezetőbb egyszerűbb felépítésű nagy sebességű berendezéseket alkalmazni. Ezeknek a gépeknek a fontos tulajdonsága a könnyű felépítésű robotkar, ami lehetővé teszi a nagy gyorsulásokat és a pontosságra is jótékonyan hat. Előszeretettel használják ezekre a feladatokra a párhuzamos kinematikájú robotokat.
2. ábra Párhuzamos kinematikájú robot [2]
Ezzel a felépítéssel akár 150m / s 2 gyorsulást és 10 m / s sebességet is képes elérni, ±0,15mm pozícionálási pontosság mellett. Terhelhetőségük néhány kg, tipikusan 2-4kg.
4.2 Műveletvégző robotok Feladatuk műveleti eszközök operatív mozgatása. Jellegzetes alkalmazások: - festés, tisztítás, sorjázás, - pont- és vonalhegesztés, varratlerakó hegesztés, - fúrási, ujjmarási műveletek, - lézeres megmunkálási műveletek, - láng- és plazmasugaras vágás, - mérőeszköz mozgatás, mérés kiszolgálás Ezeket feladatokat végző robotokkal szemben legmagasabbak a pontossági és a merevségi követelmények. Nincs szükség akkora sebességre, mint az anyagmozgatást végző robotok esetében. Nagy szabadsági fokkal rendelkeznek, hogy a munkadarab mozgatása nélkül minél optimálisabb pozícióból tudják elvégezni a feladatukat.
4.3 Szerelő robotok Feladatuk munkadarabok és műveleti eszközök manipulálása, mozgatása. Általában szenzorokkal rendelkezik. A felépítésükkel és képességeikkel szembeni elvárások hasonlóak a műveletvégző robotokhoz, jelentős különbség a használt szerszámokban és a szenzorálltságban figyelhető meg.
Jellegzetes feladatok: - alkatrészek kiválasztása, - alkatrészek orientálása, - alkatrészek összeillesztése, helyezése, - kötések létesítése.
5. Robotok, mint mechanizmusok A robotmechanika egy olyan gépszerkezet, amely az emberi kar mozgásait és munkavégzési mozgásciklusát képezi le. A robot mechanikai testek kinematikai kényszerekkel való összekapcsolásával épül fel. A robotmechanika alkotóelemei tehát: - karok - kényszerek A kényszerek meghatározzák a tagok egymáshoz viszonyított mozgását. Olyan szerkezeteket, amelyek tagok és kényszerek kombinációjából származnak, mechanizmusoknak nevezzük. A robot-mechanika tehát egy térbeli mechanizmus, amelynek tagjai láncszerűen kapcsolódnak, azaz kinematikai láncot képeznek. Ha a kinematikai lánc kezdő és záró tagja ugyanazon merev test, a kinematikai lánc zárt. Azokat a mechanizmusokat, amelyek záró tagja nem az állvány, nyitott kinematikai láncú mechanizmusoknak nevezzük. A kinematikai lánc tagjait kényszerek kapcsolják össze. Egy test akkor áll kényszer hatása alatt, ha a helyzetét meghatározó koordináták nem vehetnek fel tetszőleges értéket, hanem közöttük meghatározott összefüggések állnak fenn. A kényszerek egymáshoz kapcsolódó merev testek vonatkozásában mozgáskorlátozó szereppel bírnak, azaz a mozgások egy csoportját kizárják, míg másokat engedélyeznek, ezek száma adja meg a kényszer szabadságfokainak számát.[4]
6. Robotok morfológiai elemzése A rendezés módszertani alapja, robotmodellen felvett főpont mozgáslehetőségeinek vizsgálata. A robotmechanika olyan gépszerkezet, amely mechanikai testek kinematikai kényszerekkel való egymáshoz kapcsolásával építhető fel, azaz tagok és kényszerek térbeli kombinációi. Ezek a kényszerek az általuk összekapcsolt részeknek egyenes (T) és forgó (R) mozgást engednek meg. A robotok mozgása legtöbbször három tag egymáshoz viszonyított helyzetével leírható. A kétfajta kényszer és a három tag 3
segítségével 2 =8 különböző változatban kapcsolható össze. [5]
A változatok: TTT derékszögű RTT henger koordinátarendszerű (FANUC) TRT henger koordinátarendszerű (ASEA) TTR RRT gömbi koordinátarendszerű (UNIMATE, BOSCH) RTR TRR RRR csuklókaros rendszerű (PUMA) Elterjedt kombinációk: TTT, RTT, RRT, RRR, TRR TTT csoportbeli robotok kényszereit nem csak ortogonálisan helyezik el. Az utóbbi időben egyre nagyobb szerephez jutnak a párhuzamos kinematikájú és trianguláris robotok. A hagyományos robotstruktúráknál a szerszám vonatkoztatási pontjának a helyzetét a karok viszonylag nagymértékű elmozdulásai, vagy szögelfordulásai alapján határozhatjuk meg. Ezeknél a kialakításoknál nagy a mozgatott tömeg, ami hátrányosan befolyásolja a robotok pontosságát. A 3. ábra a jellegzetes struktúrákat és munkatereiket foglalja össze.
3. ábra Robotok struktúrája és munkatere [1]
7. Robotikai rendszer elemei A robotikai rendszer magába foglalja a robot kiszolgálásához tartozó összes gépet és berendezést, valamint a rendszer emberi felügyeletét biztosító kommunikációs csatornákat. - Robot: mint gépészeti berendezés - Robotvezérlő: magába foglalja a robot mozgatására szolgáló különböző szervo motorok meghajtó fokozatát és az ezeket szabályozó interpolációs egységet. A mozgás parancsokat az interpolációs egység dolgozza fel, és ellátja a tengelyvezérlési feladatokat. - Technológiai berendezés: A művelet elvégzéséhez szükséges eszköz, amit a robot pozícionál a megfelelő helyre. - A technológiai berendezés vezérlése: A berendezésnek kommunikálnia kell a robotvezérlővel, annak érdekében, hogy a gépi funkcióit a megfelelő időben, a robot mozgásával összehangoltan tudja elvégezni. - Társberendezés, segédberendezés: A robot munkáját segítő eszköz, ami szükség esetén a munkadarabot a megfelelő pozícióba forgatja, biztosítja a megfelelő orientációt és a rögzítést, elvégezheti a munkadarab cserét is. - Társberendezés vezérlése: A robot vezérlőnél alacsonyabb prioritású, PLC alapú eszköz, ami csak társberendezés vezérléséért felel, figyeli a társberendezés szenzorjait, és biztosítja a szinkront a robotvezérlő egységgel. - Betanító egység: A robot On-line programozásához szükséges kezelő felület, aminek segítségével a gyártócella kezelője, megtanítja robot vezérlőnek a szükséges mozgáspályát és tárberendezéseket vezérlő parancsokat. - Szenzor: A gyártás megfelelő sorrendiségét, minőségét és biztonságosságát biztosító érzékelők. Pl. optikai érzékelők, helyzetkapcsolók, hőmérsékletérzékelők. - Szenzor processzor: A szenzorok jelét elemzi, szükség esetén az adatokat továbbítja a robotvezérlőnek. - Cellavezérlő: A gyártócella minden berendezésére befolyása van a robotvezérlőn keresztül, biztosítja a kapcsolatot a cellák között és a tervező és programozó munkaállomással. - Tervező és programozó munkaállomás: A gyártócella az egész gyártási folyamatot meghatározó adatokat erről a helyről kapja. - Kommunikációs kapcsolatok
4. ábra Szerelőrobot kiszolgáló egységei
8. Elektronikai gyártásban alkalmazható egyszerűbb robot felépítések 8.1 Mozgó asztalos kivitel (5. ábra) (Table - top) előnye, hogy a tengelyeket mozgató motoroknak, az asztal és a munkadarab súlyát kell mozgatniuk, ami gyakra kisebb, mint a mozgóhidas kivitelnél a híd súlya.
5. ábra Szimpla és dupla mozgó asztalos robot
A függőleges konzolok között akár több párhuzamosan elhelyezett Y tengelyt (5. ábra) is ellehet helyezni. Amikor az egyik Y tengely a munkaterületre mozgatja munkadarabot addig a másik tengelyen lehetőség van a munkadarab cseréjére, ezzel a munkadarab cseréjére fordítandó idő nem csökkenti a termelékenységet.[6] A mozgó asztalos felépítés hátránya, hogy nehezebben illeszthető gyártósorba. A gyakran alkalmazott index asztalt nehezen lehet összekapcsolni ezzel a megoldással. 8.2 Mozgó hidas (6. ábra) kivitelnél a hídnak mid a két végét megvezeti egy lineáris
6. ábra Mozgó asztalos kivitel egység. A meghajtás lehet mind a két oldalon, esetleg csak az egyik lineáris egységnél, de ez magában hordozza a kockázatott, hogy a híd hajlamos lesz a befeszülésre, elfordulásra. A kialakítás előnyös tulajdonsága, hogy a munkadarabokat szállító vagy mozgató rendszer fölé tud nyúlni, így nincs minden esetben szükség a munkadarab átpakolására. [7]
7. ábra Kinyúló karos robot 8.3 Kinyúló karos robot A legjobb megközelíthetőséggel rendelkező robotot a 7. ábra mutatja, konvejor pálya vagy indexasztal fölé is könnyedén telepíthető. Hátránya, hogy a több egymásra épülő lineáris egység és a hosszan kinyúló karok miatt, a nagyobb erőt igénylő alkalmazásoknál a stabilitása problémát jelenthet. A kar stabilitása jelentősen változik a lineáris kocsik aktuális pozíciójától.
9. Robotok alkalmazhatóságának módjai
9.1 Forrasztási megoldások 9.1.1 Kontakt forrasztófej Ahhoz, hogy a robotot alkalmassá tegyük forrasztási feladatokra, olyan fejjel kell ellátni, ami magába, foglalja azt az egységet, ami a forraszanyag magolvasztásához szükséges hőmennyiséget biztosítja, ezen kívül szükséges a forraszanyag adagolásáról gondoskodó egység. A legáltalánosabb megoldás, amikor a hőt egy forrasztópákához hasonló eszköz biztosítja. A megfelelő kiképzésű forrasztócsúcsot a robot a forrasztási ponthoz pozícionálja. A páka tengelye a függőlegeshez képest 20-50°-os szögben meg van döntve, annak érdekében, hogy a páka a forszemet és az alkatrészlábat egyszerre melegítse. (8. ábra) A páka teljesítménye ~80-150W, a maximális páka hőmérséklet ~450°C. A forrasztási pont felmelegítése után, a szintén döntött pozíciójú forraszanyag adagoló a megfelelő mennyiségű forraszanyagot a forrasztási pontra juttatja.
A robot felemeli a forrasztó fejet, a forrasztási pont lehűlése után a forrasztott kötés létrejön. A forraszanyagot feltekercselt huzal formájában a forrasztófejen helyezik el, és az adagoló mechanika egy csövön keresztül juttatja a forrasztási pontra a huzalt. A robot az forrasztó fejet a következő forrasztási pontra pozícionál és a folyamat az előzőek szerint megismétlődik.[8]
8. ábra Forrasztófej [3] A forrasztáshoz szükséges hőmennyiséget nem csak hővezetéssel lehet a forrasztási pontra juttatni. 9.1.2 Lézeres forrasztás A lézeres forrasztásnál (9. ábra) a pákát egy lézer egységgel váltják ki, a lézer sugarat a forrasztási pontra fókuszálják, a felmelegedés után a forraszadagoló a pákás módszerhez hasonlóan a forraszpontra juttatja a forraszanyagot. A lézer teljesítménye ~30-120W. A módszer előnye az egyenletesebb és gyorsabb melegítés. Sokkal kisebb alkatrészek is forraszthatóak a módszerrel, a mechanikai kontaktus hiánya miatt az alkatrészt nem mozdíthatja el, így nagy biztonsággal forraszthat SMD alkatrész is. Lézeres forrasztásnál a forrasztóhuzal helyet, forrasztópasztát is alkalmazhatnak. A módszer alkalmazása esetén gondoskodni kell arról, hogy a fémes felületekről a visszaverődőt fénysugár emberek szemébe ne verődhessen vissza, a gépet célszerű teljes burkolattal ellátni. A lézersugarat célszerű egy folyamatosan keskenyedő tölcsérrel körülvenni, amibe gázt vezetnek.
9. ábra Lézeres forrasztófej [4]
A nagy nyomású gáz elfúja a keletkező füstöt a lézersugár útjából, így annak nem kell áthatolni a füstön, ahol, elnyelődhetne teljesítményének egy része. Az alkalmazott gáz lehet levegő vagy nitrogén. A nitrogén alkalmazása előnyösebb, mert elzárja a forrasztási helyet az oxigéntől így az oxidáció megakadályozható. 9.1.3 Indukciós forrasztás Indukciós forrasztás esetén az összeforrasztani kívánt fém felületeket váltakozó indukciójú mágneses térbe helyezik, ami a fémrészekben áramot indukál, és felmelegíti a fémfelületet. A forraszhuzal adagolása hasonló módon történik az előző forrasztási módokhoz. Rendkívül nagy teljesítményigényű forrasztások is kivitelezhetőek a módszerrel, akár 45kVA teljesítménnyel is. Érzékeny elektronikai alkatrészek forrasztása esetén az alkatrész károsodhat, ezért ezt a módszert nem alkalmazzák az ilyen eseteken. 9.1.4 Mikro láng forrasztó Mikro-láng, forrasztási technika esetén a szükséges hőt kisméretű gázláng biztosítja, ezzel a módszerrel nagymennyiségű hőt lehet koncentráltan a forrasztani kívánt helyre juttatni, a módszer viszonylag olcsó. A láng teljesítménye nem szabályozható olyan precizitással, mint az elektromos energiát használó forrasztási megoldásoknál. A forrasztási helyre a forszhuzalt a már megszokott módon juttatják.
9.1.5 Szelektív hullámforrasztás Elektronikai gyártása során előfordul, hogy a panel alkatrészei nem homogének és beültetésre kerülnek SMD és THD típusú alkatrészek is. Az eltérő alkatrész kialakítások miatt a forrasztási technikák is komplexebbé válnak. Újraömlesztéses technika alkalmazása során a kemencében uralkodó hőmérsékletet a furatszerelt alkatrészek műanyag részei nem viselik el, ezért azokat csak később lehet a panelre ültetni és más forrasztási technológiát kell alkalmazni.
10. ábra Szelektív hullámforrasztó [5] A problémára megoldás a szelektív hullámforrasztás. Ez a technológia jól automatizálható, ami előnyös a nagy sorozatban készülő termékek esetén. A megoldás az eddigiektől eltérő kialakítású robotokat igényel, mivel a forrasztást alulról kell elvégezni a panel forrasztási oldalán. A technológiai berendezés egy speciálisan kialakított fúvóka, aminek a csúcsán kialakul egy forraszhullám. (10. ábra) A robot ezt a forraszhullámot pozícionálja a furatszerelt alkatrész lábaira és létrehozza a forrasztott kötést. A megolvasztott forraszanyagot egy szivattyú nyomja a forrasztartályból egy fémcsövön keresztül, fúvókán át a forrasztási pontra. Miután a forraszanyag elhagyta a fúvókát a cső külső falán visszafolyik a forrasztartályba. Annak érdekében, hogy az oxidációt lehető legnagyobb mértékben lecsökkentsék a forrasztási pontra semleges gázt fújnak, jellemzően nitrogént. A pozícionálásnak két módja lehetséges, az első esetben a forrasztófejet mozgatjuk a panel alatt a forrasztási pontokhoz, a módszer hátrányos következménye az, hogy a nagy sebességgel és gyorsulásokkal jellemezhető mozgás során a forraszhullám elveszíti stabilitását, esetleg le is válhat némi anyag a forraszfejről. A pozícionálás után nyugalmi állapotban kell tartani a fejet, amíg a forraszhullám nem stabilizálódik. Ebből a szempontból előnyösebb megoldás a panelt mozgatni a forrasztófej fölé, ilyenkor a forrasztófej csak kismértékű függőleges elmozdulást tud végezni, a forrasztási pont forraszanyagba mártásához.
A panel mozgatása során, nagyobb nehézséget jelent a berendezés On-line gyártósorba integrálása, mert a konvejer pályáról a panelt a mozgató berendezésbe kell helyezni és ott rögzíteni. A megoldástól függetlenül mindkét esetben a forrasztási pontokat folyasztószerrel kell befújni, amit forrasztás előtt egy szórófej fúj a panelra. A forrasztófej és a szórófej elhelyezkedhet egy vagy különálló mozgatómechanikákon is. A forrasztófej olyan anyagból készül, mit a forraszanyag nem nedvesít, így az alkatrészek tisztítása egyszerűbb, és üzemelés során kevésbé oldódik bele a fém alkatrészek anyaga a forraszanyagba. Leggyakrabban alkalmazott anyag a korrózió és hőálló acélok, de előfordul titán alkalmazása is.[9]
9.2 Diszpenzálási módszerek Az elektronikai gyártás során, számos helyen szükség van a különböző folyadékok adagolására, ragasztó és tömítőanyagok egyenletes pontos mennyiségű felvitelére. Többkomponensű anyagok esetén fontos a megfelelő keverési arány és a homogén keveredés. A gyártók a keverésre több módszert is kifejlesztettek. Léteznek passzív és aktív keverőegységek. A passzív keverőknél a folyadékok keveredését a folyadékok áramlása biztosítja miközben a keverőtérben kialakított labirint csatornában haladnak.
11. ábra Adagolók [6]
Az aktív keverőknél egy motor tengelyén lévő lapátsor biztosítja az egyenletes keveredést.
Az adagoláshoz szükséges nyomást is több módon is lehet létrehozni. Elterjedt megoldás a pneumatikus adagolás, a tartályban uralkodó nyomás és a nyomás alatt eltelt idő függvényében változik az adagolt folyadék mennyisége. A módszerrel nagy pontosságot lehet elérni. Másik megoldás a dugattyús adagoló, amikor a tartályba illeszkedő dugattyú nyomja ki a folyadékot. A dugattyú menetes tengelyhez csatlakozik, a tengelyt egy motort forgatja, ami meghatározott szögelfordulásra képes, az elfordulástól függően lehet adagolni a szükséges mennyiségű folyadékot. A motor lehet léptetőmotor vagy szervo motor. A léptetőmotor a tengelye pozíció visszacsatolása nélkül biztosítja a állandó szögelfordulást, szervo motor esetén a motor tengelyén lévő enkóder ad visszacsatolást a tengelypozícióról, így a megbízhatósága nagyobb mint léptetőmotoros megoldásnak. 9.2.1 Csapos adagolás Csapos adagolásnál a ragasztó anyagba kisméretű csapokat mártunk, ezután a szükséges hegyre visszük a csapokat és a felülethez közelítjük őket, a mártás során, a csapokon maradt folyadék átkerül arra a felületre, amire a folyadékot adagolni akartuk.
12. ábra Csapos adagoló [7] Az eljárás egyszerű felépítésű, nem igényel bonyolult berendezéseket és gépeket. Egyszerre több csappal is lehet adagolni, ami termelékenyé teszi a módszert. Könnyű karbantartani és tisztítani. A csapokat tartó foglalatot egyszerűen lehet gyártani. Hátránya, hogy csak sorozatgyártásban kifizetődő az egyedi adagoló fej legyártása. Az adagolás csak pontszerűen jön létre. Érzékeny a folyadék egyenletes minőségére, és a szennyeződésekre. Ha változnak a folyadék fizikai tulajdonságai (viszkozitás, sűrűség),
akkor nehézséget okoz a pontos mennyiség adagolása. Ezért megfelelő figyelmet kell biztosítani a beszállítok ellenőrzésére. 9.2.2 Kontaktnélküli adagoló Nagy sebességet biztosító eljárás, a felület fölött 1-3mm magasságban mozgatják az adagoló fejet, ami kisméretű folyadék cseppeket lő a felületre. A folyamat során a Z tengelyt nem kell mozgatni, ami jótékony hatással, van a sebességre. Az adagolható pontok száma eléri a 150 db/s értéket, a cseppátmérő 25-200µm között állítható, ha nagyobb mennyiségű folyadékot szeretnénk egy pontra juttatni, akkor több pont egymásra nyomtatásával elérhetjük a kívánt eredményt. A pontok egymásmellé nyomtatásával, vonalszerű, folytonos adagolás is megvalósítható.
13. ábra kontaktnélküli adagoló [8]
9.3 Csavarozás
A csavarozás az ipari gyártásban elterjedt kötési mód. Kiváltására nehézkesen megoldható, manapság terjednek a nem oldható kötési módok, mint a ragasztás vagy a hegesztés, de ha biztosítani akarjuk az utólagos javítást, akkor nem lehet megkerülni a csavarozást. Ahhoz, hogy egy robot a csavarozási műveletet el tudja végezni, megfelelő segédberendezésekkel kell ellátni. A segédberendezés két különálló részre osztható, egyik a robot által mozgatott csavarozó fej és a csavarok szállítását és a megfelelő orientációját biztosító berendezés, a csavarok a csavarozó fejig való eljuttatását vagy gravitációs módszerrel biztosítják, egy adagolló csőrendszeren keresztül, vagy sűrített levegővel jutatják az adagolótól a csavarozó fejig. Alkalmazott megoldás a Pick&Place, amikor a robot a munkatér egy meghatározott pontján felvesz adott darabszámú csavart a csavarozó fejen található átmeneti tárolóba és innen adagolja a csavarokat a csavarozási pontok közötti pozícionálás során. Az átmeneti tárolóban lévő csavarokat gyorsan el tudja helyezni, de hátrányos, hogy a csavarozási műveletet meg kell szakítani, amíg újabb csavarokkal, feltölti a tárolót. A csavarozó motorok lehetnek pneumatikus vagy villanymotorok. A pneumatikus motorok egyszerű felépítésűek a meghúzási nyomatékot a működtető levegőnyomás határolja be. Előnyösebb, ha nem a motor
levegőnyomással,
hanem
egy
beállított
nyomatékre
szétkapcsoló
tengelykapcsolóval határoljuk a meghúzási nyomatékot. Villanymotor segítségével a csavarozás rugalmasabban, vezérlőprogramból állítható a különböző csavarok eltérő igényeihez. A csavarozás során a forgó gépelemek energiát halmoznak fel, ami a csavarfej felütközésekor, a lassulás során egy dinamikus nyomaték növekményt ad, ami vezethet a csavar túlhúzásához. A hatást mérsékelni lehet, ha a csavarozást alacsony fordulaton végezzük, hátránya az, hogy csökkelti a művelet időt. Ezért a becsavarást magas, a meghúzást alacsony fordulaton célszerű végezni. Arra, hogy megállapítsuk, mikor kell a csavarozást befejezni, több módszer is elterjedt. A leggyakrabban alkalmazott eljárás, amikor a csavarozó fej által kifejtett nyomatékot mérjük. A nyomaték szabályozás hátránya, hogy a nyomaték kis része fordítódik a kötés előfeszítésére, nagyobb készét a menetsúrlódás (50%) és a csavarfej és a felfekvő felület közötti súrlódás (40%) emészti fel. Így csak nagy bizonytalansággal tudjuk a csavar előfeszítését szabályozni. Előnyösebb a meghúzás, az elfordulási szögalapján, vagy a nyomatéknövekedés gradiense alapján. Ha mérjük a meghúzás során a nyomatékot és az
elfordulási szöget, és a csavarkötés egyik eleme eléri folyáshatárt, akkor a nyomatékelfordulási szög diagram ellaposodik, ez az állapot a leg megfelelőbb a meghúzás befejezésére. A csavarozó fej tengelyére szerelt elektronikus nyomaték- és szöghelyzet jeladó segítségével a robotot vezérlő számítógép meg tudja állapítani a megfelelő megszakítási pillanatot, amikor a folyamat leállítja. Csavarozó fej úgy van kialakítva, hogy amikor az adagolóból megérkezik egy csavar akkor az a csavarfejnél megakad. (14. ábra) A robot a megfelelő helyre pozícionálja a fejet és megközelíti a furatot, a csavarozó szár előre mozdul, és a furathoz nyomja a csavart miközben a forgó mozgásával biztosítja a menetek összekapcsolódását. Amikor a csavar halad a menetben, előre húzza magát és a szorító pofákat - amik addig tartották – szétfeszíti. Ha meghúzás befejeződött, a csavarozó szár visszahúzódik, miközben helyet biztosít a következő csavarnak, és szorítópofák is visszazáródnak.
14. ábra Csavarozó fej mechanizmus [8]
9.4 Jelölési módszerek A gyártás során az egyes alkatrészek azonosítására gyakran alkalmaznak valamilyen egyedi azonosító kódot. Az azonosítás csökkenti annak a valószínűségét, hogy egy alkatrész a nem megfelelő helyre lesz beépítve, aminek a javítása fölösleges költségeket emészt fel. Az azonosítás segítségével pontosan tudjuk akár több év elteltével is, hogy az adott terméket milyen gépekkel és milyen alapanyag felhasználással gyártottuk le.
9.4.1 Címkés Elterjedt megoldás a címkék alkalmazása, amit elhelyeznek a készüléken belül és kívül is attól függően, hogy a rajta található információ a gyártás során kerül beolvasásra, vagy esetleg a felhasználónak szolgál valamilyen információval. A címkék előre el vannak látva a szükséges feliratokkal. A címkéket általában szalaghordozón tárolják, ami egy dobra van feltekercselve. A hordozóról való leválasztást úgy érik el, hogy egy lemez élén húzzák a szalagot, a címke nem tudja követni a lemez görbületét és leválik a hordozóról. (15. ábra) A leválást elő lehet segíteni, ha a címke és a hordozó közé nagy nyomású levegőt fújunk, vagy ha a címkét felülről egy vákuum fej megfogja, és leválasztja a hordozóról, ebben az esetben a vákuum fej a címke elhelyezését is elvégezheti, ha a vákuum fej egy aktuátorra vagy egy robotkarra van szerelve. A letekercselést egy léptetőmotor vagy egy szervomotor végzi, hogy az adagolás szabályozott sebességű legyen, és egyszerre mindig a címke hosszának megfelelő hordozót húzzon le a dobról. A hordozót több görgőn is átvezetik, ami biztosítja a hordozó feszesen tartását és a megvezetését.
15. ábra Cimkézőgép [9]
9.4.2 Lézeres jelölés Korszerűbb a címkés jelölésnél a lézerrel létrehozni az azonosítót. Előnye, hogy az azonosítót gyorsabban lehet elhelyezni a felületen, a címke előállításánál olcsóbb a lézerrel égetet jelölés, kisebb helyen is elfér, és tartósabb is. Hátránya, hogy a berendezés nagyobb költséggel jár, mint a címkéző berendezés. A használt lézer teljesítménye néhány 10W, a lézersugár infravörös hullámhosszon dolgozik. A lézersugarat kis pontba lehet fókuszálni, aminek átmérője kb. 0,15mm. A sugarat nagy pontossággal - +/-0,01mm - lehet pozícionálni. A nagy pozícionálási sebesség, - ami
16. ábra Galvo rendszerű eltérítő eléri a 7000mm/s értéket-, termelékennyé teszi a módszert. Ahhoz hogy ezt a sebességet ellehessen érni a mozgó tömegeknek nagyon kicsinek kell lenni, ezért alkalmazzák a 16. ábrán látható megoldást. A lézersugár eltérítését két egymásra merőlegesen elhelyezett szögeltérítő (galvo) valósítja meg, amik kisméretű tükröket mozgatnak, nagy sebességgel. A két tükör összehangolt mozgatásával a megjelölni kívánt felületre tetszőleges alakzat égethető. Attól függően, hogy felület és a tükrök között mekkora a távolság, változik a munkaterület és a pontosság. Nagyobb távolság esetén, a tükör azonos elfordulásához nagyobb elmozdulás tartozik.
17. ábra TTT rendszerű lézergravírozó Kisebb sebességet biztosító megoldás, amikor a lézerfejet közvetlenül a robot mozgatja. TTT felépítésű robotnál a tengelyekre helyezet tükrök, vezetik a lézersugarat a megmunkálandó felületre, párhuzamosan a tengelyekkel. Ebben az esetben nem kell a robotnak a lézer egység teljes súlyát hordozni csak a fókuszáló lencsét, ami jótékonyan hat a sebességre.
9.5 Anyagmozgató robotok Az anyagmozgató robotokat ott alkalmazzák ahol a feladat az emberek számára túlságosan monoton, az anyagokat nagy sebességgel kell mozgatni, vagy nagy pontossággal. Ezekkel a munka körülményekkel a robotok könnyedén megbirkóznak. A robotok a feladatokat nagy pontossággal végzik el hosszú távon is, embereknél a hibázás lehetősége mindig fennáll, a robotokba építet szenzorok segítségével a hiba már a keletkezés helyén is felderíthető, és a hibás darabok kiválogathatók. Emberek által végzet munkánál vagy egy másik személynek kell a hibákat keresni vagy annak, aki a szerelési munkát végzi, de ez a munka végzés idejét meghosszabbítja. A robotokat jobban lehet integrálni a gyártósorba, közel más gépekhez, a pontos időzítések és programozás által, a robotok egymás munkaterében dolgozhatnak anélkül, hogy befolyásolnák egymás munkavégzését. Az embereket azoktól a gépektől, amik veszélyt jelenthetnek rájuk, elkel szeparálni, ami csökkenti a munkavégzés sebességét és hatékonyságát. Az anyagmozgató robotok széles sebesség tartományban tudnak dolgozni jellemzően 0.1-3000mm/s között. A teherbírásuk a kisebb robotok esetében 5kg nagy teherbírású
robotok több 100kg-ot is mozgatnak. Pozícionálási pontosságuk 0.01mm és 0.1mm között a leggyakoribb. Ha nagy mozgatási sebességet szeretnék elérni, úgy, hogy csak kis
pozícionálási
hiba engedhető
meg, akkor nagy jelentőségűvé válik a
munkadarabokat megfogó szerkezetek. A gyártók a robotokhoz, csak néhány univerzális megfogót mellékelnek, ami nem minden feladatra használható megfelelően, a felhasználónak kell a megfogókat a követelményeknek megfelelően kialakítani. Ennek a költsége a robot árának 3-10%-a. [10] Jellemző fajtájuk: -
ujjas o Pneumatikus: csak a véghelyzetekben meghatározott a helyzete. o Elektromechanikus: a mozgatást szervo motorok biztosítják, a teljes átfogási tartományban programozható a helyzete és a megszorítás ereje.
-
vákuumos
-
mágneses
18. ábra Elektromechanikus ujjas megfogó [10]
10. Robotokat felépítő mechanikus elemek A dolgozat eddigi részében bemutatott robotok mindegyike, úgy van kialakítva, hogy a felépítésük megvalósítható legyen, egy típusú lineáris egységből. Az lineáris egységek magukba foglalnak minden olyan szükséges mechanikus elemet, ami egy tengely üzemeléséhez szükséges. (20. ábra)[11]
19. ábra Lineáris aktuátor [11] Tartalmazza a lineáris megvezetéseket biztosító lineáris vezetékeket, a mozgó kocsikban és az álló sínen golyópályák vannak kialakítva, amiken a kocsiban lévő golyók könnyedén el tudnak gördülni, így minimális ellenállással tud a kocsi mozogni.
20. ábra Lineáris vezetékek [12]
A megvezetés hatására a kocsi csak egy dimenzió mentén tud mozogni, minden más erőnek, ami a kocsira ha, annak ellenáll. A szabad tengely mentén a kocsikat egy motor mozgatja, amit a vezérlő számítógép és a motorvezérlő szabályoz. A motor és a kocsi között az erőt, golyósorsó vagy fogas szíjas rendszer adja át. A golyósorsó nagyobb erőnek áll ellen amellett, hogy nagyobb pontosságot is biztosít, az előnyökért cserébe nagyobb költségekkel is kell számolni az alkalmazása során. A fogas szíjas mozgatás kis terhek mozgatása és alacsonyabb pontossági elvárások esetén jelent megfelelő megoldást Előnye, hogy nagy sebességgel képes a kocsik mozgatására. Az erőátviteli és az erőtartó elemek (lineáris vezeték, golyósorsó, csapágyazás, tengelykapcsoló, motor) egy alumínium vázelemre vannak felszerelve, aminek következtében a szerelés során egy egységként kezelhető a lineáris vezeték, ez nagyban megkönnyíti a tervezés és a szerelési folyamatot is. A lineáris vezetékek több kivitelben beszerezhetőek, eltérő hosszal, különböző motorokkal pl.: léptetőmotorokkal, AC szervo motorokkal, 50W, 100W és 200W teljesítménnyel. A maximális terhelhetőségük, 5kg és 60kg között változhat. Pontosságuk +/-0,1mm és +/-0,02mm között változik attól függően, hogy a mozgatást fogas szíjas, mángorolt vagy köszörült golyós orsóval valósítják meg. Azoknál a robot kiviteleknél, ahol a karok hosszan kinyúlnak az alátámasztástól, ilyen látható a 7. ábrán, fokozottan ügyelni kell a terhelhetőségre. Ezeknek a gépeknek a megengedet terhelhetőség függ az erő hatásvonala és az alátámasztás közötti távolságtól.(21. ábra) Nagy kinyúlás esetén az erőkar is nagy így a maximális erőt korlátozni kell. Az SMC cég LJ1 szériájából való aktuátoránál, egy jellemző terhelési adat a következő képen alakul (21. ábra): -
a rögzítési pont és az erő hatásvonala közötti távolság.
- W a megengedet terhelő tömeg.
21. ábra Lineáris aktuátorra szerelhető erőkar maximális hossza a terhelés függvényében [13]
A terhelés hatására az aktuátorok rugalmas alakváltozást szenvednek, ennek értéke is függ az erőkartól. Maximális terhelés esetén és 100mm kinyúlásnál ez az érték mindössze 7µm, 500mm-es kinyúlásnál a deformáció elérheti a 900µm-t. Azoknál az alkalmazásoknál ahol megmunkálás közben nincs jelentős erőhatás, a deformáció nem okoz problémát, ilyen alkalmazás a diszpergálás, a forrasztás, lézergravírozás.
22. ábra Terhelés hatására létrejövő deformáció [14]
Nagyobb erőt igénylő megmunkálásnál számolni kell a deformációval, több egymásra épített aktuátor esetén (7. ábra) az alakváltozások összeadódnak, Ahhoz, hogy a lineáris aktuátorokból szerelésre alkalmas robotot építhessük, szükség van olyan elemekre, amik biztosítják, hogy a tengelyek egymásra merőlegesen helyezkedjenek el, és megfelelő merevséggel legyenek egymáshoz rögzítve. (23. ábra)
23. ábra Szerelőprofilok [15]
11. Robotok vezérlőegységei
A legegyszerűbben kivitelezhető robot felépítés a TTT rendszerű, egymásra merőleges tengely elrendelkezéssel rendelkező típus. Programozási és vezérlési szempontból is ez a legkönnyebben kezelhető felépítés. Minden tengelyhez a koordinátarendszer egy dimenziója tartozik, így egy tengely mozgatása a többi tengely koordinátáját nem befolyásolja. Pont vezérlés esetén az aktuális pozíció és a cél koordináta ismeretében, egyszerűen számolható minden tengelyre külön, a szükséges elmozdulás.
A számítások után, ha kiadjuk a tengelyvezérlőknek a megkívánt elmozdulást, akkor a rendszer, több szakaszból álló pálya mentén a cél koordinátára fog pozícionálni. (24. ábra)
24. ábra Pontvezérlés egyszerű pozíció különbségképzéssel
Abban az esetben, ha a célt egy lineáris egyenessel szeretnénk megközelíteni, akkor a tengelyek sebességét minden tengelyre külön az elmozdulás függvényében kell megválasztani. A fent említett vezérlési módot, szeretném megvalósítani az általam épített vezérlő áramkörrel. A vezérlőt két egységre lehet bontani, az első rész az egy számítógépen futó vezérlő program ami a felhasználó által megadott fájlból a vezérlőáramkör számára értelmezhető adatokat generál és azokat a megfelelő időben küldi el az áramkörnek a USB porton keresztül. Az a program biztosítja a felhasználónak, hogy be tudjon avatkozni a vezérlési folyamatba, a robotot el tudja indítani majd szükség szerint leállítani. A felhasználói felület tájékoztat a program futásáról, valamint ha a mozgáspálya a végéhez ért, vagy hiba miatt félbeszakadt. A második egység maga a vezérlő áramkör, ami csatlakozik a számítógéphez, valamint a robot tengelyeit mozgató motoroknak a meghajtó fokozatához. A PC-től érkező adatokat a vezérlőáramkör feldogozza és a motorok meghajtóinak értelmezhető úgynevezett Step/Dir (Lépés/ Irány) jeleket küld a motorvezérlőknek. Az áramkör végzi el a vészleállítási feladatokat is, mivel közvetlenül ez vezérli a motorokat így a leggyorsabban ez tudja leállítani azokat.
12. LabVIEW vezérlőprogram működése A felhasználói felület, - amin keresztül a robotot irányítása történik – Labview grafikus programozói környezetben készült el. A program alkalmas arra, hogy a vezérlés elvégzéséhez szükséges, számítási és kommunikációs feladatokat egyaránt elvégezze, amellett, hogy egy olyan átlátható felhasználói felületet biztosít, amit a kezelője kényelmesen és gyorsan tud használni. A vezérlő rendszer, olyan feladatok elvégzésére van megalkotva, ami pont-pont vezérlést igényel, ilyen faladatok az elektronikai gyártásban, számos helyen előfordulnak, a teljeség igénye nélkül, megemlíthető: panelfúrás, automatizált forrasztás, alkatrész beültetés, pakolási feladatok, stb. Ahhoz, hogy ezeket a feladatokat a robot eltudja, végezni, a vezérlő számára meg kell adni egy mozgáspályát, ami tartalmazza, hogy a robot melyik pozícióba milyen sebességgel mozogjon. Ahhoz, hogy ezt a fájlt létrehozzuk, a legegyszerűbb megoldás, ha valamilyen CAM (Computer Aided Manufacturing- Számítógéppel segített gyártás) programot használunk, ami képes létrehozni azt a fájlt. A CAM programok a CAD (Computer Aided Design – Számítógéppel segített tervezés) programok által generált fájlokat használják kiindulási pontnak és azok alapján hozzák létre a mozgáspályát. Mivel a piacon számtalan CAD/CAM program található, ami együtt tud dolgozni, ezért nincs, egy olyan programcsomag, ami kizárólagosan, alkalmazható. A programokat mindig az adott feladathoz megfelelően kell kiválasztani. Egyetlen kritérium a tervező programokkal kapcsolatban, hogy a tervezési folyamat végén, generálható legyen egy úgynevezett G-kód, ez egy txt kiterjesztésű fájl, amit az általam tervezett vezérlőrendszer fel tud dolgozni, és ami alapján irányítja a robotot. Mivel a G-kódot számos helyen alkalmazzák, számtalan feladatra, ezért sok olyan parancsot tartalmazhat, amire a pont-pont vezérlés során, nincs szükség. A mozgáspálya generálása során ügyelni kell arra, hogy csak értelmezhető parancsok legyenek a kódsorban, ez a CAM program megfelelő beállításával, megoldható. Mivel a vezérlő csak lineáris mozgások, kivitelezésére van felkészítve, ezért nem tud olyan parancsokat fogadni, ami az íveket írja le pl.: G02, G03. A vezérlő utasítás készlete mindössze G00, G01, F, M2 utasításokból áll az X,Y és a Z tengelyre vonatkoztatva. A G00 lineáris gyors pozícionálást jelent, ilyenkor a megadott pozícióra a robot a maximálisan megengedett sebességével mozog.
Ezt a sebességet a robot tervezésénél és beüzemelésénél határozzák meg, a használat során már nem módosítható. A G01 szintén lineáris pozícionálást jelent, de ennél a parancsnál megadható, hogy mekkora sebességgel mozogjon a robot. A G01-el egy sorba kell írni az F karaktert, az ez után álló szám határozza meg a mozgás sebességét ( F- Feed rate – előtolás ). A G01 és a F is öröklődő utasítás, ez azt jelenti, hogy azután amikor észleli a program őket, a következő sorokat is azonos mozgás tulajdonságokkal hajtja végre, amíg nem észlel olyan utasítást, ami a régi értékeket felülírja. Az M2 utasítás a program végét jelenti, hatására a program futása leáll, újraindításkor a program a 0. sortól kezd el futni. G-kód mintaprogram: G00 X0 Y0 Z20
(A robot gyorsjáratban felveszi a X0,Y0,Z20 kezdő pozíciót)
G00 X40 Y60
(Mozgás a X40,Y60 pozícióra)
G01 Z0 F500
(A Z tengely 500mm/perc sebességgel leereszkedik a 0 pozícióba)
Z5
(Z visszaáll a Z5 pozícióra)
X10 Y20
(X és Y újrapozícionál)
Z0
(Z ismét lemegy 0 pozícióba)
G00 Z20
(Z vissza a kezdő értékre, gyorsjáratban)
M2
(Program vége)
12.1 Az adatfeldolgozás folyamata, felhasználói felület működése
A program első elindításakor be kell állítani azokat a változókat, amik a vezérlőt összehangolják a robot fizikai tulajdonságaival. Meg kell adni, minden tengelyre külön a maximális gyorsítás értékét, a maximális sebességet, azt, hogy egy lépés elmozdulás a robot adott tengelyén, mekkora elmozdulást jelent. A kommunikáció tulajdonságait is be kell állítani, ami a port és a kommunikációs sebesség megadásából áll. Ha a beállításokat elmentettük, akkor a mentés gombra kattintva (1. melléklet) az adatok a LabVIEW telepítéskor létrejött LabVIEW Data mappában „Robotadatok.lvm” néven kerül elmentésre. A vezérlőprogram következő megnyitásakor ebből a fájlból kerülnek beállításra a robot adatai.
12.2 Adatok beolvasása, mentése Amikor elindítjuk a programot akkor a folyamat először egy „While” ciklusban (25. ábra) indul, ez a programrész szolgál arra, hogy a mentést beolvassa és beállítsa a változók értékeit. A „While” ciklusban található egy „Read From Measurement File Express” VI, ennek a bemenő adatát egy konstans tartalmazza ami, a már említett „Robotadatok.lvm” fájlra mutat, tehát a beolvasás innen történik. Az olvasás után az adatokat, egy „Split Signals” VI felbontja, ezután az adatok lokális változókon keresztül beíródnak a kezelői felület megfelelő ablakába. Az olvasást végző VI-nak van egy „EOF?” nevű kimenete, ez egy logikai kimenet, akkor vesz fel igaz értéket, ha az
25. ábra Adatok beolvasása olvasás befejeződött. Ez a kimenet arra lett használva, hogy leállítsa a „While” ciklust és így az olvasás folyamata befejeződik. Ez első indításkor, amikor még nincs létrehozva a „Robotadatok.lvm” (Ez első mentéskor keletkezik), akkor a beolvasó VI hibaüzenetet küldene, ezt törölhetjük, mert a probléma előre megjósolható, így váratlan problémát nem okoz. Amikor az első beállításokat elvégeztük, vagy később változtatunk a beállításokon akkor a „Mentés” gombra kattintva a beállításokat el kell menteni. Ez már a fő „While”
ciklusban zajlik, ami a program folyamatos futását biztosítja. A „Mentés” gombra kattintva egy „Case” struktúra igaz ágába fut a program, ahol „Write To Measurement File Express VI” végzi el a mentést. A bemenetére szintén egy konstans van vezetve, ami tartalmazza az a helyet és nevet, amire a mentést el kell végezni (Robotadatok.lvm). A menteni kívánt adatokat olvasás módba állított lokális változókból kerülnek egy „Merge Signal” nevű VI bemeneteire, ami egy adatot csomagot csinál a több adatból. Ez az adatcsomag kerül a mentést végző VI bemenetére. Ha a mentés megtörtént, a program kilép a „Case” struktúrából. A mentést elindító nyomógomb, mechanikai tulajdonsága „Latch” típusúra van állítva, hogy a mentés, egy gombnyomásra csak egyszer fusson le.
26. ábra Adatok mentése
12.3 Mozgásparancsok feldolgozása automatikus és manuális módban
A program futását az „Indít” gombra kattintva tudjuk elindítani (1. sz. melléklet). Ilyenkor a „Manuális mozgatás” gomb állapotától függően, vagy egy mozgáspályát leíró fájlt olvas be, vagy az X, Y, Z, F nevű változókból olvassa be, azt a pozíciót ahova mozognia kell és a kívánt sebességet. Ha a Manuális mozgatás gomb hamis állapotot
vesz fel (27. ábra), akkor a „Futatás innen” nevű változóból kiolvasásra kerül az a fájl, amit futatni szeretnénk. A beolvasást egy „Read from Text File” nevű VI végzi, a bemenetén található -1 értékű konstans azt jelenti, hogy a fájlt a végéig be kell olvasni. Beolvasás után a teljes G-kód megjelenik egy kijelzőn. Mivel a kódot soronként hajtja végre a robot ezért a teljes fájlt csak soronként lehet feldolgozni, ehhez a feldarabolást egy „Pick Line” nevű VI végzi. A bemenetére vezetett egész szám, meghatározza, hogy a teljes szövegfájlból melyik sor jelenjen meg a kimenetén. A kiválasztott sor karakterei egy „Upper Case” VI-on vannak átvezetve, erre azért van szükség, mert egyes CAM programok kisbetűket használhatnak a G-kód megszerkesztésénél, ami megzavarja a program futását. A VI alkalmazásával egységesen minden karakter nagybetűs alakba kerül. Az a sor, ami aktuálisan fut, egy külön kijelzőn jelenik meg, hogy jobban követhető legyen, holt tart a program futása. Ha a „Case” struktúrának az igaz ága fut le (27. ábra), vagyis „Manuális mozgatás” gomb bekapcsolt állapotban van, akkor a program a változókból összerak egy kétsoros kód részletett, aminek az első sorában az X, Y, Z tengelyek elvárt pozíciója és a sebesség értéke található. A második sorban az M2 utasítás leállítja a manuális mozgatást. A mozgás befejezése után ismét megvizsgálásra kerül, hogy automatikus vagy manuális módban kell futnia, a programnak. A programrészt úgy hozzuk létre, hogy konstansokat valamint a változókat összefűzzük a „Concatenate Strings” nevű VI alkalmazásával.
27. ábra Mozgásparancsok létrehozása automatikus és manuális módban
12.4 Utasítások feldolgozása
A már sorokra feldarabolt utasításokat, még tovább kell bontani, a szerint, hogy melyik tengelynek szólnak, a tengelyeknek milyen sebességgel kell mozognia, vagy, hogy mikor van vége a programbak. A szövegsor egy elágazáshoz ér és több párhuzamos úton fut tovább a program, a három tengelynek megfelelően. Azon az ágon ahol az X tengelyhez tartozó adatokat keresi a program, ott a „Match Regular Expression” kereső VI az „X” karaktert keresi a sorban (28. ábra). Az X előtt lévő szövegrészt a VI elveti és csak az X után lévő részt engedi tovább. A kimeneti oldal szintén az előzővel megegyező típusú kereső VI bemenetére kerül, de itt olyan karaktert keres a maradék szövegben, ami határt képez a következő tengelyhez tartozó adatok és a X tengely adatai között. Ez valamilyen üres, elválasztásra használt karakter (\t \r \n \s), vagy egy betű lehet. Ha talált egy határvonalat, akkor az azt követő karaktereket eldobja. Így nem marad más csak az X után lévő szám, ami a X tengely, következő pozícióját jelenti. A CAM programok nem minden esetben használnak szünet a különböző tengelyek adatai között, ezért kell alkalmazni a betűk keresését is.
28. ábra X tengely pozícióadatainak kiszűrése
A többi tengely adatait, a G00 és a M2 parancsokat is, az előzőleg ismertetett módszerrel határozza meg a program, de ezekben az esetekben Y, Z, G00 vagy M2 karaktereket keresünk. A kiszűrt adatok még szöveg formátumban vannak, amit a további feldolgozás előtt át kell váltani számokká. Még a szöveg átkonvertálása előtt, kiírásra kerül a X, Y, Z tengely pozíciója a relatív koordinátarendszerben. A konvertálást „String To Number” VI végzi, ennek a VI-nak az átváltáson kívül még az is a feladata, hogyha az adott tengelyhez nem érkezett új adat az aktuális sorban, akkor a legutóbbi adatot beolvassa egy „Shift” regiszterből a „Default” bemenetére és ezt jeleníti meg a kimeneten. Erre azért van szükség, mert a program tovább futásakor egy kivonást végző VI az új pozíció és az előző pozíció különbségét képzi, és csak a különbséggel mozdítja el a tengelyt, ha a konvertálást végző VI kimenetén nem jelenne meg az utolsó pozíció, akkor, ha nem jön új adat a tengelyhez, akkor a vezérlő azt a parancsot adná, hogy a tengely mozogjon a nulla pozícióba. A különbségképzés után a szám abszolút értékét képezzük (28. ábra), mert így a további számítások folyamán nem kell az előjelekre figyelni. Ha a kivonás után negatív számot kapunk, akkor az azt jelenti, hogy tengely mozgásának irányát az ellenkezőjére kell változtatni. A különbséget egy komparátorral vizsgáljuk, ha a szám nagyobb vagy egyenlő nullával, akkor a komparátor kimenete magas logikai szintre vált, ezt a logikai értéket átváltjuk számmá tehát az irányváltozó értéke egy lesz. A G00 és a M2 parancsokhoz nem tartoznak olyan adatok, amiket a G-kód tartalmazna, ezért az ezeket kereső algoritmusoknak a kimeneti értéke egy logikai változó (29. ábra), ami jelzi, hogy a sorban talált-e ilyen karaktereket, vagy nem. A logikai kimeneteket úgy állítjuk elő, hogy a kereső VI kimenetét egy összehasonlító VI-ba vezetjük, aminek a második bemenetén egy, a kereset karakterekkel megegyező értékű konstans van. Ha
a kikeresett szövegrész megegyezik a konstans értékével akkor, az összehasonlítás végeredménye igaz logikai állapotú lesz.
29. ábra G00 és M2 kiszűrése Ha M2-t talál, akkor a Sor számlálót lenullázza, és az Indít nyomógomb lokális változójának az értékét kikapcsolt állapotba írja át, így a program futása megáll. Ha a sorban G00 - gyorsjárat - parancsot talál, akkor a logikai változó értéke igaz lesz, ami egy „Case” struktúrának az igaz ágát indítja el (30. ábra). Ebben az ágban, a program első indításakor megadott maximális X, Y, Z sebességeknek, kiszámítja a vektoriális eredőjét és ezt az értéket menti el a sebesség értékeket tároló „Shift” regiszterbe. Ha nem talált G00 parancsot, akkor az azt jelenti, hogy a robotnak G01 utasítást kell követnie, tehát az utoljára talált F karakter utáni sebességgel kell mozognia, amit az előbb említett „Shift” regiszterből olvas ki.
30. ábra Sebességek felülírása és mentése
Ha a program talál új sebesség adatott, akkor az átvezeti az első „Case” struktúrán (30.ábra), ha nem akkor a hamis ágban a „Shift” regiszterből származó érték kerül a „Case” struktúra kimenetére. Ez a kimenet bevan vezetve a G00-t kezelő „Case” struktúrába, ahol, ha a hamis ág fut le akkor a bevezetett érték módosítás nélkül átmegy rajta, ha a G00 keresése igaz eredményt adott, akkor az igaz ágban, kiszámítja a gyorsjárati sebességet, és ez jelenik meg a kimenetén ami további számítási műveletekhez van felhasználva, valamint elmentésre kerül a „Shift” regiszterben.
12.5 Sebességvektor kiszámítása és komponensekre bontása
A vezérlő olyan robotokhoz készült, amik három egymásra merőleges tengellyel rendelkeznek.
Ezek
a
tengelyek
megfeleltethetőek
egy
háromdimenziós
koordinátarendszer x, y, z tengelyének, a három tengely egyidejű mozgatása során a technológiai berendezés –ami a megmunkálást végzi- egy eredő elmozdulást egy eredő sebességgel fog megtenni. A G-kód csak ezt az eredő sebesség adatot tartalmazza, ezért a programnak ki kell számítania, hogy az egyes tengelyeknek mekkora sebességgel kell mozogniuk ahhoz, hogy a technológiai berendezés az eredő sebességgel mozogjon. A pont-pont vezérlésnél ugyan nem követelmény, az, hogy a két pont közötti út lineáris egyenesből álljon, de a mozgáspálya leírásához használt G00 és G01 utasítások lineáris mozgást jelentenek, így ragaszkodni kell, a lineáris mozgáshoz. Ehhez a mozgások elindításának időpontját, a végsebességeket és a gyorsulásokat is össze kell hangolni. Akkor lesz a mozgás lineáris, ha az egyszerre induló, egyenletes sebességgel mozgó tengelyek a mozgásokat egyszerre fejezik, függetlenül attól, hogy az egyes tengelyeknek mekkora utat kellet megtennie.
31. ábra
Tehát a sebességvektort a megkívánt elmozdulásnak az arányában kell felosztani a tengelyek között (31. ábra). Így a hosszabb úton mozgó tengely gyorsabban fog mozogni, míg a rövidebb elmozduláshoz alacsonyabb sebesség tartozik, a mozgás így azonos ideig tart. A programnak a következő egyenletet kell megoldania, ahol sebességvektor ismert és a arányát ismerjük:
komponensek ismeretlenek, ezeknek csak az
Két tetszőlegesen kiválasztott tengely közötti arányossági tényezőt megkapjuk, ha vesszük a tengelyek megkívánt elmozdulását, és azoknak a hányadosát képezzük. pl.:
Ha minden tengelypárra felírjuk az arányossági tényezőt és az egyenleteket rendezzük az egyik ismeretlen
sebesség összetevőre, akkor a következő egyenletrendszert
kapjuk:
Azért kell használni és így ismerni is mindegyik egyenletet, mert vannak olyan vezérlési szituációk, amikor egyenlet nevezőjében lévő változó értéke zérus, ezért hányadost nem lehet képezni. Ha
-et szeretnénk kiszámítani, akkor a fenti egyenletrendszerből
behelyettesítve, kapjuk a következő egyenletet:
Mindhárom tengelyre behelyettesítve és ismeretlenre rendezve:
A három egyenlet közül azt kell alkalmazni, aminek mindegyik ismeretlenje ismert és egyik sem nulla. Ha a program kiszámította egy tengelyhez tartozó sebességet akkor az arányossági tényezőkkel megszorozva megkapjuk a többi tengelyhez tartozó sebességet. Ha csak egy tengelyen van mozgás, tehát a többi tengely elmozdulása nulla, akkor az egyenletek megoldása mellőzhető, mert akkor az elmozdulást végző tengely sebessége megegyezik az eredő sebességgel. Azt hogy melyik egyenlettel határozzuk meg a sebességek kiszámítását egy „Case” struktúrába dönti el, az alapján, hogy az elmozdulási adatok közül melyiknek az érté nulla. Az elmozdulásokat tengelyenként egy-egy komparátor vizsgálja meg és hasonlítja össze nullával. Az így kapott három logikai változóból egy tömböt képzünk, amit ezután bináris számként kezelünk. Ezt a számot átkonvertáljuk egy decimális számmá. Ezt a számot vezetjük a „Case” struktúrába.
32. ábra Sebesség komponensek kiszámítása Abban az esetben, amikor egyik elmozdulás változó értéke sem nulla, akkor a bináris szám értéke is nulla, ez az ág megegyezik azzal az állapottal, amikor a legalacsonyabb helyiértékre vezetett Z tengelyhez tartozó elmozdulás nulla. Ilyenkor a „Case” struktúrába bemenetén egyes értékű szám van (32. ábra). Mivel csak a Z értéke nulla és az ebben az ágban található egyenlet nevezőéiben nincsen Z változó, ezért a számítást ellehet végezni. Ez az ág az
és a
hányadosokból hozza létre az arányossági
tényezőt, a képlet szerint ezeket négyzetre emeli és hozzáadja őket egy egyes értékű konstanshoz. A sebességvektor nagyságának négyzetét elosztja az előbb kiszámolt
összeggel,
végeredményt a hányados gyökvonása után kapjuk. Utolsó lépésben, a
struktúra elején kiszámolt arányossági tényezőkkel megszorozza megkapjuk
és
értékét, így
értékét is. Ha nem a Z, hanem a X tengely elmozdulása nulla akkor a
„Case” struktúrába bemenetére vezetet változó értéke kettő lesz, ha az Y tengelyhez tartozik nulla elmozdulás, akkor a változó értéke négy. Ezekben az esetekben is a számítás menete megegyezik az előzőleg ismertetettel, de az arányossági tényezőket másik tengelyekre számítjuk ki. Ha két tengelynek nulla az elmozdulása (33.ábra), „Case” struktúra bemenetén 3, 5, 6 érték van - akkor a mozgást végző tengely sebessége megegyezik a sebességvektor nagyságával, a „Case” struktúrán csak átvezetésre kerül a sebesség változó a mozgást végző tengelyhez, a többi tengely nulla értékű konstanst kap. Amikor minden tengely elmozdulása nulla - „Case” struktúra 7 kerül -, akkor a sebesség adat nincs elvezetve egyik tengelyhez sem, mindegyik nulla értéket vesz fel.
33. ábra X és Z tengely elmozdulása nulla, csak Y-nak van sebessége
12.6 Sebességek és gyorsulások korlátozása
12.6.1 Sebesség korlátozása Az előző fejezetben kiszámításra kerültek, hogy a tengelyeknek mekkora sebességgel kell mozogniuk, ahhoz, hogy a technológiai berendezés az utasításnak megfelelő sebességgel mozogjon. Adódhat olyan szituáció, amikor egy tengelyre kiszámított sebesség nagyobb, mint amit a tengely a valóságban teljesíteni tud, vagy amekkora sebességre le van korlátozva. A programnak figyelni kell ezeket a sebesség túllépéseket és be kell avatkozni, ha ilyen előfordul. A sebesség redukálását úgy kell elvégezni, hogy ne csak a túllépésben érintett tengelyek sebességét korlátozza, hanem minden tengely sebességét csökkenteni kell, azért, hogy a sebességek aránya ne változzon, így a mozgáspálya se torzuljon. A sebesség csökkentése úgy zajlik, hogy először meghatározunk egy szorzó számot – Értéke 0-1 közé esik -, ami az előző fejezetben kiszámolt sebességvektor komponensekkel összeszorozva, a leggyorsabb tengely sebességét, pontosan a tengelyhez beállított maximális sebességre redukálja. Természetesen így a G-kódban megadott sebességet a robot nem tudja elérni, de a robot maximális biztonságos sebessége, ezt az elvárást felülírja. A szorzószám kiszámítását, három különböző, de hasonló, algoritmus végezheti, attól függően, hogy menyi tengely sebessége haladja mega a beállított maximális sebességet. Amikor csak egy tengely lépi át a határt, akkor csak, egy osztásból áll a szorzószám meghatározása (34. ábra). Ilyenkor a sebességhatárt túllépő tengely, beállított maximális sebességet elosztjuk a Gkód által elvárt sebességgel, az így kapott számot megszorozzuk mindegyik tengely sebességkomponensével, a kapott új sebességkomponensek már a beállítások által meghatározott kereteken belül lesznek.
34. ábra Y tengely sebességtúllépése Azt hogy a „Case” struktúrának melyik ága fusson le, itt is komparátorokból álló egység határozza meg. A komparátorok összehasonlítják a maximális sebességeket és a sebesség komponensek értékét, ha valamelyik tengely túllépné, a megengedet sebességet, akkor a komparátor magas szintre vált, a három tengely összehasonlítása és az eredmények egy tömbé képezése után, kapunk egy három bitből álló bináris számot, decimális számmá konvertálás után, az értéke már a „Case” struktúra bemenetére vezethető. A hárombites számmal hét különböző ágat tudunk elkülöníteni a „Case” struktúrában. A nullás ágban, nem végez a program műveleteket, csak a szorzószám értékét egy egyes értékű konstanssal, egybe állítja, így az eredeti sebesség komponensek nem módosulnak, egyik tengely se lépné át a sebességhatárt. Az egyes, kettes és négyes ágban a 34. ábrában látott folyamat zajlik le a sebességhatárt túllépő tengelyhez igazítva. A második kiszámítási módszert, akkor alkalmazzuk, amikor két tengely lépné túl a sebességhatárt. Ilyenkor elkel dönteni, hogy a két tengely közül melyik haladja meg nagyobb arányban a beállított sebességhatárt, és annak a tengelynek az adataiból kell képezni a szorzószámot, amivel korrigáljuk a sebesség komponenseket. Ezekben az ágakban mindkét tengely maximális sebesség és sebesség komponens arányát kiszámoljuk és minimum-maximumkereső VI-al kiválasztjuk a nagyobbat (35. ábra). Egy egyenlőséget vizsgáló VI eldönti, hogy melyik tengelyhez tartozik a nagyobb arányszám. A logikai 1 és 0 jelenti az egyik vagy a másik tengelyt. Ezzel a logikai változóval vezérli a program azokat az útválasztókat, amik kiválasztják, hogy melyik tengely adataiból kell a szorzószámot kiszámolni.
35. ábra Y és Z tengely sebesség túllépése Ha mind a három tengely túllépte a sebességkorlátozást (36. ábra), akkor a „Case” struktúra hetes ága fut le, itt mindhárom tengely maximális sebesség és sebesség komponens arányát kiszámoljuk és két darab minimum-maximumkereső VI-al kiválasztjuk a legnagyobbat. Ezután összehasonlító logikákkal és útválasztókkal kiválasztjuk a megfelelő tengely adatait, amiből osztással képezzük a szorzószámot és módosítjuk a sebesség komponenseket vele.
36. ábra Mindhárom tengely túllépné a sebességhatárt
12.6.2 Gyorsulás korlátozása A gyorsulás korlátozásának az algoritmusa megegyezik a sebesség korlátozásának algoritmusával. Mivel a G-kód nem tartalmaz adatokat a gyorsulásra és az a legideálisabb, ha gyorsulás minél közelebb van a maximálishoz. Ezért a számítások során mindig egy maximális gyorsulási adatból indulunk ki. Ami egy konstansként van a programba ágyazva – Mértékegysége a mikrovezérlők számára értelmezhető, nem a megszokott
-. Azért, hogy a robot a gyorsítási szakaszban is lineáris pályán
mozogjon, a fent említett maximális gyorsítást a sebességvektor nagysága és a vektor komponenseinek arányában felosztja a program, így a gyorsítási szakaszt is egyszerre fejezik be a tengelyek és a mozgáspálya lineáris maradhat (37. ábra). A sebesség korlátozásánál megismert döntési logika határozza meg, hogy a „Case” struktúrának melyik ága fusson le, attól függően, hogy mennyi tengely lépte át a maximális gyorsítási értéket. A kiválasztott ágban, megkeresi a legnagyobb mértékben túllépett tengelyt és az alapján számolja ki azt a hányadost, amivel tengelyenként beszorozza a gyorsítási értékeket, így redukálva le azokat, a megszabott határ alá. A célpozícióhoz közelítve a tengelyeknek van egy lassítási szakasz is, erre nem történik külön számítás, mert a meredeksége megegyezik a gyorsításéval, csak az előjele ellentétes.
37. ábra Gyorsítás korlátozása
12.7 Kommunikáció
A számítások befejeződésével a mér minden adat rendelkezésre áll ahhoz, hogy a vezérlő áramkör a mozgást elindíthassa és a kódsor lefutatásra kerüljön. A felhasználói program és a vezérlő áramkör között a kapcsolatot USB protokoll biztosítja. Az USB kapcsolatot egy MCP2200 típusú chip alakítja át, a mikrokontrollerekhez illeszkedő UART kapcsolatra. A kapcsolatot a LabVIEW soros portként kezeli. A csatorna létrehozása a kezelőfelület elindításakor megtörténik (38. ábra).
38. ábra Soros kommunikáció beállítása A kommunikáció tulajdonságai: Sebesség: 9600 bit/s
(Módosítható)
Adatbit száma: 8 bit Paritásbit: Nincs Stopbit hossza: 1 bit Átvitelvezérlés: Nincs Időkorlátozás: 20s
(A LabVIEW milliszekundumban várja az értékét: 20000)
Azt, hogy a kapcsolat a számítógép melyik porton jön létre, az PC függő, bekapcsoláskor a megfelelőt ki kell választani. Amikor a kezelő felületen az Indítás gombbal elindítjuk a vezérlőt és az előzőekben ismertetett számítások végbementek, akkor a program, az adatok elküldésének szakaszába lép. Az irányokat és a gyorsulás adatok 8bites számokét közvetlenül átkerülnek a vezérlő áramkörbe. Az elmozdulás és sebesség adatok nagyobb felbontást igényelnek, ezért azok 16 bites számok. Mivel a mikrokontroller UART regisztere 8 bites, ezért ezeket az adatokat két lépésben lehet csak elküldeni. Az adatok átküldésének első lépésében a mozgás irányát meghatározó bitek lesznek elküldve, a három tengelyhez három iránybit tartozik, a maradék bitek értéktelenek, ezeket az első bájt tartalmazza. A második bájt az X tengely gyorsulását képviseli. A harmadik és a negyedik bájt az X tengely sebesség adatát hordozza, ezután következik a pozíció adat, ami ötödik és az hatodik bájtban kerül át a vezérlőáramkörbe. Mivel a X tengely iránybitjével az Y iránybitje is átküldésre került ezért az Y tengelynek szóló adatok a gyorsulás bájttal kezdődnek. Ezeket követi a két sebesség és a két pozíció bájt. A Z tengely adatai az Y tengelyhez hasonlóan kapja meg.
39. ábra X tengely sebesség és pozíció adatainak átküldése
A sebesség és a pozíciókat egy „for” ciklus bontja fel két különálló 8 bites számra (39. ábra). A „for” ciklusba bevezetett pozíció és sebesség adatokat előjel nélküli 16 bites számmá alakítjuk, majd szétválasztjuk két 8 bites számra. Az immár két különálló számból egy tömböt képzünk. Azt, hogy a tömbnek melyik elemét kell kiküldeni azt a „for” ciklus ciklusszámlálója befolyásolja. A nulladik ciklusban az adatok alacsony helyértékei kerülnek átküldésre, az első ciklusban a magasabb helyértékek. Ezután a „for” ciklu elérte a kilépés feltételét, a folyamatban egy következő „for” ciklussal indul el és küldi a többi adatot át a vezérlőáramkörnek. Amikor egy ciklus lefut a „for”
ciklusban akkor nem azonnal lép a következőre, hanem 10ms időt vár. Erre azért van szükség, hogy a mikrokontrollernek legyen ideje elmenteni az adatokat és felkészülni a következő fogadására. Ha minden tengely megkapta az adatokat, akkor elkezdik a mozgást. Ezalatt a vezérlőprogram várja, hogy az áramkör visszajelzést küldjön, hogy a pozícionálás megtörtént. Ha minden tengely pozícióba ért, akkor az áramkör a vezérlő programnak egy „a” karaktert küld vissza (40. ábra).
40. ábra Beolvasás és sor léptetése A beolvasott karaktert egy komparátor vizsgálja (40. ábra), ha a karakter megegyezik „a”-val akkor az összehasonlító kimenete magas szintre vált és elindít egy „Case” struktúrát, ami a sor számlálónak a „Shift” regiszterét növeli eggyel. Ha a mozdítás kézzel beírt koordináták alapján történt, akkor a koordináták törlésre kerülnek a kezelő felületből. Ha a vezérlőprogram M2 – program vége - parancsot talált a G-kódban, akkor egy „Case” struktúra megakadályozza a sorszámláló elmentését és lenullázza a „Shift” regisztert (17. ábra).
41. ábra Sorszámláló nullázása Ha a vezérlő programmal elvégeztük a szükséges vezérlési feladatokat, akkor a vezérlőprogram bezárásakor a program magját képező „While” ciklus futása megszakad, a cikluson kívül a soros kommunikációhoz használt memóriák törlésre kerülnek és a kapcsolatot a program bezárja (42. ábra).
42. ábra Kommunikáció bezárása
13. Vezérlőáramkör kapcsolási rajza
Miután a felhasználói felületen elindítjuk a kiválasztott mozgáspálya futatását és az első elmozdulások kiszámításra kerülnek, a program az adatokat USB porton keresztül eljutatja a vezérlőelektronikának. A panelen az USB csatlakozási pontot egy USB-B típusú csatlakozó jelenti. A több kivitelben létező USB csatlakozók közül ez a legrobosztusabb, mechanikailag a legellenállóbb kivitel, ami ipari környezetben fontos szempont.
43. ábra A csatlakozó D+ és D- érintkezői közvetlenül csatlakoznak az USB-UART átalakítást végző IC-re. Az áramkör áramellátását is az USB biztosítja, ezért a csatlakozó földje és +5V-ot biztosító érintkezője egy kondenzátorra (C16) csatlakozik, ami javítja a tápfeszültség minőségét.
Az USB-UART átalakítás a Microchip által gyártott
MCP2200 típusú IC végzi, ami a cég által ajánlott alapkapcsolásban végzi el a feladatát. Az IC valójában egy előre programozott mikrokontroller, így a működéséhez szükség van egy kvarc oszcillátorra (Q7) és a rezonáláshoz szükséges két 22pF értékű kondenzátorra (C14-C15), valamint, hogy a RST lába a tápfeszültségre legyen kötve. A magas logikai szintre húzást az R9 és R10 ellenállás végzi. Az IC TX_LED és RX_LED nevű lába a két, a kommunikációt jelző LED-re csatlakozik az R2 és az R3 áramkorlátozó ellenállásokon keresztül. Az IC felvan készítve arra, hogy ne csak 5V-os hanem 3.3V-os táplálással is tudjon dolgozni, ezért két tét tápfeszültség lába van, a VDD és a VUSB. Jelen alkalmazásban, - ahol 5V-al működik- a VUSB lábat az adatlap szerint 470nF értékű kerámiakondenzátoron (C18) keresztül a földre kell kötni. Az IC rendelkezik összesen nyolc darab szabadon programozható I/O lábbal, amiből kettő felhasználásra került a kommunikációt visszajelző LED-ekhez. Az Tx és Rx UART kimenetek a 10. és 12. lábra vannak kivezetve, amik a tengelyek vezérlését végző mikrokontrollerekre csatlakoznak.
44. ábra USB-UART átalakító
A mikrokontroller az Atmel cég által gyártott Atmega8-as típus. Amit 32 lábas TQFP tokozásban szereztem be. A kontroller 8kbájt programmemóriával rendelkezik, ami bőségesen elegendő volt a vezérlőprogram számára. A program kevesebb, mint 20%-át használta fel a teljes memóriának. A maximálisan megengedet órajele 16 MHz, amivel a kontroller 16MIPS-es utasítás feldolgozási sebességet képes elérni. (MIPS- million instructions per second - millió utasítás másodpercenként). A gyakorlatban a kontroller nem a maximális órajellel dolgozik, hanem 14.7456 MHz-el. Azért, hogy az UART kommunikáció során, a mintákat megfelelő ütemben vegye a Rx vonalon és szintén jó időpontokba küldje a Tx vonalra, olyan órajel értékét kell választani, amivel az adatátvitel, hibás bitek nélkül fenntartható az USB-UART átalakító és a mikrokontroller között. A mikrokontroller adatlapja tartalmazza, az adott adatátviteli sebességhez és hibaszázalékhoz, milyen órajel frekvenciák tartozhatnak.
A 45. ábrán látható, hogy a 14.7456 MHz-es órajel frekvenciánál és 9600bps sebességnél, az adatátvitel hibája 0%. Ilyenkor az UBRR regiszter értékét 95 értékre kell állítani, ez a regiszter az USART modul órajel generátorát hangolja a beállított átviteli sebességre.
45. ábra Az adatátvitel sebessége és hibaszázaléka [18] A mikrokontrollerek programozása az ISP nevű csatlakozón keresztül történik, USBASP nevű programozó segítségével. A programozó csatlakoztatása után, a JP_X, JP_Y és JP_Z jumper-ek közül azt kell áthidalni, amelyik mikrokontrollert szeretnénk programozni. Ajumper-ek a programozó MISO/MOSI és SCK jeleket vezetik a programozni kívánt kontrollerhez. A RESET minden mikrokontrollerhez el van vezetve és a R1 4.7kΩ értékű ellenállás tartja magas feszültség szinten. Programozás után a programozó a RESET lábakat alacsony feszültségszintre húzza, így indítja újra egyszerre mind a három kontrollert. Mind a három mikrovezérlő különálló egységet alkot, mint a kapcsolási rajzon, mint a nyomtatott áramkörön. Közös pontot a PD3 külső megszakítást indító láb jelent, ami azért felel, hogy a mozgások egyszerre induljanak el, valamit ez jelzi, ha a mozgások befejeződtek és lehet az új pozícióadatokat kérni a számítógéptől. A USB-UART átalakítótól érkező adatokat minden kontroller megkapja, de válaszjelet csak az X tengelyt vezérlő kontroller tud. Mivel csak ez a kontroller tud kommunikálni a számítógéppel, ezért ennek kell kezelni a végállás kapcsolókat valamint a vészleállítást is.
Ezeket a hibajeleket az IC4-es NAND kaputól kapja a mikrokontroller a INT0 megszakítást indító lábára. Két egyenként három bemenetű NAND kapuból van kialakítva egy négy bemenetű NAND kapu. A négy bemenet az E-Spop és a három tengely végállás kapcsolója. A bemeneteket az R4-R5-R6-R7 10kΩ értékű ellenállások magas logikai szintre húzzák, a C20-C21-C22-C24 kondenzátorok a zavarszűrési és pergésmentesítési feladatot látnak el. Mindegyik vészjelzéshez tartozó kapcsolót úgy kell bekötni, hogy alapállapotban az érintkező zárt állapotban legyenek és az egyik érintkező a földhöz legyen kapcsolva, így a NAND kapuk bemenete is alacsony logikai szintet vesz fel. Hibajelzés esetén a kapcsolók érintkezői nyitnak, a felhúzó ellenállások érvényesülni tudnak és magas logikai szintre húzzák a NAND kapu bemenetét, így megváltoztatva a kiment állapotát is. Az állapotváltozás a mikrokontrollerekben megszakítást indít, ami leállítja a tengelyek mozgását.
46. ábra Vészleállítás és végállás kapcsolók kezelése
A mikrokontrollerek szinkronizálása a vezérlő vonal nevű közös vezetékszakaszon keresztül történik. Ennek a vezetéknek az állapotát mindegyik mikrokontroller be tudja olvasni valamint, ha megváltozik az állapota, akkor mindegyik kontrollerben keletkezik egy megszakítás. A vezetékszakaszt egy 10kΩ értékű ellenállás (R8) magas feszültség szinten tartja. A kontrollerek három nyitott kollektoros kimenetű inverteren (IC7) tudják módosítani a vezeték állapotát. Amikor mindhárom AVR PD4-es lába alacsony logikai szinten van, akkor az inverterek elengedik a vezetéket és a R8 ellenállás magas logikai szinten tartja azt. Ha valamelyik kontroller PD4-es lába magas logikai szintre vált, akkor az inverter kimenete a teljes vezetékszakaszt alacsony logikai szintre húzza.
47. ábra A szinkronizálást végző kapcsolási rajz részlet
Mozgás közben minden kontroller PD4-es lába magas logikai szinten van így a vezérlő vonalat alacsony szinten tartják, amint az egyes tengelyek elérik a pozíciójukat a PD4 kimenetek egymás után alacsony szintre váltanak, a vezérlő vonalon csak akkor lesz felfutó él ha minden tengely megérkezet a pozíciójába. Az állapotváltozás hatására generálódott megszakítás az X tengely kontrolleréből, egy „a” karaktert küld a számítógépnek, ami ezt úgy értelmezi, hogy küldheti a következő pozíció adatokat a vezérlőelektronikának. Amikor az adatokat utoljára megkapó kontroller – ami a Z tengelyhez tartozik- is végzet az adatok mentésével és készen áll a mozgás indítására a PD4-es lábának a magas szintbe állításával a vezérlő vonalat alacsony szintre húzza így egy következő megszakítást generálva a kontrollerekben.
Ez a megszakítás azt jelzi, hogy a mozgást minden tengely indíthatja. A vezérlő vonal állapotát egy LED jelzi vissza a panelen, amit szintén egy nyitott kollektoros kapu kapcsol. Minden kontrollerhez tartozik még egy LED ami a vezérlő irány kimenetéről ad visszajelzést. A vezérlő elektronikán a motorok vezérlőjéhez való csatlakozáshoz tengelyenként egy-egy tíz érintkezős szalagkábel csatlakozó lett elhelyezve. Az IC4 és az IC7 IC-k nem használt bemenetei, földre lettek kötve azért, hogy zavarokat ne tudjanak módosítani az kimeneteik állapotát.
14. Mikrokontroller programja
A vezérlő elektronikán lévő mikrokontrollerek programja C nyelven készült el. Az fejlesztés
során
az
Atmel
kontrollerekhez
megalkotott,
AtmelStudio
6
fejlesztőkörnyezetet használtam. A program által lefordítot hex formátumú fájlt ProgISP 1.75 program segítségével töltöttem fel a mikrokontrollerre. A programozáshoz USBASP programozó eszközt használtam.
48. ábra USBASP programozó [16]
14.1 A mikrokontroller konfigurálása, változók és függvények deklarálása
A fejlesztő környezet, hogy megkönnyítse a programfejlesztő feladatát, számos előre megírt függvényt és előre deklarált változót tartalmaz, így azoknak a megírásával nem kell foglalkozni. A C program definiáljuk olyan változókat, amik a kontroller beállításaihoz szükséges számításokhoz szükségesek. Itt határozzuk meg a használt kvarcnak a frekvenciáját, a soros kommunikáció sebességét, és ezen adatok felhasználásával számolja ki a program az UBRR regiszter értékét. #define F_CPU 14745600
// rendszer orajel 14,745600 MHz
#define USART_BAUDRATE 9600
// soros kommunikacio sebessege: 9600 bps
#define UBRR_EREDMENY ((F_CPU / (USART_BAUDRATE * 16UL)) - 1) // UBRR kiszámítása Az UBRR_EREDMENY függvény nem végzi el a soros kommunikáció beállítását, beállítás csak a főprogram elindulása után történik meg. Ezután include fájlok betöltése következik, ezek a I/O lábak, a matematikai műveletek, megszakítások és a késleltetések kezeléshez szükséges függvényeket tartalmazzák. Ezt követi az változók deklarálása. A program két típusú változót használ, az char és unsigned int típust. A char 8 biten az unsigned int 16 biten kerül tárolásra. A szükséges méreteknél nem érdemes nagyobb változókat használni, mert a kontroller memóriáját fölöslegesen foglalja le és a számításoknál tovább tart a végeredményt kiszámolni.
char adatok[16]; char x=0,j=0,z=0,k=0,L_aktuSebb=0, H_aktuSebb=0; char data; unsigned int aktuSebb=0, vegSebb=0xff, pozicio=0, elMoz=0,FelTav=0, lasKez=0xffff; Az adatok[16] tömb tartalmazza minden mozgatásához szükséges adatott, amit a LabView számol ki és elküld a vezérlőáramkörnek. Az x, z, j, k a ciklusok számlálói és
az útelágazásoknál használt változók. Az L_aktuSebb és a H_aktuSebb változókba kerül tárolásra, azaz érték, ami a T1 időzítő számlálóregisztereibe kerül bemásolásra a számláló túlcsordulása után, és meghatározza, hogy mekkora frekvenciával adja ki a lépéseket a vezérlő. A gyorsításokat és a lassításokat is ennek a változóknak a felhasználásával hozza létre a program. Amikor gyorsítani kell, akkor hozzáad egy számot ezeknek a változóknak az értékéhez így, hamarabb fog túlcsordulni a számláló, és hamarabb tudja kiadni a következő lépést a vezérlő, így nagyobb sebességet diktál. Lassítás esetén csökkentjük a két változó értékét, ezért az előzővel ellentétes folyamat zajlik le. Az aktuSebb az L_aktuSebb és a H_aktuSebb változók tizenhat bites változata. A műveleteket a program a 16 bites változóval végzi, és azelőtt bontja, fel két 8 bites változóra mielőtt bekel másolni T1 időzítő számlálójába. A pozíció változó tárolja azt, hogy a vezérlőnek mennyi lépést kell kiadni, tehát az szükséges elmozdulást tárolja. Az elMoz változó tárolja azt, hogy a mozgás elkezdése óta menyi lépést küldött a kimenetre, ha az értéke megegyezik, a pozíció változó értékével az azt jelenti, hogy elérte a meghatározott pozíciót. FelTav a pozíció felével egyezik meg, a lassítás kezdésében van szerepe. A lasKez szintén a lassítás indításának a meghatározásában van feladata. A változók deklarálása után, a program futásakor többször használt függvények találhatót. Ezeknek a feladata UART beállítása, az adatok vétele és a küldése.
void UARTbeallit() {
// UART beállítása // 9600 bps sebesség beállítása
UBRRL = UBRR_EREDMENY; // UBRR_ERTEK alsó 8 bitjenek betöltése az UBRRL regiszterbe UBRRH = (UBRR_EREDMENY>>8); // UBRR_ERTEK felső 8 bitjenek beöltése az UBRRH regiszterbe UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Aszinkron mód, 8 Adat Bit, Nincs Paritás Bit, 1 Stop Bit UCSRB |= (1 << RXEN) | (1 << RXCIE) | (1 << TXEN); //Adó és vevő bekapcsolása, interrupt engedélyezése } Ez a függvény az UART beállítására szolgál, itt kerül betöltésre az UBRRL változóba, a program elején kiszámolt UBRR_EREDMENY alsó nyolc bitjének az értéke, majd nyolc
bites jobbra forgatás után az UBRRH változóba is bemásolja a felső nyolc bitet. Az UCSRC, UCSRB regiszterek módosítására használt módszer – a program során sokszor előfordul -, hogy a regisztert vagy kapcsolatba hozzuk, egy számmal, amit úgy kapunk ,hogy az 1-et n helyiértékkel balra forgatjuk. A n értéke a fejlesztőkörnyezetben eltárolt szám, és értéke megegyezik azzal a számmal ahányadik helyiértéken áll a módosítani kívánt bit. Ha UCSRC regiszter URSEL nevű bitjét szeretnék egybe állítani, ami a nyolcadik bit, ebben az esetben az URSEL névvel a hetes számra hivatkozunk, ennyivel kerül elforgatásra az egyes szám. Ha ezt a számot vagy kapcsolatba hozzuk a UCSRC regiszterrel akkor a nyolcadik bit egyes lesz. - UCSRC |= (1 << URSEL )- ezzel a módszerrel, a program szemléletesebb, hogy melyik bit lett beállítva. Ezt követi a adatok vételét kezelő függvény: char UARTvesz() // Adatokat kiolvasása az UDR regiszter bejövő pufferéből { while(!(UCSRA & (1<
// Küldendő adatot beírja az UDR regiszter kimenő pufferébe { while(!(UCSRA & (1<
// T0 áll // T1 áll
GICR |= (1<
kontrollerek
összehangolásáért.
A
sei()
egy
előre
megírt
függvény,
a
fejlesztőkörnyezetbe be van építve, ez általánosan engedélyezi a megszakításokat.
14.2 Főprogram A főprogram magját egy végtelen while ciklus adja, a cikluson belül nagyon kis része van, mert a feladatok nagy részét a megszakításokban végzi el a program. while(1) { if (z) {
z=0; lasKez=pozicio-elMoz;
} } return 0; A cikluson belül kerül kiszámításra az, hogy a vezérlőnek melyik pozícióban kell elkezdeni a lassítást, ennek a műveletnek csak egyszer szabad lefutnia, ezért egy feltétel foglalja magába. Ha a z nem nulla, akkor a számítást elvégzi, de a cikluson belül, z-t lenullázz, azért, hogy még egyszer ne tudjon a számítás lefutni. A lasKez-t akkor számolja ki, amikor a vezérlő befejezte a gyorsítást, ilyenkor az addig megtett utat, tehát az elMoz változót kivonja a teljes útból - a pozicio-ból-, így megkapjuk, mikor kell elkezdeni a lassítást a cél előtt.
14.3 Rx megszakítás, adat vétele
Az AtmelStudió fejlesztőkörnyezetben az ISR() függvénnyel adjuk meg, hogy megszakítás esetén a program, hol folytassa a futását. Ha Rx vonal adatott vesz, akkor a megszakítás a USART_RXC_vect vektorra ugrik, ami a következő programrészre irányítja a programot:
ISR(USART_RXC_vect) {
// RX interrupt
adatok[x]= UARTvesz(); if (x>=15) { x=0;
// A berekezo bajtok mentése
vegSebb=adatok[3]; vegSebb=(vegSebb<<8)+adatok[2]; // 16 bites sebesség összerakása. pozicio=adatok[5]; pozicio=(pozicio<<8)+adatok[4]; // 16 bites pozíció összerakása. aktuSebb=0; FelTav=pozicio/2; TCNT1L=0; TCNT1H=0; TCNT0= 0; if (adatok[0] & 0x01) PORTB |=(1<
Mindig, amikor adat érkezik, lefut ez a megszakítás, aminek az elején az aktuálisan vett bájtot bemásoljuk az adatokat tároló vektorba, a vektor az x változóval van indexelve. Az indexet egy if szerkezet hamis ágában növelünk egyesével, minden bájt érkezése után, így feltöltve a vektort. Ha a feltétel igaz, vagyis megérkezett a 15. bájt is, akkor az igaz ágban lenullázza a x változót, valamint a két különálló 8 bites bájtban elküldött sebesség és pozíció adatokat, egy 16bites változóba másolja. A programrészlet a X tengely adatainak a feldolgozására vonatkozik, a többi mikrokontroller is ezeked az adataikat kapja meg, de a vektornak nem a 2,3,4,5 indexű elemeivel számol, hanem a tengelynek megfelelő nagyobb értékekkel – az irányokat tartalmazó első bitet mindegyik vezérlő feldolgozza-. Ebben a megszakításban kerül kiszámításra az elmozdulás fele, amire akkor van szükség, ha a tengelynek nincs elég ideje felgyorsulni a maximális sebességre, és még a csúcssebesség előtt el kell kezdeni a lassítást. Ilyenkor a váltópont, amikor gyorsításból lassításba fordul a mozgás, az elmozdulás felére esik. Az adatok[0] bájt maszkolása után, megvizsgálja a program, hogy a legalacsonyabb bit egyes vagy nulla értékű-e és ez alapján állítja be a PB2 irányt jelző kimenetet.
Minden tengely, hasonló képen állítja be az irány kimenetet, csak a saját helyiértékét választja ki a bájtból.
14.4 Timer1 megszakítás, léptetés kezelése
Ez a megszakítás kezeli a lépés kimenetet, ez dönti el, mikor kell magas és mikor alacsony szintre váltani a PB1 láb állapotát. A megszakítás első utasítása az, hogy a PB1 láb állapotát az ellentétesére változtatja. Ezt követi, a számláló újratöltése, TCNT1L és a TCNT1H számlálóregisztereket az L_aktuSebb és a
H_aktuSebb
változókkal tölti fel. ISR(TIMER1_OVF_vect)
// T1 megszakítás
{ PORTB ^= (1<
// Lépés láb álapotát ellentétesre változtatja // T1 alsó bájtjának újratöltése // T1 felső bájtjának újratöltése // Lépés láb(PB1) mgas szintű? // Elmozdulás növelése
if (((elMoz>=lasKez)&&(j==0))||((elMoz>=FelTav)&&(k==0))) // Lassítás indítása ha az elmozdulás nagyobb mint a lasKez vagy a FelTav { vegSebb=0; // Célsebesség egyenlő nullával k=1; j=1; TCCR0 =(1<
A program megvizsgálja, hogy a lépés láb magas szintű-e, ha igen akkor növeli az elMoz változó értékét. Az ezt követő if szerkezetben megvizsgálja a program, hogy a lassítást el kell-e kezdeni. Ezt az alapján tesz, hogy az elmozdulás elérte-e az lasKez változó, vagy a FelTav értékét, ha a vezérlőnek volt lehetősége elérni a célsebességet, akkor a FelTav-val való összehasonlítás csak hamis lehet, mert a k változónak az értéke ilyenkor egy, tehát csak a lasKez elérése indíthatja a lassítást. Ezt követi a pozíció vizsgálat, tehát a pozicio változó egyenlő-e az elMoz értékével. Ha a feltétel igaz akkor a Timer0 és Timer1 is leállításra kerül, tehát többször nem hívódik meg sem a léptetést sem a gyorsítást kezelő időzítők megszakítása. A megszakításból való kilépés előtt a lépés lábat nullába állítja, valamint a PD4 alacsony szintbe állításával nem tartja alacsony potenciálon a vezérlő vonal állapotát, így adott esetben az R8 ellenállás magas szintre tudja húzni a vezetékszakaszt, ami egy magszakítást generál a vezérlőben és jelzi a LabView programnak, hogy a küldheti a következő adatcsomagot.
14.5 Timer0 megszakítás, gyorsítás kezelése
A timer0 időzítő felelős azért, hogy az aktuSebb változót folyamatosan, növelve vagy csökkentve, létrehozza a gyorsítási és a lassítási szakaszokat, Ezzel megakadályozva, hogy a robot túllépje a megengedet gyorsulási értéket, vagy azt, hogy ne tudja lekövetni a kiadott lépéseket és lépést veszítsen.
ISR(TIMER0_OVF_vect) { TCNT0=adatok[1];
// T0 megszakítás // A gyorsulás értékének visszatöltése
if((aktuSebb>=vegSebb)&&(k==0))// Elérte a cél sebességet? { z=1; k=1; TCCR0 =0x00; // Gyorsítás leállítása } if (aktuSebb
0xff9b)||((aktuSebb+12)>vegSebb)) aktuSebb++; // Ha a sebbesség közelít a felső határhoz vagy a célsebességhez, egyesével közelít tovább
else aktuSebb+=10; // Nincs túlcsordulás veszély, tízesével közelít. L_aktuSebb=aktuSebb; // Aktuális sebesség felbontása két 8 bites számmá. H_aktuSebb=(aktuSebb>>8); } if(aktuSebb>vegSebb)// Ha az aktuális sebesség nagyobb mint a Célsebesség { if ((aktuSebb<0x64)||((aktuSebb-12)
// Nincs túlcsordulás veszély, tisével közelít.
L_aktuSebb=aktuSebb; // Aktuális sebesség felbontása két 8 bites számmá. H_aktuSebb=(aktuSebb>>8); } } A megszakítás elején újratöltésre kerül a számlálóregiszter a adatok[1] értékével, a többi tengely a neki megfelelő indexű változóval tölti újra a számlálót. Ezt követi egy vizsgálat, ami eldönti, hogy a sebesség elérte-e a végsebességet, ha igen akkor kikapcsolja a gyorsítást irányító, timer1 megszakítását, valamint a z és k változóknak egyes értéket ad. A következő két if szerkezet megnézi, hogy az aktuális sebesség nagyobb, vagy kisebb-e mint a végsebesség. A vizsgálatok eredményétől függően, növeli vagy csökkenti a sebességet. A gyakorlatban nem elégséges egyesével változtatni a sebességet, mert úgy a mozgások nem elég dinamikusak, ezért ha nem nincs meg a veszélye, hogy a következő lépéssel túllépjük a célsebességet akkor tízesével növeli vagy csökkenti a sebesség változót. Ezek a változók 16 bitesek ezért a kilépés előtt felbontja a program, két 8 bites változóra, amit a nevükben a H és az L jelent.
14.6 Külső megszakítás
A külső megszakítások hatására futnak le a vészleállító és a mikrokontrollerek összehangolását végző folyamatok. Ha a PD3-os láb generálja a megszakítást, akkor INT1-es magszakítás fut le ami a szinkronizálást végzi a kontrollerek között. A megszakításban megvizsgáljuk, hogy alacsony vagy magas felfutó él hozta-e létre a megszakítást. Ha felfutó él volt akkor az azt jelenti, hogy minden tengely a megfelelő pozícióban van, a számítógép küldheti a következő pozíció adatait. Ilyenkor az igaz ág fut le amiben UARTKuld('a') függvény az ’a’ karaktert küldi a számítógépnek. ISR (INT1_vect) // Vezérlő vonal { if (PIND & (1<0) { TCCR0 =(1<
Ezenkívül, a kontroller az UARTKuld('e') függvény meghívásával egy ’e’ karaktert küld a vezérlőnek, ami azt jelenti, hogy vészleállítás volt, több adatot ne küldjön. Ebben az esetben a program kezelőfelületén a manuális mozgatást bekapcsolva, a tengely elmozdíthatjuk a végállásról, vagy a hiba elhárítása után újraindíthatjuk a program futását. Vészleállítás esetén nagy valószínűséggel a tengelyek lépést veszítettek és újra fel kell venni a nulla kezdőpozíció helyét.
ISR (INT0_vect) // E-Stop { TCCR0 =0x00; TCCR1B=0x00; UARTKuld('e'); }
// T0 áll // T1 áll
15. A nyomtatot áramkör megtervezése és megépítése
A nyomtatott áramkör 122x119mm méretben készült el, két oldalon huzalozott kivitelben. A felhasznált alkatrészek többsége SMD kivitelű, csak a csatlakozók a jumperek és az előlapra kivezetett LED-ek lettek furatszerelt technológiával beépítve. Valamint a mikrokontrollerek órajelét adó kvarc oszcillátorokkal párhuzamosan lett kialakítva, furatszerelt oszcillátoroknak hely. A két beültetési pont közül, egyszerre csak az egyik van felhasználva. A kialakításra azért volt szükség, mert ha szeretném a mikrokontrollerek maximális teljesítményét kihasználni, akkor az oszcillátorok cseréje szükséges, de a 16MHz-es oszcillátorokat csak furatszerelt kivitelben tudtam beszerezni. Az panelen az alkatrészek sűrűbb elhelyezésével kisebb kialakítás is lehetséges lenne, de a csatlakozók meghatározzák a minimális méretet, így nincs lehetőség a kompakt kialakítás elérésére.
49. ábra A vezérlő nyomtatott áramköri terve
Egy oldalon lettek elhelyezve a végálláskapcsoló, a vészleállítókapcsoló és a programozónak a csatlakozói. Ezzel ellentétes oldalon a három tengelynek motorvezérlőinek lettek a jel kimenetei kivezetve. Ez az elrendezés lehetővé teszi, hogy a vezérlő beszerelése során, jól elkülönítet és rendezett kábel elrendezést lehessen kialakítani. Az áramkör huzalozása fototechnikai eljárással lett kialakítva. Ennél az eljárásnál fényérzékeny lakkal bevont nyákot használunk. A kívánt huzalozást egy átlátszó fóliára kinyomtatjuk, majd a nyákra helyezzük a fóliát. Ezután UV fénnyel megvilágítva a panelt, a nyákon lévő fényérzékeny bevonat kémiai változáson megy át. Ahol a fólián lévő festékréteg megakadályozta, hogy a fényérzékeny bevonatot elérje az UV fény, ott a bevonat ellenáll a lúgos kémhatású maró folyadéknak. Ahol éri az UV fény a bevonatott ott a lúggal lemosható a fényérzékeny réteg. Miután a megvilágítás megtörténik, lúgos oldattal le kell mosni a fölösleges fényérzékeny bevonatott, hogy
ezeken a helyeken a rezet eltávolító maróanyag ki tudja fejteni a hatását. Az előhíváshoz lehet használni nátrium-hidroxid vizes oldatát vagy készen kapható előhívó folyadékot, amit TN 140 néven forgalmaznak. Az előhívás után a rezet is több különböző vegyszerrel lehet lemaratni. Elterjedt megoldás a Vas-klorid, a sósav és hidrogén-peroxid alkalmazása, valamit a nátriumperszulfát is jól alkalmazható a feladatra. Környezetvédelmi szempontból az utóbbi a leg előnyösebb és az alámarásra is kevésbé hajlamos a többivel összevetve. Hátránya, hogy ez igényli a legtöbb maratási időt és előmelegítést is igényel. A panel kimaratása és fúrása után a következő végeredményt kaptam:
50. ábra A kimart nyomtatott áramkör
Az alkatrészek beültetése során először az átvezetések lettek bekötve, amik a Top és a Bottom oldalt összekötik. Ezt követte a nulla ohmos ellenállások beöltetése, amik azért vannak beültetve, mert ezek alatt vezetékezés van elvezetve, ami a valamelyes csökkenti az így is tetemes számú átvezetést. Ezután a különböző tokozású IC-k lettek a panelra forrasztva. Ezt követte a passzív alkatrészek beültetése, mint a kondenzátorok és az ellenállások. Végezetül a legnagyobb alkatrészek foglalták el a helyüket, ezek a csatlakozók és a LED foglalatok.
51. ábra Készre szerelt vezérlő elektronika
16. Áramkör élesztése, tesztelés
Az áramkör élesztésének első lépése a szakadás és rövidzárlatok keresésével kezdődött, amit kézi multiméter segítségével vizsgáltam meg. Ezt követte a feszültség alá helyezés, panelt egy stabilizált 5V-os tápegységgel tápláltam meg és ellenőriztem, hogy az IC-k lábain, a kondenzátorokon és a felhúzó ellenállásokon megjelent-e kellő feszültség. Mivel mindenhol a megfelelő értéket mértem, elkezdhettem a funkcionális tesztet, aminek az első lépése, hogy csatlakoztattam a programozót a panelra és azon keresztül a számítógéphez. A programozó érzékelte mind a három mikrokontrollert, ezután már hibára nem számítottam. Mind a három mikrokontroller először egy teszt programot kapott, ami a kimenetek állapotát időközönként megváltoztatta. Ebben a tesztben oszcilloszkóppal megvizsgáltam, hogy a kvarcok a megfelelően rezegnek-e. Ezt kövezhette a végleges programoknak a feltöltése. A panelen lévő USB-UART átalakítóhoz tartozik egy program, amivel a beállításokat ellehet végezni az IC-n. Ez a program letölthető a gyártó honlapjáról, feltelepítés után,ami a driverek installálását is jelenti, - a következő kezelőfelületet kapjuk:
52. ábra MCP2200 konfiguráció [18]
Ennek a programnak a segítségével be lehet állítani, hogy a Windows milyen névvel jelenítse meg az eszközt a számítógéphez való csatlakoztatás után. A legfontosabb beállítás az adatátviteli sebesség helyes megadása. Lehetőség van a kommunikációt jelző LED-ek engedélyezésére, vagy tiltására, és a jelzés módja is beállítható. Az
áramkör
élesztése,
valamint
az
adatátvitel
beállítása
után
ellenőriztem
oszcilloszkóppal, hogy a kimeneteken a megfelelő jelek jelennek meg. Ezt az éles teszt követte, ahol a panelt csatlakoztattam egy léptetőmotor meghajtó elektronikához. Ez az elektronika három TB6560 típusú léptetőmotor vezérlő IC-t tartalmaz. Ez az összeállítás három 1Nm forgatónyomatékú léptetőmotort vezérelt. Ezek a motorok, az elmúlt évek során általam épített CNC maró/gravírozó gépen foglalnak helyet. Az első mozgásokat alacsony sebességgel és rövid elmozdulásokkal manuális irányítással kezdtem,majd fokozatosan növeltem a sebességet.
53. ábra Vezérlőelektronika teszt
Az első automatikus mozgás teszteket a marógép, szerszámok nélkül csak a levegőben mozogva végezte. Ezt követően egy valós feladatot bíztam a gépre. A főorsóba egy 1mm átmérőjű NYÁK fúrót helyeztem, egy nyers nyáklemezt rögzítettem a tárgyasztalom, majd elindítottam a fúró programot.
54. ábra NYÁK fúrása
A tesztek rávilágítottak a rendszer olyan gyenge pontjaira, amivel még nem vagyok megelégedve és a jövőben még fejlesztésre szorulnak. Ilyen probléma, hogy a vezérlő program és az elektronika időközönként elveszti a szinkront, és így az adatátvitel teljesen hamis eredményeket eredményez.
Az is előfordulhat ilyenkor, hogy valamelyik mikrokontroller rossz irányú mozgást akar végrehajtatni, ami balesethez is vezethet. Remélem a közeljövőben sikerül megoldani ezeket a problémákat és így egy olyan rendszerhez jutok, ami akár ki is válthatja az eddig általam használt programokat, így megszabadítva azoknak az egyenetlen léptető impulzusaitól, a lefagyási veszélyektől és más kellemetlenségeiktől.
17. Összefoglaló A szakdolgozatom témaköre az elektronikai gyártásban használt robotok, azok osztályozása, és különböző csoportosítási szempontok. Megkülönböztetésre kerülnek anyagkezelő, műveletvégző és szerelő robotok. Tárgyalásra kerülnek, hogy a robotok milyen mechanikai elemeket tartalmaznak, egy teljes robotikai rendszer milyen elemekből épül fel, és hogy a robotokat milyen módon lehet megvalósítani. A robotok alkalmazhatóságainak a témaköre foglalkozik a forrasztási megoldásokkal, a folyadékok adagolásával, csavarozási és jelölési módszerekkel, és az anyagmozgató robotokkal. Ismertetem, hogy egy általam tervezet robotvezérlő egységnek, hogyan néz ki a LabVIEW környezetben megírt programja, az a vezérlő elektronikát, hogyan irányítja és az elektronikán lévő mikrokontrollerek C nyelven megírt programja hogyan működik.
18. Következtetések
A szakdolgozat kidolgozása során bemutattam, hogyan lehet alkalmazni a robotokat az elektronikai gyártásban. Bebizonyosodott, hogy egy feladat elvégzéséhez sose egy út vezet, egy feladatot több működésében különböző eszközzel el lehet végezni. Gondolok itt példaként a forrasztási feladatokra, ahol öt különböző forrasztási megoldás is bemutatásra került. A vezérlő áramkör előnyös tulajdonsága, hogy a léptetés impulzusait pontosan, egyenletes időközönként adja ki, ami a robot mozgására is előnyösen hat. Egy tisztán számítógépes rendszer, a működése sorén sok feladatot lát el, így nem mindig a megfelelő időpontban adja ki a léptetés impulzusait, ezt a problémát ezzel a külső eszközzel orvosolni lehet. Az áramkör a megépítése során, szembesültem a vezérlés olyan tulajdonságaival, amik alulmúlták az előzetes elvárásaimat. A fejlesztés kezdetén
arra számítottam, hogy a vezérlő képes lesz tengelyenként 100kHz-el kiküldeni a lépéseket a motorvezérlőnek. Ezt a célt nem sikerült elérni, mert a program megszakítási viszonylag hosszúak így, nagy frekvencia esetén, nincs idő kilépni a megszakításból, a következő kezdetéig, ami a program, hibás működéséhez és lefagyáshoz vezet. De általánosságban elmondható, hogy nincs is szükség ilyen nagy frekvenciára. Ha a robot egy lépésre megtett elmozdulása, nem túlságosan kicsi, a századmilliméteres tartományba esik – ami az esetek nagy részében elegendő -, akkor az előzetesen elvárt frekvenciától jóval kisebb léptetési sebesség is elég lehet, amit a vezérlő már teljesíteni tud. Tervezés során fejlesztési lehetőségek is felmerültek. Ha a robotot olyan környezetben szeretnénk alkalmazni, ahol nincs szükség folyamatos felügyeletre, és a robot feladataiban nincs nagy változatosság. Akkor a LabView vezérlő programot tovább lehetne fejleszteni úgy, hogy amikor a mozgáspályát lefordítja a vezérlő számára értelmezhető formátumba, akkor nem küldi el a vezérlőáramkörnek, hanem lementi egy szöveges állományba. Így a vezérlő program, mint egy fordító funkcionál. A vezérlő elektronikát, ha nem a PC-hez csatlakoztatjuk, hanem egy másik mikrokontrollerhez, ami képes az USB kommunikációra és képes például egy memória kártya olvasására, akkor a számítógép a vezérlési folyamatból kihagyható. A LabView által lefordított mozgáspályát a memóriakártyáról futatná a vezérlő, így helytakarékosabb és olcsóbb rendszer hozható létre. További fejlesztési irány lehet, ha a panelen lévő három mikrokontrollert, nem egy panelen helyezzük el, hanem egyesével különálló panelekként csatlakoztatjuk egy közös kártyára, így a rendszer bővíthetővé válik. Ha például öt tengelyt szeretnénk vezérelni, akkor a központi kártyára az igénynek megfelelő számú vezérlőt csatlakoztatunk. Így egy rugalmasan konfigurálható rendszert kapunk. Véleményem szerint egy olyan rendszert sikerült alkotnom, ami ugyan még rendelkezik kiforratlan tulajdonságokkal, de megvan benne a fejlesztési potenciál, és egy jól alkalmazható, olcsó vezérlőrendszert képvisel.
19. Summary
The application of robots is widespread in all industries; the electronic components manufacturing industry is no exception. In my thesis I would like to show how and where in the electronic manufacturing can robots be utilized. In the first part of my thesis I have collected the common characteristics of robots, what set ups are possible and what kind of tasks are they capable of. In the second part I explain what attachments can the robots be equipped with, and what is the best use for them. In the third, biggest part of the thesis I go through the build steps of the control circuits of a 3axis, point control capable robot, and the development of the control programmes. During planning my main aim was to build a circuit which does not need any special and expensive control components. The circuit’s control functions are done by microcontrollers from Amtel. The calculation steps are carried out by a Labview programme, and this software provides the user interface too. During planning I also considered possible further development. Such opportunity is bypassing the PC thus creating a standalone system which controls the robot without human intervention. Another development direction could be to enable the system to control more axis or be able of path control. The controlling of robots is a very wide area with diverse development directions. During my thesis work I had the chance to get an insight in this field and in the future I would like to get involved in development projects in this area.
20. Felhasznált irodalom [1][3][5] Dr. Makó Ildikó: Előadásvázlat http://www.szgt.unimiskolc.hu/oktat/segedl.html [2] Dr. Makó Ildikó: Szerelőgépek prezentáció http://www.szgt.unimiskolc.hu/oktat/segedl.html [4][10] Dr. Helm László: Ipari robotok, Műszaki könyvkiadó 1981 [6] [7]MTA Soldering&Dispersing®http://www.mta.ch/pages/tbrasage_plateformes.asp [8] [9] MTA Soldering&Dispersing®http://www.mta.ch/pages/tbrasage_apercu.asp [11] [12] SMC® http://content2.smcetech.com/pdf/LC8-LJ1-LG1-LTF_EU.pdf
21. Ábrajegyzék [1] Dr. Makó Ildikó: Előadásvázlat http://www.szgt.uni-miskolc.hu/oktat/segedl.html [2]http://www.mechatronictips.com/2009/12/1924/technology/robotics/robot-lowerscosts-for-packagers/ [3][4] MTA Soldering&Dispersing® http://www.mta.ch/files/pdf/mta_brochure.pdf [5] http://www.ami.ac.uk/courses/topics/0227_sms/ [6] http://www.emeraldinsight.com/content_images/fig/1560110204002.png [7] http://flipchips.com/tutorial/process/jet-dispensing-of-underfills/ [8] www.carlsoneng.com [9] HERMA 400 címkézőgép gépkönyv [10]http://www.tankonyvtar.hu/hu/tartalom/tamop425/0007_12Szerszamgepek_es_gyartorendszerek/325f375f31305fc3a1627261.jpg [12]http://i00.i.aliimg.com/img/pb/286/953/104/1278990100548_us-myalibabaweb5_1304.jpg [11][13][14][15] SMC® http://content2.smcetech.com/pdf/LC8-LJ1-LG1-LTF_EU.pdf [16] http://d1gsvnjtkwr6dd.cloudfront.net/large/AC-PG-USBASP_LRG.jpg [17]http://www.atmel.com/images/atmel-2486-8-bit-avr-microcontrolleratmega8_l_datasheet.pdf [18]http://esca.atomki.hu/PIC24/microstickplus.html
22. Melléklet
1. Melléklet Felhasználói felület