Tartalomjegyzék:

Hajtson léptetőmotort AVR mikroprocesszorral: 8 lépés
Hajtson léptetőmotort AVR mikroprocesszorral: 8 lépés

Videó: Hajtson léptetőmotort AVR mikroprocesszorral: 8 lépés

Videó: Hajtson léptetőmotort AVR mikroprocesszorral: 8 lépés
Videó: 3.1Nm hibrid léptetőmotor SLA7062m motorvezérlővel mikrolépésben T5 bordásszíjat hajt 2024, Július
Anonim
Hajtson léptetőmotort AVR mikroprocesszorral
Hajtson léptetőmotort AVR mikroprocesszorral

Van néhány kidobott léptetőmotor a nyomtatókból/lemezmeghajtókból/stb.

Néhány szondázás ohmmérővel, majd néhány egyszerű illesztőprogram -kód a mikroprocesszoron, és stílusosan lépked.

1. lépés: Ismerje meg a Stepperst

Ismerje meg a lépegetőket
Ismerje meg a lépegetőket
Ismerje meg a lépegetőket
Ismerje meg a lépegetőket

Alapvetően ki kell találnia, hová kerül az összes kis vezeték.

Az első lépés annak megállapítása, hogy unipoláris vagy bipoláris motorról van szó. Vessen egy pillantást Jonesra a Steppers -en, és nézzen mélyebb hátteret, majd Ian Harries webhelyén, ahol egy egyszerű módszert talál egy ismeretlen motor megtalálására. Olvasson egy kicsit, majd csatlakozzon hozzám, és ismertesse ezt a motort, amelyet olcsón kaptam. (Jelenleg 0,99 dollárért kaphatók. Kicsi, viszonylag könnyű, de nincs nagy nyomatékuk. Még nem tudom, mire lesz jó.)

2. lépés: Keresse meg a közös alapot

Találja meg a közös hangot
Találja meg a közös hangot
Találja meg a közös hangot
Találja meg a közös hangot

Tehát öt (vagy négy vagy hat) vezeték van. A motornak két fele lesz, és valószínűleg azt is meg tudja állapítani, ha megnézi, hogy melyik vezeték melyik oldalához tartozik.

Ha csak négy vezetéket néz, akkor szerencséje van - ez egy bipoláris motor. Mindössze annyit kell tennie, hogy kitalálja, melyik két vezetékpár megy össze. Ha unipoláris motorja van, vagy több mint 4 vezeték, akkor ki kell kapcsolnia az ohmmérőjét. Amit keres, az a közös (földelt) vezeték minden fél számára. Meg lehet határozni, hogy melyik a földelt egy bipoláris motorban, mert az ellenállása fele a pólusoknak, mint a pólusoknak. A képen a jegyzeteim találhatók a vezetékek és a vezetékek összekapcsolásáról, és az ellenállás megjegyzéséről (vagy ha egyáltalán csatlakoztatva vannak). Látható, hogy a fehér a talaj az alsó hármas b/c számára, felean ellenáll a vörösnek vagy a kéknek, mint egymásnak. (Ez a motor furcsa, és nincs középső csapja a felső mágnestekercsen. Olyan, mintha félig bipoláris, félig egypólusú lenne. Talán ezt használhatná a piros-fehér-kék tekercs forgásának érzékelésére, amikor a fekete-sárga tekercset hajtják.)

3. lépés: Határozza meg a lépések sorrendjét

Határozza meg a lépések sorrendjét
Határozza meg a lépések sorrendjét

Ezt a motort bipolárisként akartam vezetni, ezért figyelmen kívül hagyom a fehér földvezetéket. Csak négy vezetékem van, ami miatt aggódnom kell.

Érdemes mindenesetre bipolárisként működtetni az egypólusú motorját, mert az az egész tekercset használja mindkét fázisban, ahelyett, hogy az egyes tekercsek két fele között váltakozna. Több tekercs = nagyobb nyomaték. Futtassa az áramot egy páron (vegye figyelembe a választott polaritást), majd futtassa az áramot a másik páron egyszerre. Amikor csatlakoztatja a második párt, figyelje, hogy a motor melyik irányba fordul. Írd le ezt. Most fordítsa meg a polaritást az első választott páron. Ezután kapcsolja be ismét a második párt, és a polaritásuk is megfordul. Jegyezze fel az irányt. Ebből ki kell derítenie a motor bármely irányba történő forgatásának sorrendjét. Az én példámban mindkettő az óramutató járásával ellentétes irányba fordult, így a sorrendet az általam választott módon átlépve a motor CCW lép.

4. lépés: A motor vitele próbaútra

A motor vitele próbaútra
A motor vitele próbaútra

Ha még nem vagy túl erős a mikroprocesszoros programozáshoz, rosszabbul járhatsz, mint a Ghetto Development Kit vagy bármelyik PIC programozó. Csatlakoztassa a vezetékeket közvetlenül a mikroprogramhoz, és égesse el a következő kóddal:

/* Játszik a kis léptetőmotorok meghajtásával. */

/ * Include delay function */ #define F_CPU 1000000UL #include/ * Pin defs for ATTiny2313 *// * Óramutató járásával megegyező irányban */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define SÁRGA _BV (PB3) #define DELAY 200 / * ezredmásodperc a lépések között * / int main (void) {DDRB = 0xff; / * Kimenet engedélyezése az összes B érintkezőn */ PORTB = 0x00; / * Állítsa be mindegyiket 0v */ while (1) {/ * fő hurokra itt */ PORTB = KÉK; _delay_ms (DELAY); PORTB = FEKETE; _delay_ms (DELAY); PORTB = PIROS; _delay_ms (DELAY); PORTB = SÁRGA; _delay_ms (DELAY); }} Mennyire egyszerű ez a kód? Tényleg egyszerű. Mindössze annyit tesz, hogy szép definíciókat készít, hogy a vezetékekre színe alapján utalhassak, nem pedig a pin-nevekre, majd sorra kapcsolja be őket, állítható késéssel. Kezdésként fél másodperces késleltetést választottam a lépések között. Az eredményekért tekintse meg a rövid videót. Ha igazán kedve van a játékhoz, számolja meg a ciklusonkénti lépések számát, hogy megtudja a motor egylépcsős szögfelbontását. (Ó, igen. PS. Könnyen, 3,6 V feszültség nélkül hajt. Lásd az akkumulátort a videóban.)

5. lépés: Fordítsa vissza és előre

Tehát az óramutató járásával megegyező irányban kell működnie. Valami érdekesebb? Egy kis kódtisztítás, és futtathatjuk oda-vissza. Az óramutató járásával megegyező sorrendet egy tömbbe helyezem, hogy a fázisokat egy egyszerű for ciklus segítségével átléphesse. Most felfelé vagy lefelé futtathatja a hurkot az óramutató járásával megegyező vagy az óramutató járásával ellentétes irányba.

int main (void) {const uint8_t delay = 50; const uint8_t az óramutató járásával megegyező irányban = {KÉK, FEKETE, PIROS, SÁRGA}; uint8_t i; DDRB = 0xff; / * Kimenet engedélyezése az összes B érintkezőn */ PORTB = 0x00; / * Állítsa be mindegyiket 0v */ while (1) {/ * fő hurokra itt */ for (i = 0; i <= 3; i ++) {/ * lépjen át a színeken az óramutató járásával megegyező irányba */ PORTB = az óramutató járásával megegyező irányban ; _delay_ms (késleltetés); } for (i = 3; i> = 0; i-) { / * lépjen át a színeken ccw * / PORTB = az óramutató járásával megegyező irányban ; _delay_ms (késleltetés); }}} Nézze meg a heves videót a hátulütésről.

6. lépés: Soha nem lépek félig, mert nem vagyok féllépcsős…

A küldetés szövegét félretéve, a motor félig léptetése ott van, ahol van. Több csúcsáramot, nagyobb pillanatnyi nyomatékot és kétszeres szögfelbontást kap. Fél lépés dióhéjban: Kék, fekete, piros, sárga helyett kék, kék+fekete, fekete, fekete+piros, piros, piros+sárga, sárga, sárga+kék színekkel hajtja a motort. A végeredmény az, hogy az idő felében mindkét mágnest egyszerre kapcsolja be. Abban az időben, amikor mindkét készlet be van kapcsolva, a motor félúton mutat a kettő között, és csökkenti a "lépések" közötti szöget, és a motor egyenletesebben forog. Meg tudod mondani a videóból? Nem vagyok benne biztos … Most a kódnak az a része, amelyik félig lép, így néz ki:

void halfStepping (uint16_t késleltetés, uint8_t irány ) {uint8_t i; for (i = 0; i <= 3; i ++) {PORTB = irány ; / * egytekercses rész */ _delay_ms (késleltetés); PORTB | = irány [i+1]; / * add fél lépésben */ _delay_ms (késleltetés); }} Az első PORTB parancs egyetlen pólust állít pozitívra, a többit pedig negatívra. Aztán vár. Ezután a második PORTB parancs a második pólust (a másik tekercsen) pozitívra állítja, és mindkét tekercset összekapcsolja 1,4 -szeres nyomatékkal (és 2x az árammal). A teljes programlistát az alábbi melléklet tartalmazza. Most két tömb van definiálva (az óramutató járásával megegyező, az óramutató járásával ellentétes irányban), és mindkettőben 5 elem található, amelyek lehetővé teszik az i+1 bejegyzést a halfStepping függvényben.

7. lépés: Adjon hozzá egy motorvezérlőt

Adjon hozzá motorvezérlőt
Adjon hozzá motorvezérlőt
Adjon hozzá motorvezérlőt
Adjon hozzá motorvezérlőt
Adjon hozzá motorvezérlőt
Adjon hozzá motorvezérlőt

Eddig jó.

Az egyetlen probléma az, hogy a motornak nincs annyi nyomatéka, ami annak a ténynek tudható be, hogy a mikroprocesszor csak ~ 50 mA -t bocsát ki. A nyilvánvaló következő lépés az lenne, ha csatlakoztatnánk egy motoros meghajtóhoz, hogy több levet biztosítson neki. De akkor egy kis gondolkodás: csak 5V-al hajtom, és a tekercselési ellenállás ~ 125 ohm. Ez azt jelenti, hogy a motor egyetlen 40 mA -es húzást használ csaponként, és a (marha!) AVR chipnek tökéletesen kell hajtania. Tehát, hogy nagyobb feszültséget kapjon a motor, csatlakoztattam egy SN754410 H-híd chiphez. Az áramkör meglehetősen egyszerű. Az AVR minden csapja bemenetre megy, és a megfelelő kimeneti tüskék a motorhoz. A chipnek 5 V -ra van szüksége a logikai szakaszhoz, és sokkal több feszültséget vehet fel a motor szakaszban. A 11,25 V -os (három 3,6 V -os elem) működtetése némileg segített. Érezhetően nagyobb nyomaték az ujjamnak, de még mindig nem erőmű. Nem rossz egy olyan motornál, amely kisebb, mint a nikkel. És most az áramkör általános célú bipoláris léptetőmotor-meghajtóvá vált. Hozzáadva november 29 -én: Tegnap este 12V -on járatta a motort egy ideig, és elkezdett forrósodni. Nem tudom, hogy rezonanciafrekvenciás probléma volt -e, vagy egyszerűen túl nagy volt a tekercselés. Akárhogy is, legyen óvatos, ha ezzel a kis motorral nagyobb feszültséget vezet.

8. lépés: A vége

Szóval mit tanultam? A léptetőmotor vezetése AVR (és H-híd chip) segítségével meglehetősen egyszerű, még "divatos" féllépcsős módban is.

Még nem tudom, mit kezdjek a kis léptetőmotorokkal. Valami javaslat?

Ajánlott: