kategória: Mikrovezérlő áramkörök
Megtekintések száma: 19709
Megjegyzések a cikkhez: 0

Motor és szervo vezérlés Arduino-val

 

Az automatizálási rendszerek egyszerű kialakításakor gyakran nem csak az érzékelők adatait kell leolvasni, hanem a mozgásmechanizmusokat is be kell állítani. Ehhez különféle villamos motorokat használnak. A legegyszerűbb és legnépszerűbb lehetőség az egyenáramú motor. Megszerezte a szerelmesek szerelmét az akadálymentességével, a sebesség egyszerű beállításával. Ha a feladat bármely mechanizmus mozgatása egy adott szögbe vagy távolságba, akkor kényelmes egy szervómeghajtó vagy egy léptetőmotor használata.

Ebben a cikkben a szervókat és a kis egyenáramú motorokat vizsgáljuk meg, összekapcsolva őket egy Arduino táblával és beállítva a DCT-t.

Motor és szervo vezérlés Arduino-val

DC motor

A leggyakoribb villamos motor, amelyet hordozható eszközökben, játékokban, rádióvezérelt modellekben és más eszközökben használnak. Az állandó mágneseket az állórészen lévő kis villanymotoron, a tekercset pedig a forgórészen rögzítik.

DC motor

A tekercshez a kefe-egységen keresztül áramot vezetnek. A kefék grafitból készülnek, néha réz csúszó érintkezőket találnak. A kefék a rotor egyik végén található lamellák felett csúsznak. Ha nem mész bele a részletekbe, akkor a forgási sebessége az armatúra tekercselő áramától függ.

Kollektor motorhorgony

Nagyméretű egyenáramú motoroknál az állórészen gerjesztési tekercs van csatlakoztatva, és a rotor tekercséhez (a kefeegység révén) bizonyos módon (szekvenciális, párhuzamos vagy vegyes gerjesztés) kapcsolódik. Így elérjük a kívánt nyomatékot és a fordulatok számát.


Sebességszabályozás

Elektromos DC motor

Ha a hálózathoz csatlakozik, az egyenáramú motor névleges fordulatszámon kezd forogni. A sebesség csökkentése érdekében korlátozni kell az áramot. Ehhez bevezetik a ballaszt ellenállást, de ez csökkenti a telepítés egészének hatékonyságát, és felesleges hőforrás jelenik meg. A feszültség és az áram hatékonyabb szabályozására másik módszert alkalmaznak - PWM vezérlés.

PWM vezérlés

Az impulzusszélességű modulált jel (feszültség) vezérlésének egyik módja a kívánt feszültségérték előállítása az impulzusszélesség megváltoztatásával, az időszak állandó időtartamával (frekvencia).

Vagyis az időszak két részre oszlik:

1. Impulzus idő.

2. Szüneteltesse az időt.

Az impulzusidő és az időszak teljes időtartamának arányát a ciklusnak nevezzük:

Ks = ti / tper

a viszonyt "munkaciklusnak" nevezzük:

D = 1 / KZ = tper / t és

A PWM vezérlő működési módjának leírására mindkét fogalmat használják: mind a működési ciklust, mind a működési ciklust.

A motor áramfogyasztása a teljesítményétől függ. A fordulatok száma, amint mondták, az áramtól függ. Az áram beállítható a tekercsekhez alkalmazott feszültség mennyiségének megváltoztatásával. Valójában, ha olyan feszültség hajtja meg, amely meghaladja a motoros útlevél szerinti névleges értéket, akkor a fordulatszáma meghaladja a névleges sebességet is. Az ilyen üzemmódok azonban veszélyesek a motorra, mivel a tekercsekben nagyobb áram folyik, ami megnöveli a melegítésüket.

Ha a motor rövidtávú impulzusok vagy ismételt-rövid távú üzemmód károsodása minimális, akkor hosszabb üzem közben megnövekedett feszültséggel és sebességgel kiégni fog, vagy csapágyainak felmelegszik és ék lesz, majd a tekercsek kiégnek, ha az áramellátást nem kapcsolják le.

Ha a bemeneti feszültség túl alacsony, akkor a kis motornak egyszerűen nincs elegendő energiája a mozgatáshoz. Ezért kísérletileg meg kell határozni egy adott motor normál sebességét és feszültségét, amely nem haladja meg a névleges értéket.


Csatlakozunk az arduino-hoz

Kicsi motorom volt, úgy tűnik, egy kazettalejátszóból, ami azt jelenti, hogy annak névleges feszültsége 5 V alatt lesz, akkor az arduino kimeneti teljesítménye elegendő lesz. A tápegységet az 5 V-os érintkezőből fogom táplálni, azaz a táblán található lineáris stabilizátor kimenetéből. Az alább látható séma szerint.

Nem ismerem ennek a motornak az áramerősségét, ezért csatlakoztattam a tápfeszültséghez, és beépítettem egy mezőhatású tranzisztort a motor és a tápcsap közé, amelynek a kapujára a PWM kimenet jelét adták, a rendelkezésre álló elemek közül bármelyik használható.

Arduino DC motor csatlakoztatási rajz

A sebesség beállításához egy változó ellenállást adtam az áramkörhöz, csatlakoztatva az A0 analóg bemenethez. A gyors csatlakozáshoz egy forrasztás nélküli kenyérlemezt használtam, amelyet kenyérlemeznek is hívnak.

Telepítettem egy áramkorlátozó ellenállást a tranzisztor vezetékébe (a kapu töltőáramának csökkentése érdekében ez meghosszabbítja a portot az égéstől és a mikrokontroller tápellátását a süllyedéstől és a fagytól) 240 Ohmmal, és 12 kOhm-os ellenállással a földre húztam, ezt meg kell tenni a stabilitás növelése érdekében. a redőny tartály gyorsabban működött és ürült ki.

A terepi tranzisztorok részletei egy weboldalunkon található cikkben. Nagy teljesítményű, közönséges és nem túl drága mosfet-et használtam n-csatornás és beépített IRF840 fordított diódával.

Az áramkör végrehajtó és meghatározó része

A következőképpen néz ki a laboratóriumi állványom:

DC motor és arduino

A PWM vezérlési funkció akkor hívódik meg, amikor a megfelelő kimenetre (3, 5, 6, 9, 10, 11) 0 és 255 közötti értéket ír az AnalogWrite paranccsal (tű, érték). Munkája logikáját az alábbi grafikonok ábrázolják.

PWM vezérlő funkció

Egy ilyen jel a tranzisztor kapujára kerül:

Ilyen jelet adunk a tranzisztor kapujának

A szégyen szépségére vonatkozó programkód rövid és egyszerű, ezeket a funkciókat részletesen leírtuk az arduinóról szóló korábbi cikkekben.

int sensorPin = A0; // bemenet a potenciométerről

int motorPin = 3; // PWM kimenet a kamera kapujához

érvénytelen beállítás () {

pinMode (motorPin, OUTPUT);

}

void loop () {

analogWrite (motorPin, térkép (analogRead (sensorPin), 0, 1023, 0, 256));

}

Az analogWrite függvényben a PWM kimenethez értéket rendelek a map parancs segítségével, amelynek használata lehetővé teszi több kódsor és egy változó eltávolítását.


Ez egy működési séma, és kiválóan alkalmas a folyamatok megfigyelésére, amikor a terhelési teljesítményt, a LED-ek fényerejét és a motorok fordulatszámát szabályozzák. Csak a motor helyett a kívánt terhelést kell csatlakoztatnia. Ugyanakkor az 5 V helyett bármilyen feszültség alkalmazható a terhelésre, például 12 V, ne felejtsük el csatlakoztatni a mínusz tápegységet az érintkezőhöz, például 12 V, ne felejtsük el csatlakoztatni a mínusz tápegységet a mikrovezérlő táblán lévő GND tüskéhez.

Arduino-ban a PWM frekvencia, amikor az analógírás funkcióval hívja, csak 400 Hz, a minimális feszültségértékeknél a motor tekercsei közül a megfelelő frekvencia hum-ját hallottuk.

Arduino és szervo

szervo-

Egy olyan motor, amelyet előre meghatározott helyzetben lehet, és amikor külső tényezőknek vannak kitéve, például egy tengely kényszerített alakváltozása, változatlan állapotban tartja a helyzetét - szervóhajtásnak nevezzük. Általában véve a meghatározás kicsit másképp hangzik:

A szervo negatív visszacsatolású motor.

Általában három vezeték jön ki a szervómeghajtóból:

  • Plusz erő.

  • Kevesebb energia.

  • Vezérlőjel.

A szervohajtás a következőkből áll:

  • DC motor (vagy kefe nélküli motor);

  • Kezelési díjak;

  • Pozíció-adó (kódoló a szervosztákhoz, 360 ° forgásszöggel vagy potenciométer a szervoszokhoz, 180 ° forgásszöggel);

  • Redukáló sebességváltó (csökkenti a motor fordulatszámát és növeli a hajtótengely nyomatékát).

A vezérlőegység összehasonlítja a beépített helyzetérzékelő jelet és a vezérlőhuzalon átmenő jelet, ha azok különböznek, akkor egy olyan szögben forog, amelyben a jel közötti különbség kiegyenlítődik.

A szervo működésének elve

A szervosz fő jellemzői:

  • Forgási sebesség (az az idő, amelynek során a tengely 60 ° -kal elforog);

  • Nyomaték (kg / cm, vagyis hogy a motor hány kilogrammot képes ellenállni a karon 1 cm-re a tengelytől);

  • Tápfeszültség;

  • Jelenlegi fogyasztás;

  • A vezérlő módszerrel (analóg vagy digitális, nincs szignifikáns különbség, de a digitális gyorsabb és stabilabb).

A jelzési idő általában 20 ms, és a vezérlő impulzus időtartama:

  • 544 μs - megfelel 0 ° -nak;

  • 2400 μs - megfelel 180 ° szögnek.

Ritka esetekben az impulzus hossza eltérhet, például 760 és 1520 μs, ez az információ a hajtás műszaki dokumentációjában tisztázható. Az egyik legnépszerűbb hobbi-szervó a Tower Pro SG90 és hasonló modellek.Olcsó - körülbelül 4 dollár.

Sevroprivod for arduino

1,8 kg / cm-rel tartja a tengelyt, és ehhez összeszerelő csavarokat és karokat tartalmaz, amelyek tengelyhez tartóssal vannak ellátva. Valójában ez a csecsemő nagyon erős, és nagyon problematikus egy ujjal megállítani - maga a meghajtó ki fog esni az ujjaktól - ilyen az ereje.


Szervo vezérlés és Arduino

Mint már említettük, a vezérlést az impulzus időtartamának megváltoztatásával hajtjuk végre, de ne keverjük össze ezt a módszert a PWM-vel (PWM), annak helyes neve PDM (Pulse Duration Modulation). A jelfrekvencia kis eltérései (20 ms - időtartam, 50 Hz frekvencia) nem játszanak különös szerepet. De ne térjen el 10 Hz-nél nagyobb frekvenciától, mert a motor botránosan futhat vagy kiéghet.

Szervo vezérlés és Arduino

A csatlakozás az arduino-hoz meglehetősen egyszerű, a meghajtót egy 5 V-os érintkezőről is táplálhatja, de ez nem kívánatos. A helyzet az, hogy elején egy kis áram ugrik, ez áramkimaradást okozhat és Hamis mikrovezérlő kimenetek. Bár 1 kicsi meghajtó (SG90 típus) lehetséges, de nem több.

Az ilyen szervók arduino-val történő vezérléséhez be kell építenie az IDE-be a Szervó könyvtárat, egy kis parancskészlettel rendelkezik:

  • csatol () - adj hozzá egy változót a tűhöz. Példa: meghajtó neve.attach (9) - csatlakoztasson egy szervót a 9. érintkezőhöz. Ha a meghajtónak nem szabványos hosszúságú vezérlőimpulzusokra van szüksége (544 és 2400 μs), akkor azokat a vessző után vesszővel elválaszthatja, például: servo.attach (tű, min. Szög (μs), maximális szög az ISS-ben);

  • write () - a tengely forgásszögét adja meg fokokban;

  • writeMicroseconds () - beállítja az impulzushosszon keresztüli szöget mikrosekundumokban;

  • read () - meghatározza a tengely jelenlegi helyzetét;

  • csatolt () - Ellenőrzi, hogy egy csap van-e beállítva csatlakoztatott szervóval;

  • irrch () - a csatolási parancs megszakítása.

Ez a könyvtár lehetővé teszi az UNO, a Nano és a hasonló táblák 12 szervójának vezérlését (mega368 és 168), miközben a PWM használatának képessége a 9-es és 10-es érintkezőn eltűnik. Ha rendelkezik MEGA-val, akkor vezérelheti a 48. kiszolgálót, de a 11-es és 12-es érintkezőn lévő PWM eltűnik, ha legfeljebb 12 szervoszt használ, akkor a PWM teljes mértékben működőképes marad az összes kapcsolaton.

Ha csatlakoztatta ezt a könyvtárat, akkor nem fog működni 433 MHz-es vevőkkel / adóval. Van egy Servo2 könyvtár ehhez, amely egyébként azonos.

Servo2 könyvtár

Íme egy példa arra a kódra, amelyet szervo meghajtóval végzett kísérletekhez használtam, ez a standard példákban található:

#include // csatlakoztassa a könyvtárat

Servo myservo; // a myservo szervo deklarált változóneve

int potpin = 0; // tű a beállító potenciométer csatlakoztatásához

int val; // változó a potenciométer jelének leolvasásának eredményeinek mentéséhez

érvénytelen beállítás () {

myservo.attach (9); // állítson be 9 tűt a szervo vezérlőkimenetéül

}

void loop () {

val = analogRead (edény); // a potenciométer leolvasásának eredménye, transz-ban elmenve. val, ezek 0 és 1023 közötti tartományban vannak

val = térkép (val, 0, 1023, 0, 180); // fordítsa le a mérési tartományt az 0-1023 analóg bemenetről

// a 0-180 fokos szervo feladatkörében

myservo.write (val); // adja át az átalakítást jel a pot-ra-ból a vezérléshez szervo bemenet

késleltetés (15); // késleltetés szükséges a rendszer stabil működéséhez

 

Összekapcsoljuk a szervót Arduino-val

következtetés

Az arduino-val párosított legegyszerűbb villanymotorok használata meglehetősen egyszerű feladat, míg ezen anyag elsajátítása kibővíti képességeit az automatizálás és a robotika területén. Az ilyen motorokból állnak a legegyszerűbb robotok vagy rádióvezérelt autós modellek, a szervók pedig a kerekek forgásának vezérlésére szolgálnak.

A vizsgált példákban egy potenciométert használtunk a forgási szög vagy a forgási sebesség beállításához, ehelyett bármilyen más jelforrás felhasználható, például forgás vagy a sebesség változása az érzékelőktől kapott információ eredményeként fordulhat elő.

Példa a szervók alternatív energiában történő felhasználására: a napfény beesésének szögének nyomon követése és a napelemek helyzetének beállítása az erőművekben.

Egy ilyen algoritmus megvalósításához több felhasználható tek, vagy más optoelektronikai eszközök a beeső fény mennyiségének mérésére és az olvasásuk függvényében a napelem forgásszögének beállítására.

Lásd még az i.electricianexp.com oldalon:

  • Hogyan működik a szervo?
  • Arduino és léptetőmotor: alapok, sémák, csatlakozás és vezérlés
  • Jellemzi az eszközök és Arduino csatlakoztatását
  • Hogyan lehet megkülönböztetni az indukciós motort az egyenáramú motortól?
  • Hogyan lehet csatlakoztatni az inkrementális kódolót az Arduino-hoz

  •