Developer blog / Profession (page 3)

A korábbi eredmények, hogy a PWM vezérlőt sok-sok IC-ből raktam össze, szórakoztató volt, de gyakorlatban nem sok értelme, mivel nagyjából bármilyen mikrovezérlőben alapból van PWM kimenet. Így lett aztán, hogy végül egy Arduino Mini-t használtam fel a feladatra, és a jelforrás kérdését is sikerült egyszerűbben megoldanom, ugyanis az eredeti terv szerint egy szoftver vette volna fel a hangkimenetet és szedte volna szét szoftveresen a jelet 3 frekvenciatartományra, ehelyett most egy equalizer IC-t használok, ami a szűrést analog elvégzi, és az Arduino ennek a jelét olvassa be. Így aztán a bemenetre bármilyen eszköz analog hangkimenete rácsatlakoztatható.

A dolog persze még nem tökéletes, a hardver oldala ugyan majdnem kész, de a szoftver oldala az, amivel még lesz bőven munka. Mint rájöttem, a legtöbb esetben nem ad kielégítő eredményt. A legjobb eredményt azok a zeneszámok adják, ahol egyszerre kevés hangszer szól, vagy jóval hangúlyosabb a dob, mint a zene többi része, - ez tipikusan a zeneszámok eleje - de aztán amint beindul, már szinte csak egyenletesen világít. Erre egy ötlet az, hogy programoznék bele beat-detektálást, és azt külön kihangsúlyozná. Ezt aztán tovább lehet vinni, hogy legyen olyan üzemmód is, ahol a LED-ek ritmusra ötletszerűen váltogatják a színüket.

Ha az eszköz kész lesz és beválik, akkor lehet csinálok belőle egy komolyabb összeszerelést is, csupa SMD alkatrészekkel, és profi csináltatott nyomtatott áramköri lappal.

A szakirányos tárgyak kapcsán felmerült bennem az igény, hogy ez ugyan szép és jó, hogy szabályzó rendszereket tervezünk és szimulálunk, de jó lenne látni működés közben is. Itt jött az ötlet, hogy akkor legyen valami, ami egyszerű és látványos is: egy lift! A működési elv az a valódi liftekkel ellentétben most egy kicsit más lesz, a kimenő jel értelemszerűen a motor jele, viszont a bemenő jel egy magasság lesz, a visszacsatolás pedig szintén egy magasság, mégpedig a tényleges fizikai helyzete a liftkabinnak. A liftet az egyszerűség kedvéért LEGO-ból építem meg, így az összerakással hamar készen leszek.

A szabályzó rendszert egy Arduino Uno mikrovezérlő alkotja, ez fogja figyelni az analog bemenetén a visszacsatolást, illetve PWM kimenetén vezérli a motort. A felhasználói bemenetet kapcsolók végzik, mindegyik reprezentálva egy-egy emeletet, a program ezek megnyomásakor az adott emelethez tartozó magasságértékre fogja a rendszer bemenetét állítani.

A liftkabin helyzetének mérését egy ultrahangos szenzorral oldom meg, ami a liftaknában figyel felfelé (ez egy 300 forintos eszköz). Az előzetes tesztek ígéretesnek bizonyultak, a szenzor miliméterre pontosan tud mérni és 200 centiméter után is megfelelően kicsi a szórása.

Egy 22cm-es mérés. A kis fehér dobozt akárhova húztam a vonalzón, mindig pontosan kiírta a kijelzőn a távolságot.

A következő feladat a szenzor liftaknába szerelése. Gondoltam arra hogy esetlen LEGO kockákat fúrok meg, de túl kevés a hely a lyukak körül. Aztán jött az ötlet, hogy építek saját átkötő elemet, ami csatlakozik a gombokra anélkül, hogy bármi kárt tennék bennük. Az eredmény még annál is jobb lett mint amire számítottam.

LEGO átkötő elemek felszerelve az ultrahangos szenzorra.

Jelenleg most itt tartok vele, a liftnek az alsó része meg van csinálva, de még át lesz szabva. Ha kész a LEGO építmény és a motor már viszi a kabint, utána veheti kezdetét a PID szabályzó tervezése.

A lift, amennyi most megvan belőle, és a liftaknába beszerelve az ultrahangos szenzor.

Megérkezett hát az Arduino panelem, és elkezdtem rá gőzerővel mindenfélét építgetni. Van pár konkrét terv is vele, nem csak ilyen „dejó, működik” típusúak, úgyhogy esélyes hogy veszek még egyet.

A jelen bemutató tárgya: hogyan hajtsunk meg villanymotort egy Arduino Uno-nak a PWM kimenetéről. Közte még van egy IC ami a 12V-os tápot és az Arduino védelmét intézi. A motort gyurmaragasztóval rögzítettem az asztalra, hogy ne másszon el, amitől viszont elég komoly hangja lett. :D

Az elektronikás projektek most jegelve vannak az egyetemi félév idejére, de az egyetem kapcsán is jó sok érdekes feladat van. Köztük a robotika szakirány a 3 féléves projektmunkájával, melynek során egy olyan szoftvert készítünk, amely képest egy Kinect szenzor jeleivel feltérképezni a környezetét és ebben útvonalat keresni. Ez egyelőre erősen alfában van, úgyhogy erről konkrétabbat majd csak később.

Ami viszont egybevág a hobbiprojektjeimmel: a következő nagyobb videojáték munkámat mindenképp voxel alapokra akarom helyezni, és ezt csak elősegíti az, hogy a robot projekt is voxeleket használ, és a GPU Programozás tárgy keretein belül is voxel render-t írok CUDA-ra. Mire oda jutok hogy a játékot elkezdjem, már lesz konkrét elképzelésem róla, hogy mit hogyan érdemes.