Obsah:
- Krok 1: Zoznámte sa s steppermi
- Krok 2: Nájdite spoločnú reč
- Krok 3: Zistite krokové poradie
- Krok 4: Vyberanie motora na testovaciu jazdu
- Krok 5: Otočte ho dopredu a dozadu
- Krok 6: Nikdy polovičný krok, pretože nie som polovičný krok …
- Krok 7: Pridajte ovládač motora
- Krok 8: Koniec
Video: Ovládajte krokový motor s mikroprocesorom AVR: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Ležia vám nejaké vyčistené krokové motory z tlačiarní/diskových jednotiek/atď.?
Trochu sondovanie ohmetrom, potom jednoduchý kód ovládača na vašom mikroprocesore a budete krokovať štýlovo.
Krok 1: Zoznámte sa s steppermi
V zásade budete musieť zistiť, kam smerujú všetky malé drôty.
Prvým krokom je zistiť, či ide o unipolárny alebo bipolárny motor. Pozrite sa na Jones na stepperoch, kde nájdete hlbšie pozadie, a potom na webe Iana Harriesa, kde nájdete jednoduchú metódu na zistenie neznámeho motora. Trochu si to prečítajte a potom sa so mnou pridajte k tomuto motoru, ktorý som lacno zohnal. (Momentálne sú v predaji za 0,99 dolára. Sú malé, relatívne ľahké, ale nemajú veľký krútiaci moment. Zatiaľ neviem, na čo to bude dobré.)
Krok 2: Nájdite spoločnú reč
Takže máte päť (alebo štyri alebo šesť) drôtov. Váš motor bude mať dve polovice a pravdepodobne to dokonca dokážete rozoznať tak, že sa pozriete, na ktorú stranu každý vodič patrí.
Ak sa pozeráte iba na štyri vodiče, máte šťastie - je to bipolárny motor. Jediné, čo musíte urobiť, je zistiť, ktoré dva páry drôtov idú dohromady. Ak máte unipolárny motor alebo viac ako 4 vodiče, budete musieť vypnúť ohmeter. To, čo hľadáte, je spoločný (uzemňovací) drôt pre každú polovicu. Môžete zistiť, ktorý je uzemnený v bipolárnom motore, pretože má polovičný odpor voči jednému z pólov než póly voči sebe. Na obrázku sú moje poznámky zo zapojenia vodičov na vodiče a zaznamenania odporu (alebo či sú vôbec zapojené). Môžete vidieť, že biela je základňou pre spodnú trojicu b/c, ktorá má voči červenej alebo modrej polovičnú odolnosť, akú majú navzájom. (Tento motor je zvláštny a nemá stredový kohútik na hornej magnetickej cievke. Je to ako keby bol napoly bipolárny, napoly unipolárny. Možno by ste to mohli použiť na snímanie rotácie v červeno-bielo-modrej cievke, keď je čierno-žltá cievka je poháňaná.)
Krok 3: Zistite krokové poradie
Chcel som riadiť tento motor ako bipolárny, takže biely uzemňovací vodič ignorujem. Mám len štyri drôty, s ktorými si musím robiť starosti.
Možno budete chcieť spustiť svoj unipolárny motor ako bipolárny, pretože používa celú cievku v oboch fázach namiesto striedania dvoch polovíc každej cievky. Viac cievok = väčší krútiaci moment. Veďte prúd cez dvojicu (pričom si všímajte polaritu, ktorú ste si vybrali) a potom spustite prúd cez ďalší pár súčasne. Keď zapojíte druhý pár, sledujte, akým spôsobom sa motor otáča. Napíšte to. Teraz otočte polaritu na prvom páre, ktorý ste si vybrali. Potom znova zapojte druhý pár s opačnou polaritou. Všimnite si smer. Z toho by ste mali byť schopní určiť postupnosť otáčania motora v oboch smeroch. V mojom prípade sa obidva skončili otáčaním proti smeru hodinových ručičiek, takže pri postupe sekvenciou rovnakým spôsobom, aký som zvolil, sa bude zvyšovať CCW motora.
Krok 4: Vyberanie motora na testovaciu jazdu
Ak ešte nie ste pripravení na programovanie mikroprocesorom, môžete to urobiť horšie ako Ghetto Development Kit alebo ktorýkoľvek z rôznych programátorov PIC. Pripojte káble priamo k vášmu mikroprocesoru a spálte ho nasledujúcim kódom:
/* Hráme sa s poháňaním malých krokových motorov. */
/ * Zahrnúť funkciu oneskorenia */ #define F_CPU 1000000UL #include/ * Pin defs for ATTiny2313 *// * Poradie v smere hodinových ručičiek */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define ŽLTÉ _BV (PB3) #definujte ZPOŽDENIE 200 / * milisekúnd medzi krokmi * / int hlavné (neplatné) {DDRB = 0xff; / * Povoliť výstup na všetkých pinoch B */ PORTB = 0x00; / * Nastavte všetky na 0v */ while (1) {/ * hlavná slučka tu */ PORTB = MODRÁ; _delay_ms (ZPOŽDENIE); PORTB = ČIERNE; _delay_ms (ZPOŽDENIE); PORTB = ČERVENÁ; _delay_ms (ZPOŽDENIE); PORTB = ŽLTÉ; _delay_ms (ZPOŽDENIE); }} Ako jednoduchý je ten kód? Naozaj jednoduché. Všetko, čo robí, je urobiť niekoľko pekných definícií, aby som mohol odkazovať na vodiče podľa farby, a nie podľa ich názvov pinov, a potom ich prepína v poradí s nastaviteľným oneskorením medzi nimi. Na začiatok som vybral polsekundové oneskorenie medzi krokmi. Výsledky nájdete v krátkom videu. Ak ste naozaj vo svojej hre, spočítajte počet krokov za cyklus, aby ste zistili uhlové rozlíšenie jedného kroku motora. (Ach áno. PS. Jazdí bez zaťaženia pri 3,6 V ľahko. Pozrite si batériu vo videu.)
Krok 5: Otočte ho dopredu a dozadu
Takže to máte v smere hodinových ručičiek. Ešte niečo zaujímavejšie? Malé vyčistenie kódu a môžeme ho spustiť tam a späť. Hodinovú sekvenciu som vložil do poľa, aby ste mohli prechádzať fázami pomocou jednoduchej cyklu for. Teraz môžete spustiť slučku hore alebo dole a ísť v smere alebo proti smeru hodinových ručičiek.
int main (void) {const uint8_t delay = 50; konšt uint8_t v smere hodinových ručičiek = {MODRÁ, ČIERNA, ČERVENÁ, ŽLTÁ}; uint8_t i; DDRB = 0xff; / * Povoliť výstup na všetkých pinoch B */ PORTB = 0x00; / * Všetky ich nastavte na 0v */ while (1) {/ * tu hlavná slučka */ for (i = 0; i <= 3; i ++) {/ * prechádzajte farbami v smere hodinových ručičiek */ PORTB = v smere hodinových ručičiek ; _delay_ms (oneskorenie); } for (i = 3; i> = 0; i-) { / * krok cez farby ccw * / PORTB = v smere hodinových ručičiek ; _delay_ms (oneskorenie); }}} Pozrite sa na originálne video, kde nájdete všetko, čo potrebujete vedieť.
Krok 6: Nikdy polovičný krok, pretože nie som polovičný krok …
Texty úloh bokom, napoly šliapnutie motora tam, kde je. Získate viac špičkového prúdu, okamžitejší krútiaci moment a dvojnásobné uhlové rozlíšenie. Polovičný krok v skratke: Namiesto modrej, čiernej, červenej, žltej farby poháňate motor modrou, modrou+čiernou, čiernou, čiernou+červenou, červenou, červenou+žltou, žltou, žltou+modrou. Výsledkom je, že polovicu času zapojíte oba magnety naraz. A keď sú obe sady zapojené, motor ukazuje medzi nimi, zmenší uhol medzi „krokmi“a motor sa bude otáčať plynulejšie. Poznáte to z videa? Nie som si istý … Teraz časť kódu, ktorá robí polovičné krokovanie, vyzerá takto:
neplatné halfStepping (uint16_t oneskorenie, uint8_t smer ) {uint8_t i; pre (i = 0; i <= 3; i ++) {PORTB = smer ; / * časť s jednou cievkou */ _delay_ms (oneskorenie); PORTB | = smer [i+1]; / * pridať v pol kroku */ _delay_ms (oneskorenie); }} Prvý príkaz PORTB nastaví jeden pól na kladný a zvyšok na záporný. Potom to čaká. Potom druhý príkaz PORTB nastaví druhý pól (na druhom vinutí) na kladný, pričom zapojí obe vinutia na 1,4 -násobok krútiaceho momentu (a 2x prúd). Kompletný zoznam programov je priložený nižšie. Teraz sú definované dve polia (v smere hodinových ručičiek, proti smeru hodinových ručičiek) a obe majú po 5 prvkov, ktoré umožňujú vstup i+1 do funkcie halfStepping.
Krok 7: Pridajte ovládač motora
Zatiaľ je všetko dobré.
Jediným problémom je, že sa zdá, že motor nemá taký veľký krútiaci moment, čo môže byť spôsobené tým, že mikroprocesor vydá iba ~ 50 mA na kolík. Zjavným ďalším krokom by bolo pripojiť ho k vodičovi motora, aby mu dodal viac šťavy. Ale potom trochu na zamyslenie: Jazdím iba s 5 V a odpor vinutia cievky je ~ 125 ohmov. To znamená, že motor má iba 40 mA na kolík a mal by byť dobre poháňaný (svalnatým!) Čipom AVR. Aby som dostal k motoru napätie, pripojil som ho k čipu SN754410 H-bridge. Obvod je veľmi jednoduchý. Každý kolík z AVR ide na vstup a zodpovedajúce výstupné piny idú do motora. Čip potrebuje 5v pre logickú sekciu a v motorovej časti môže zniesť oveľa viac napätia. Prevádzka na 11,25v (tri 3,6v batérie) trochu pomohla. Na prst prstom znateľne viac krútiaceho momentu, ale stále to nie je žiadna elektráreň. Nie je to však zlé pre motor, ktorý je menší ako nikel. A teraz sa obvod stal univerzálnym bipolárnym krokovým motorom. Pridané 29. novembra: Včera večer chvíľu bežal motor na 12 V a začalo byť horúco. Nie som si istý, či to bol problém s rezonančnou frekvenciou alebo či to bolo jednoducho príliš veľa prúdu na vinutia. V každom prípade buďte trochu opatrní, ak idete s týmto malým motorom s väčším napätím.
Krok 8: Koniec
Čo som sa teda naučil? Riadenie krokového motora s AVR (a čipom H-mostíka) je veľmi jednoduché, dokonca aj vo „fantastickom“polovičnom kroku.
Zatiaľ si nie som istý, čo budem robiť s malými krokovými motormi. Nejaké návrhy?
Odporúča:
Ako používať krokový motor 28BYJ-48 s 3 tlačidlami: 5 krokov
Ako používať krokový motor 28BYJ-48 s 3 tlačidlami: Chcete ovládať krokový motor pomocou tlačidiel? To môže fungovať v smere hodinových ručičiek, proti smeru hodinových ručičiek a potom zastaviť? Potom je toto video pre vás
Krokový motor riadený krokovým motorom bez mikrokontroléra!: 6 krokov
Krokový motor riadený krokovým motorom bez mikrokontroléra !: V tomto rýchlom návode vyrobíme jednoduchý ovládač krokového motora pomocou krokového motora. Tento projekt nevyžaduje žiadne zložité obvody ani mikrokontrolér. Takže bez ďalších okolkov začnime
Krokový motor riadený krokovým motorom bez mikrokontroléra (V2): 9 krokov (s obrázkami)
Krokový motor riadený krokovým motorom bez mikrokontroléra (V2): V jednom z mojich predchádzajúcich návodov som vám ukázal, ako ovládať krokový motor pomocou krokového motora bez mikrokontroléra. Bol to rýchly a zábavný projekt, ale priniesol dva problémy, ktoré budú v tomto návode vyriešené. Takže vtip
Použite krokový motor ako rotačný kodér: 9 krokov (s obrázkami)
Použite krokový motor ako rotačný kodér: Rotačné snímače sú skvelé na použitie v projektoch mikrokontrolérov ako vstupné zariadenie, ale ich výkon nie je veľmi plynulý a uspokojivý. Keď som mal okolo seba veľa náhradných krokových motorov, rozhodol som sa im dať účel. Ak teda máte nejaký stepper
Krokový motor riadený krokovým motorom - Krokový motor ako rotačný kodér: 11 krokov (s obrázkami)
Krokový motor ovládaný krokovým motorom | Krokový motor ako rotačný kodér: Máte okolo seba pár krokových motorov a chcete niečo urobiť? V tomto návode použijeme krokový motor ako rotačný snímač na ovládanie polohy iného krokového motora pomocou mikrokontroléra Arduino. Takže bez ďalších okolkov poďme na