Robotkar-modell beágyazott vezérlőegységének fejlesztése

OData támogatás
Konzulens:
Kovács Gábor
Irányítástechnika és Informatika Tanszék

Szakdolgozat-feladatom egy oktatási célú robotkar-modell beágyazott vezérlőegységének továbbfejlesztése volt. Először a teljesítményelektronika tervezésével foglalkoztam. H-híd áramköröket használtam, mert a régi elektronikával ellentétben képes negatív tápfeszültség nélkül egy motort mindkét irányba forgatni, illetve megfelelően kezeli a sebesség beállításáért felelős PWM-jelet. A megfelelő IC kiválasztásához figyelembe kellett vennem a motorok feszültségének és áramfelvételének maximális értékét. L298N áramkört választottam, amely egyszerre két motor forgatását teszi lehetővé.

Ezt követően a hídvezérlés és a végálláskapcsolók logikai áramköreit terveztem meg. A mikrokontroller véges számú PWM-kimenettel rendelkezik, ezért a forgási irányokért felelős vezérlőjelek segítségével egy darab PWM-jelet kettéosztva használok fel. A PWM-jel felosztásához tranzisztoros ÉS-kapukat használtam fel.

A végálláskapcsolókhoz többszintű logika szükséges. A kapcsolókat kivettem az áramkörből, majd a lábaikat úgy kötöttem be, hogy bármelyik végállásba érkezéskor egy PWM-jel keletkezzen. Ezt a jelet RC-szűrővel egyenirányítottam és egy komparátorra vezettem. Az így kapott jelet a PWM-jelhez hasonlóan ÉS-kapukkal kettéosztottam a vezérlőjelek segítségével, a kapuk kimeneteit diódás VAGY-kapun keresztül egy inverter bemeneteire vezettem, majd az így kapott jelet használtam fel a hídáramkör engedélyezésére. Ezzel megvalósítottam azt, hogy végállásba érkezéskor a motor adott irányba ne, csak ellenkező irányba foroghasson.

Az elektronika egy 24 V-os tápfeszültségről működik, az egyes alkatrészek tápellátását feszültségszabályzókkal oldottam meg.

Az irányítószoftver feladata a csuklók adott sebességű forgatása adott célpozícióba. A feladatot több részre osztottam. Elsőként megírtam egy motor mozgatásáért felelős függvényt, amelyet minden motorra használni tudok. Ezt követően a motorok aktuális pozíciójáról információt nyújtó logikát írtam meg. A logika az inkrementális adók négyszögjeleinek impulzusait számlálja. Az inkremensszámokat forgásiránynak megfelelően növeli vagy csökkenti. Az adott pozícióba forgatásért felelős külön kódrészletek az aktuális pozíció és a célpozíció relációját vizsgálva eldönti a forgásirányt, majd meghívja a mozgató függvényt.

Az inkrementális adók relatív elmozdulást mérnek, ezért az impulzusszámlálást kalibrálni kell az inkremensszám véghelyzetben történő beállításával.

A mikrokontroller a PC-től soros porton keresztül kapja az adatokat. A protokollt úgy terveztem, hogy egy darab stringbe beolvassa az összes információt, a stringet aritmetikai műveletek segítségével bontom fel a szoftver által használható értékekre. Az ellenkező irányú kommunikáció keretében a szoftver az impulzusszámlálók motorra azonosítójával ellátott értékeit küldi el a felhasználói alkalmazásnak.

Ezután a felhasználói alkalmazást terveztem meg, melyen keresztül a felhasználó megadhatja a motorok célpozícióit és sebességét, eközben információt kap az aktuális pozíciókról.

Az elvégzett munka nem teljeskörű, a megfogó irányítása a végálláskapcsolók hiánya miatt nem lett megoldva. A kapcsolók pótlásához egy lapkát kell a megfogó csuklójához erősíteni, a kapcsolókat a lapkán levő 7 mm-es lyukakba helyezni. A lapkát pedig CAD szoftverrel terveztem volna meg, de idő hiányában nem volt rá lehetőség.

A rendszer továbbfejlesztése során egy apró kiegészítés lehetséges: az inkrementális adójelek pergésmentesítésével pontosítható lenne az impulzusszámlálás. A tervezés során úgy gondoltam, hogy ezt szoftveresen is megoldhatom, de mint kiderült, a program jelentős lassítása nélkül nem lehetséges. A pergésmentesítés hardver szinten is megoldható, az elektronika tehát a további fejlesztések során kiegészíthető az ezt megvalósító áramkörökkel.

A megvalósítás során robotkar felépítésének megváltoztatását mellőztem, így nehézségek merültek fel. A 2. szegmens mozgását egy rugósor segíti, azonban a rugók nem megfelelő irányúak. Ennek köszönhető, hogy a motort nem lehet alacsony sebességen forgatni, kézzel kell segíteni a mozgását. Ráadásul szerencsétlen helyen van a rugósor: folyamatosan beleakad a 2. szegmens végálláskapcsolókat tartalmazó lapkájába, így előfordul, hogy a logika nem működik megfelelően. A rugósor a második és az első szegmens közé van befogva, áthelyezéséhez mindkét szegmenst szét kellett volna szerelnem, de nem akartam kockázatot vállalni. Ezen kívül említettem, hogy a 2-3 szegmensek mozgástartománya nem független egymástól. A további fejlesztések során rugósor áthelyezésével és a szegmensek függetlenítésével a kézi beavatkozás minimalizálható (nem kell figyelni a rugókra), a szoftver pedig egyszerűsíthető (független szegmensek).

A felhasználói alkalmazás hátránya, hogy nem képes megfelelően kezelni azt a helyzetet, amikor csupa nulla karaktert küld sebességként. A további fejlesztések során ezt a hibát mindenképp javítani kell.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.