A szervomotor vezérlése az Arduino segítségével

A Szervomotor Vezerlese Az Arduino Segitsegevel



Szervo motorok egy olyan típusú elektromos eszköz, amely nagy pontossággal képes megváltoztatni vagy elforgatni egy tárgy helyzetét. Kezdetben az RC repülőgépszárnyak irányítására használták őket, pillanatokkal később eljutottak a robotika, a humanoid robotok és számos automatizálási projekt felé. A léptetőmotorokkal ellentétben ezek mozgása 0o és 180o között korlátozott.

Általában a szervomotoroknak vannak karjai, amelyeket Arduino segítségével lehet vezérelni. A szervomotorok egy vezérlőrendszerből állnak, amely biztosítja Visszacsatolás a motor tengelyének aktuális helyzetéről ez a visszacsatolás nagy pontosságú mozgást tesz lehetővé.

Szervo motor kivezetés

Általában a legtöbb szervomotornak három érintkezője van:







  • Vcc pin (általában piros 5V)
  • GND tű (általában fekete 0 V)
  • Bemeneti jel pin (PWM jel vétele az Arduino-tól)



Szervo motor működése

A szervomotort úgy tudjuk vezérelni, hogy a Vcc tűt 5 V-ra, a GND tűt 0 V-ra csatlakoztatjuk. A sárga színű terminálon a PWM jel, amely a szervomotor forgási szögét szabályozza. A PWM jel szélessége megadja nekünk azt a szöget, amelyben a motor elforgatja a karját.



Ha megnézzük a szervomotorok adatlapját, a következő paramétereket kapjuk:





  • PWM jel időtartama
  • Minimális szélesség PWM-hez
  • Maximális szélesség a PWM-hez

Mindezek a paraméterek előre meghatározottak az Arduino Servo könyvtárban.

Szervomotorok Arduino-val

A szervomotorok rendkívül könnyen vezérelhetők az Arduino segítségével, köszönhetően a Szervo Könyvtár amely segít nekünk a kódunk igény szerinti testreszabásában, és lehetővé teszi, hogy a szervokart a kívánt szögben elforgatjuk.



Mindhárom fent említett paraméter rögzítve van a Szervo könyvtárban. Ezekkel a paraméterekkel a következő módon tudjuk szabályozni a szervomotor szögét:

  • Ha a PWM jelszélesség = WIDTH_MAX, a szervó 180o-ra elfordul
  • Ha a PWM jelszélesség = WIDTH_MIIN, a szervo 0o-ra elfordul
  • Ha a PWM jelszélesség között van WIDTH_MAX és WIDTH_MIN , a szervomotor 0o és 180o között fog forogni

A kívánt PWM jelet generálhatunk néhány Arduino tűn. PWM jelet ad a szervomotor bemeneti jelének érintkezője. A szervo maradék két érintkezőjének csatlakoztatása az Arduino 5V-hoz és GND-hez.

A szervomotor vezérlése az Arduino segítségével

Itt elmagyarázom, hogyan csatlakoztathatjuk és programozhatjuk a szervomotorunkat az Arduino segítségével. Minden, amire szükséged van:

  • Arduino UNO
  • USB B kábel
  • Szervómotor
  • Jumper vezetékek

Hogyan programozzuk a szervót Arduino-val

Íme néhány egyszerű lépés:

1. lépés: Tartalmazza az előre meghatározott szervo könyvtárat:

# tartalmazza < Szervo.h >

2. lépés: Szervoobjektum létrehozása:

Szervo myservo;

Tipp: Ha egynél több szervomotort vezérel, több szervoobjektumot kell létrehoznia:

Szervo myservo1;
Szervo myservo2;

3. lépés: Állítsa be a vezérlőcsapot (9) az Arduino Uno-n, amely PWM jelet küld a szervo bemeneti jelportjához:

myservo.csatolni ( 9 ) ;

4. lépés: Forgassa el a szervomotor szögét a kívánt értékre, például 90o-kal:

myservo.write ( pozíció ) ;

Arduino kód

Szervomotor példaprogram megnyitása innen Fájl>Példa>Szervo>Sweep , megnyílik egy új ablak, amely megmutatja a szervovázlatunkat:

#include

Szervo myservo; // szervo objektum jön létre számára szervomotor vezérlése
int poz = 0 ; // a szervo pozíció tárolására egy új változó jön létre
üres beállítás ( ) {
myservo.csatolni ( 9 ) ; // ez az akarat készlet Arduino tű 9 számára PWM kimenet
}
üres hurok ( ) {
számára ( poz = 0 ; poz = 0 ; poz -= 1 ) { // indul 180 nak nek 0 fokon
myservo.write ( pozíció ) ; // mondd a szervónak, hogy menjen „poz” pozícióba
késleltetés ( 5 ) ; // vár számára 5 ms, így a szervo elérheti a pozíciót
}
}

A program összeállítása és feltöltése után a szervomotor lassan forogni kezd a kiindulási helyzetből 0 fokról 180 fokra, lépésenként egy-egy fokkal. Amikor a motor befejezte a 180 fokos forgást, a kiindulási pontjával ellentétes irányba indul el, azaz 0 fokban.

Sematika

A szervomotor vezérlése potenciométerrel

A szervomotor helyzetét kézzel is szabályozhatjuk. Ehhez szükségünk van a Potenciométer . A potenciométernek három tűje van. Csatlakoztassa a két külső érintkezőt az Arduino 5 V-os Vcc-hez és GND-hez, a középsőt pedig az Arduino kártya A0 érintkezőjéhez.

Hogyan programozzuk a szervót potenciométerrel

A potenciométer vázlatának nagy része megegyezik az előző példával. Az egyetlen különbség egy új változó val és alcsap a kód setup és loop része előtt van definiálva.

int potpin = A0;
int val;

A hurokszakaszban az A0 analóg tűt a funkcióval rendelkező potenciométer értékeinek kiolvasására használják analógRead() . Az Arduino kártyák 10 bites ADC-t (analóg-digitális konvertert) tartalmaznak, amely 0 és 1023 közötti értékeket ad, attól függően, hogy a potenciométer milyen pozícióban van:

val = analóg Olvasás ( alcsap ) ;

Végül is használtuk térkép() A funkció segítségével újra leképezi a számokat 0 és 1023 között a szervó szögének megfelelően, mivel tudjuk, hogy a szervomotorok csak 00 és 1800 között tudnak forogni.

val = térkép ( val, 0 , 1023 , 0 , 180 ) ;

Arduino kód

Nyissa meg a gombvázlatot az Arduino IDE-ben, lépjen ide Fájlok>Példák>Szervo>Konb . Megnyílik egy új ablak, amely megmutatja nekünk a szervó gomb vázlatát:

#include
Szervo myservo; // Szervo objektum név myservo létrehozása
int potpin = A0; // meghatározó analóg tű számára potenciométer
int val; // változó melyik akarat olvas analóg tűértékek számára potenciométer

üres beállítás ( ) {
myservo.csatolni ( 9 ) ; // meghatározott tű 9 számára A szervó PWM bemeneti jele Arduino-n
}
üres hurok ( ) {
val = analóg Olvasás ( alcsap ) ; // kiolvassa az értéket a potenciométerről ( közötti érték 0 és 1023 )
val = térkép ( val, 0 , 1023 , 0 , 180 ) ; // skálázza a szervóval használandó értéket ( közötti érték 0 és 180 )
myservo.write ( val ) ; // beállítja a szervo pozíciót skálázott értékkel
késleltetés ( tizenöt ) ; // vár számára a szervót, hogy pozícióba kerüljön
}

A fenti kód segít a szervomotor tengelyének potenciométerrel történő vezérlésében, a tengely 0 és 180 fok között forog. A sebességet a szervó irányával együtt is fenntarthatjuk vele.

Kördiagramm

Hány szervomotort csatlakoztathatok az Arduino-hoz?

Az Arduino UNO által kezelhető szervomotorok maximális száma legfeljebb 12 Arduino szervokönyvtárral, és legfeljebb 48 szervó csatlakoztatható olyan táblákkal, mint a Mega.

Tipp: Közvetlenül működtethetjük a szervót Arduino árammal, de ne feledjük, ha a szervomotorok többet fogyasztanak, mint 500mA akkor az Arduino kártya automatikusan visszaállhat és elveszítheti az áramellátást. Javasoljuk, hogy mindig külön tápegységet használjon a szervomotorokhoz.

Következtetés

Ebben az oktatóanyagban az Arduino szervomotorok vezérlési mechanizmusát ismertettük. Kitértünk a szervo helyzetének és sebességének potenciométerrel történő szabályozásának alapjaira. Most már van fogalma a szervóról, és a robotikájának lehetőségei, az RC-projektek és a szervót használó automatizálás végtelenek.