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.

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.

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.

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

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.

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ó.

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.

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

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.

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

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.

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 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.

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.

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.

Í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
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

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 electro-hu.tomathouse.com oldalon
: