- Mi az a szervomotor?
- A szervomotorok összekapcsolása a mikrovezérlőkkel:
- Szervomotor programozása PICF877A PIC mikrokontrollerrel:
- Kördiagramm:
- Szimuláció és hardver beállítása:
Ez a 11. oktatóanyagunk a PIC mikrovezérlők megtanulásáról MPLAB és XC8 használatával. Ebben az oktatóanyagban megtanuljuk, hogyan lehet a szervomotort PIC mikrokontrollerrel vezérelni. Ha már dolgozott a szervomotorokkal, kihagyhatja az útmutató első felét, de ha még nem ismeri magát a szervomotort, folytassa az olvasást.
Mostanáig számos alapvető oktatóanyagot ismertettünk, például a PIC-vel villogó LED-et, a PIC-ben lévő időzítőket, az LCD-t összekötő interfészt, a 7-szegmenses interfészt, az ADC-t PIC-vel stb. Ha Ön teljesen kezdő, akkor kérjük, látogassa meg a PIC-oktatóanyagok teljes listáját itt, és kezdje el a tanulást.
Korábbi oktatóanyagunkban megtanultuk, hogyan kell PICM jeleket előállítani a PIC mikrokontroller segítségével, a jeleket a potenciométerről leolvasott érték alapján generáltuk. Ha megértette az összes programot, akkor gratulálunk, hogy már egy Servo motort is kódolt. IGEN, A szervomotorok reagálnak a PWM jelekre (amelyeket itt időzítőkkel hozunk létre). Ebben az útmutatóban megtudhatjuk, miért és hogyan. Szimuláljuk és elkészítjük a hardver beállításait ehhez a projekthez, és a részletes videót a bemutató végén találja meg.
Mi az a szervomotor?
A szervomotor egy olyan típusú működtető (többnyire kör alakú), amely lehetővé teszi a szögvezérlést. Sokféle szervomotor érhető el, de ebben az útmutatóban koncentráljunk az alább látható hobbi szervomotorokra.
A hobbiszervók azért népszerűek, mert ezek a mozgásszabályozás olcsó módszerei. Könnyű megoldást kínálnak a R / C és a robot-hobbi legtöbb igényéhez. Ezenkívül kiküszöböli az ellenőrzési rendszer egyedi tervezésének szükségességét minden alkalmazáshoz.
A hobbi szervomotorok többségének 0-180 ° -os forgóangyala van, de ha érdekli, beszerezhet 360 ° -os szervomotort is. Ez az útmutató 0–180 ° -os szervomotort használ. A hajtómű alapján kétféle szervomotor létezik, az egyik a műanyag fogaskerék szervomotor, a másik pedig a fém fogaskerék szervomotor. A fém fogaskereket olyan helyeken használják, ahol a motor nagyobb kopásnak van kitéve, de csak magas áron jár.
A szervomotorok súlya kg / cm (kilogramm / centiméter), a legtöbb hobbi szervomotor 3 kg / cm vagy 6 kg / cm vagy 12 kg / cm. Ez a kg / cm megmondja, hogy a szervomotor mekkora súlyt tud felemelni egy adott távolságon. Például: A 6 kg / cm-es szervomotornak képesnek kell lennie arra, hogy 6 kg-ot megemelhessen, ha a teher 1 cm-re van felfüggesztve a motor tengelyétől, annál nagyobb a távolság, annál kisebb a teherbírás. Tanulja meg itt a szervomotor alapjait.
A szervomotorok összekapcsolása a mikrovezérlőkkel:
A hobbi szervomotorok és az MCU összekapcsolása nagyon egyszerű. A szervóknál három vezeték jön ki belőlük. Ebből kettőt az ellátáshoz használnak (pozitív és negatív), egyet pedig az MCU-tól küldendő jelhez. Ebben az oktatóanyagban egy MG995 Metal Gear szervomotort fogunk használni, amelyet leggyakrabban RC autók humanoid botjaihoz használnak. Az MG995 képe az alábbiakban látható:
A szervomotor színkódolása eltérhet, ezért ellenőrizze a megfelelő adatlapot.
Minden szervomotor közvetlenül az + 5V-os tápvezetékeivel működik, de vigyáznunk kell a motor által felhasznált árammennyiségre vonatkozóan, ha kettőnél több szervomotort tervez használni, megfelelő szervopajzsot kell kialakítani. Ebben az oktatóanyagban egyszerűen egy szervomotort használunk, hogy megmutassuk, hogyan programozzuk a PIC MCU-t a motor vezérlésére. Ellenőrizze az alábbi linkeket a szervomotor és más mikrovezérlők összekapcsolására:
- Szervomotor kapcsolódik a 8051 mikrovezérlőhöz
- Szervomotor vezérlés Arduino segítségével
- Raspberry Pi szervo motor bemutató
- Szervomotor AVR mikrokontrollerrel
Szervomotor programozása PICF877A PIC mikrokontrollerrel:
Mielőtt elkezdenénk programozni a szervomotort, tudnunk kell, hogy milyen típusú jelet kell küldeni a szervomotor vezérléséhez. Programoznunk kell az MCU-t, hogy PWM jeleket küldjön a szervomotor jelvezetékére. A szervomotor belsejében van egy vezérlő áramkör, amely leolvassa a PWM jel működési ciklusát, és a szervomotor tengelyét a megfelelő helyre pozicionálja, az alábbi képen látható módon
Minden szervomotor különböző PWM frekvenciákon működik (a leggyakoribb frekvencia 50HZ, amelyet ebben az oktatóanyagban használnak), ezért szerezze be motorjának adatlapját, hogy ellenőrizze, melyik PWM perióduson működik a szervomotor.
A Tower pro MG995 PWM jelének részletei az alábbiakban láthatók.
Ebből arra következtethetünk, hogy motorunk 20ms (50Hz) PWM periódussal működik. Tehát a PWM jelünk frekvenciáját 50Hz-re kell állítani. Az előző oktatóanyagunkban beállított PWM frekvenciája 5 KHz volt, ennek használata nem segít itt.
De itt van egy problémánk. A PIC16F877A nem képes alacsony frekvenciájú PWM jeleket létrehozni a CCP modul segítségével. Az adatlap szerint a PWM frekvenciára beállítható lehetséges legalacsonyabb érték 1,2 KHz. Tehát el kell vetnünk a CCP modul használatának gondolatát, és meg kell találnunk a módját, hogy saját PWM jeleket készítsünk.
Ennélfogva ebben az oktatóanyagban az időzítő modult használjuk a PWM jelek előállításához 50Hz frekvenciával, és megváltoztatjuk az üzemi ciklust a szervomotor angyalának vezérlésére. Ha még nem ismeri az időzítőket vagy az ADC-t a PIC-vel, kérjük, térjen vissza erre az oktatóanyagra, mert a legtöbb dolgot kihagyom, mivel ott már áttekintettük őket.
Az időzítő modulunkat inicializáljuk egy 32-es előmérővel, és minden 1-esre túlcsordulunk. Adatlapunk szerint a PWM-nek csak 20 ms periódussal kell rendelkeznie. Tehát a be- és kikapcsolási időnknek pontosan meg kell egyeznie 20 ms-mal.
OPTION_REG = 0b00000100; // Timer0 külső frekvenciával és 32 mint prescaler TMR0 = 251; // Az időérték betöltése 1us delayValue értékre csak 0-256 között kerülhet. TMR0IE = 1; // Időzítő megszakítási bit engedélyezése a GIE = 1 PIE1 regiszterben; // Globális megszakítás engedélyezése PEIE = 1; // Engedélyezze a perifériás megszakítást
Tehát a megszakítási rutinfunkciónkban bekapcsoljuk az RB0 csapot a megadott időre, és kikapcsoljuk a reagálási időre (20ms - on_time). A bekapcsolási idő értékét a Potenciométer és az ADC modul segítségével lehet megadni. A megszakítás az alábbiakban látható.
oid megszakítás timer_isr () {if (TMR0IF == 1) // Az időzítő túlcsordult {TMR0 = 252; / * Töltse be az időzítő értékét, (Megjegyzés: Az időérték 101 100-ból áll, mivel a TImer0-nak két utasításciklusra van szüksége a TMR0 * / TMR0IF = 0; // Az időzítő megszakításának jelzőszámának ++;} if törléséhez +};} if (count> = on_time) { RB0 = 1; // kiegészíti a LED-ek villogásának értékét} if (count> = (on_time + (200-on_time))) {RB0 = 0; count = 0;}}
A while ciklusunk belsejében éppen leolvassuk a potenciométer értékét az ADC modul használatával, és az olvasási érték felhasználásával frissítjük a PWM bekapcsolási idejét.
míg (1) {pot_value = (ADC_Read (4)) * 0,039; on_time = (170-pot_value); }
Így létrehoztunk egy PWM jelet, amelynek periódusa 20 ms, és változó a munkaciklusa, amelyet egy potenciométerrel lehet beállítani. A teljes kódot alább adtuk meg a kód részben.
Most ellenőrizzük a kimenetet proteus szimulációval, és folytassuk a hardverrel.
Kördiagramm:
Ha már találkozott a PWM oktatóanyaggal, akkor az oktatóanyag sematikája megegyezik, kivéve, hogy a LED fény helyett szervomotort adunk hozzá.
Szimuláció és hardver beállítása:
A Proteus szimuláció segítségével ellenőrizhetjük a PWM jelet oszcilloszkóp segítségével, és ellenőrizhetjük a Servo motor forgó angyalát is. A szimuláció néhány pillanatképe látható alább, ahol észrevehető, hogy a szervomotor és a PWM munkaciklus forgó angyala megváltozik a potenciométer alapján. Végül ellenőrizze a teljes PWM forgatásának videóját.
Amint láthatjuk, a szervo forgásangyala megváltozik a potenciométer értéke alapján. Most folytassuk a hardver beállítással.
A hardverbeállításban éppen eltávolítottuk a LED-kártyát, és hozzáadtuk a szervomotort a fenti vázlatok szerint.
A hardver az alábbi képen látható:
Az alábbi videó bemutatja, hogyan reagál a szervomotor a potenciométer különféle pozícióira.
Ez az!! Azt interfésszel szervomotor egy PIC mikrokontroller, most már tudod használni a saját kreativitását, és megtudja, alkalmazások erre. Rengeteg olyan projekt létezik, amelyek szervomotort használnak.