Szervomotor Vezérlése Potenciométerrel Arduino Alapok
Ha használni szeretné a szervomotor vagy szervo, A Arduino, ebben a cikkben megtudhatja, mire van szüksége az induláshoz.
Un szervómotor, vagy egyszerűen csak a szervo, egy elektronikus motor, amely hasonlóságot mutat a hagyományos egyenáramú motorokkal, de van néhány olyan elem, amely különlegessé teszi őket. Ezek a funkciók különösen érdekessé teszik alkalmazások robotikához, vagy más eszközökhöz, ahol szükséges a mozgás és helyzet szabályozása, például nyomtató vagy távirányítású autó.
A szervomotorokat igen széles körben használják a robotikában, különböző vezérlő és szabályzó rendszerekben, RC modellekben, elsősorban pozicionálási feladatokra. A legelterjedtebb hobbi alkalmazás szerintem a rádió távirányítású (RC) modellek irányítása.
A szervo egy speciális motor, tengelye a hagyományos motorokkal szemben nem folyamatos, állandó vagy változtatható fordulatszámú forgást végez, hanem adott szöggel elfordul, és a tengelyére szerelt kar helyzetét változtatja meg. A szervomotoroknak megadható hogy milyen szögben (milyen mértékben) forduljon el.
Nagyon nagy előnyük, hogy egy pillanat alatt reagálnak, és nagyon gyorsak. Arról nem is beszélve, hogy a felépítésüknek köszönhetően viszonylag nagy energiát képesek kifejteni a rájuk szerelt karokra. Ebből kifolyólag sok helyen láttam, hogy hobbi étel is ital automaták vezérléséhez használták ezeket a motorokat.
Accent szervokormány hibaelhárítás
A Szervomotorokról Röviden
Ha kíváncsi, a szervomotor és a léptetőmotor közötti különbség, az az igazság, hogy összekeverhetők, mivel a léptetőmotorban, vagy a lépcsőben a forgás is elég pontosan vezérelhető, és az alkalmazások nagyon hasonlítanak a szervóra. És a szervomotorok jellemzően használják ritkaföldfém mágnesek, míg a léptetőmotorok olcsóbb és hagyományosabb mágneseket használnak. Ezért egy szervo nagyobb nyomatékfejlesztést érhet el, annak ellenére, hogy kompakt marad.
A hagyományos szervomotor vezérlése lényege, hogy ennek a szervomotornak motornak a 0-tól 180 fokos beállításra van lehetőség (egy irányba). A kar, illetve a tengely által megtett elfordulást, illetve az elfordulás szögét egy impulzussorozattal határozhatjuk meg. Ez a vezérlési mód a PWM, azaz impulzus-szélesség moduláció. A megoldás lényege az, hogy olyan állandó periódusidejű (frekvenciájú) jeleket állítunk elő, ahol a szabályozás a jel kitöltési tényezőjének változtatásával történik. A kitöltési tényező az impulzusszélesség (azaz a bekapcsolt állapot ideje) és a periódusidő hányadosa.
A szervo minden 20ms-os időközönként új impulzust vár, ami meghatározza az elfordulási szögét. Egy 1,5ms-os impulzus a szervot a 90 fokos pozícióba forgatja, amit semleges pozíciónak hívunk. Az 1ms-os impulzus 0 fokba, a 2ms-os impulzus pedig 180 fokos pozícióba forgatja a szervo tengelyét, illetve a rá szerelt kart. Ezek után be kell állítani a kitöltési tényezőt (dutycycle), amit az impulzus időtartamának és a szükséges impulzus szélességének az aránya határoz meg.
Amikor szervót vásárol, olvassa el annak műszaki lapját vagy adatlapját. Így biztosítani fogja a műszaki jellemzők megvannak, de vannak olyan korlátai is, amelyeknek alávetheti magát, például feszültség, intenzitás, maximális terhelés, nyomaték stb. E modell esetében kiváló minőségű motorról van szó, olyan fordulási szöggel, amely lehetővé teszi a söprés -90 és 90º között, vagyis a teljes fordulat 180º. Az elért felbontás nagyon magas, így apránként képes lesz előre lépni. Ráadásul 9 gramm lesz a súlya, és ennek a súlynak és a kompakt méretnek a ellenére kialakulhat a nyomaték vagy 1.8 kg / c nyomatékm 4.8v-val. Végül már tudod, hogy attól függően, hogy mit szeretnél elérni, ki kell választanod az egyik vagy másik modellt, hogy a a projektjéhez szükséges funkciók.
Bekötés és Táplálás - Biztonság Mindenekelőtt
A bekötés talán itt a legegyszerűbb, mert csak 3 vezeték van. Abból kettő a tápellátásnak, egy pedig a vezérlésnek. A barna vezeték a GND a piros vezeték az 5V és a narancssárga vezeték a vezérlésé. Az SG90 micro servo vezérlése talán a legegyszerűbb kapcsolás.
Útmutató a Mazda szervó gumicső javításához
A mikró szervomotorok is, 200-400mA vesznek fel, ami nagyobb, mint ami megengedhető az arduino kivezetésének a terhelhetősége (40mA), illetve meghaladhatja az arduino eszköz, és megközelíti az USB port korlátját is. A motorok általában nagyobb áramerősséget vesznek fel, mint amit az arduino megenged, sőt, sokszor amit az USB tápja megenged, ezért a motorokat néhány mikró szervomotor kivételével, nem az arduino, vagy az USB tápjáról, hanem külön tápról üzemeltetjük. Egyszerű esetben elemről, vagy adapterről. Az arduino, mint a többi vezérlő áramkör kis feszültséggel működik, 5V-al. Ahogy a bekötési ábrán is látszik, a servo tápfeszültség ellátása a Pi 5V-os GPIO tüskéjéről történik, a nyomógombok 3,3V-ot kapnak. A másik szem előtt tartandó szempont a servo teljesítmény igénye.
A motorokban tekercsek vannak, amelyek elektromágnesek. A mágneses erő mozgatja a motorokat. Amikor egy motor tekercsében hirtelen megszűnik a feszültség, vagyis kikapcsoljuk, a mágneses tere, miközben összeomlik, feszültséget gerjeszt a tekercsben, de ennek az áramiránya ellentétes. Viszont akár 150V-tal is visszarúghat egy kisebb motor tekercse is. Ez a nagy feszültség veszélyeztetheti a félvezetőkből készült elektronikát, így sok esetben kell valamit csinálni vele. A motorokhoz használt driverekbe, vezérlőmodulokba bele van építve ennek a kezelése. Hogy még véletlenül se kerüljön nagyobb áram a vezérlésre, a legjobb megoldás szerintem az optocsatoló.
Szervomotor Vezérlés Arduino-val
Szóval kezdjük el megtanítani az Arduino-t, hogyan vezérelje a szervomotort. Először is, össze kell kötnünk az Arduino-t és a szervomotort. Az SG90 micro servo vezérlése talán a legegyszerűbb kapcsolás.
Először is, nyissuk ki az akváriumi/IC tesztvezetékeket. Ezután kódolunk egy programot az Arduino alkalmazásban, amely meghatározza, hogy a szervomotor mennyit és milyen irányba forduljon. A forráskódot is az adafruit honlapjáról szedtem le, és itt olvasható egy egész jó leírás angolul a szervók vezérléséről.
A teszteléshez az alábbi képen látható SG90 szervót használtam. Arduino IDE felületen egy példaprogrammal leteszetltem viszonyítási alapként egy MG90S-180-al is.
Golf 5 szervo probléma megoldása
Most, hogy feltöltöttük a programot az Arduino-ra, látnunk kell, hogy a szervomotor működés közben van, és pontosan úgy működik, ahogy programoztuk. Csak egy kis gyakorlattal már elég jól el tudunk boldogulni a szervomotorok használatával az Arduino-hoz!
Pozicionáló szervomotor vezérlése Arduino segítségével (10. lecke)
Potenciométeres Vezérlés a Precizitásért
Egy másik dolog, amit meg tudunk csinálni, az az, hogy: | lassan vagy gyorsan mozgassuk a szervomotort | és megállítsuk azt egy bizonyos szögben. A knob-nál egy potenciométerrel változtatjuk a motor helyzetét, és nem csak fokokban tudjuk beállítani, hanem a 0 és 180 fokot tulajdonképpen átalakítjuk 0 és 1024 jellé, így még finomabban tudjuk állítani, amihez potmétert használunk.
A szervo vezérlését be tudjuk állítani úgy is, hogy nem fokokban (0-180),hanem a 0 és 180 fok közötti vezérlőjel időtartamával vezérlünk. Alapértéknek 544 és 2400 µs van beállítva, és ezt kihasználva a kódban lassú mozgást, vagy/és igen precíz vezérlést is megvalósíthatunk. Ezzel pedig a sorosmonitorral vezérelhetjük igen pontosan.
A precíz mozgás vezérlésének művészetével elkészíthetünk lenyűgöző projekteket, például egy robotkart, amely képes megfogni egy tárgyat, vagy egy önálló gondolkodású autót. A lehetőségek száma végtelen!
Példa Projekt: Szervomotor Vezérlése Joysticckel
Ebben a rövid projektben bemutatjuk neked, hogyan tudsz vezérelni több szervomotort 1 db joystick segítségével. Esetünkben 2 db szervomotort vezérlünk, azonban csak rajtad múlik, hogy hányat használsz. A mintakódot kiegészítve akár 3 vagy 4 is lehet. 2db 5kΩ-os potenciométer helyezkedik el a modulban mindazért, hogy olvasni lehessen az X és az Y pozíciókat. Továbbá 1 db normál nyomógomb. A nyomógombot úgy tudjuk használni, hogy középen megnyomjuk a joystickot.
A kapcsolás megépítése után következzen a programozás. A mintakódot megtalálod a következő linken vagy az oldalunkon „Arduino projektek” fül alatt. Miután betöltötted a mintakódot (Servo_Control_with_Joystick.ino) az Arduino IDE fejlesztőkörnyezetbe, nincs más dolgod, mint feltölteni azt az Arduinodra.
- //Szervók PWM pinjeinek meghatározása. 3. pin és az 5.
- servo1.write(joyVal); // 1.
- servo2.write(joyVal); // 2.
Mintakód: Itt található.
Gyakori Problémák és Megoldások
Amikor feszültség alá helyezed a servo motorodat, akkor gyakran tapasztalhat ugrálást. A hirtelen feszültséget vezérlésnek veszi, és felvesz valamilyen kezdő pozíciót. 0 fok-90 fok- és 180 fokba áll be ilyenkor a motor.
Viszont még az mg90s teszi a dolgát addig a Graupner csak egy irányba szeretne menni tehát át a 180 fokon (szerintem). Akkor is ha tápfeszültség alatt hozzáérek az adat vezeték végéhez. Ha az adatvezeték nem kap semmilyen feszültséget. Akkor nem csinál semmit a motor, de eddig úgy érzékeltem, hogy akármilyen feszültséget kap az adat vezeték, akkor fixen egy irányba forog/forogna. Akkor az talán halott. Még eszembe jutott valami, lehet, hogy nagyon régi szervo került a kezedbe ahol fel van cserélve a plusz meg a jel bemenet.
tags: #szervomotor #vezerlese #potenciometerrel #arduino #alapok