Obsah:

Ovládajte krokový motor s mikroprocesorom AVR: 8 krokov
Ovládajte krokový motor s mikroprocesorom AVR: 8 krokov

Video: Ovládajte krokový motor s mikroprocesorom AVR: 8 krokov

Video: Ovládajte krokový motor s mikroprocesorom AVR: 8 krokov
Video: Sterowanie silnika krokowego cz. 13/14 sprawdzanie kontrastu potencjometrem 2024, November
Anonim
Ovládajte krokový motor s mikroprocesorom AVR
Ovládajte krokový motor s mikroprocesorom AVR

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

Zoznámte sa s steppermi
Zoznámte sa s steppermi
Zoznámte sa s steppermi
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č

Nájdite spoločnú reč
Nájdite spoločnú reč
Nájdite spoločnú reč
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

Zistite krokovú objednávku
Zistite krokovú objednávku

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

Odber motora na testovaciu jazdu
Odber 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

Pridajte ovládač motora
Pridajte ovládač motora
Pridajte ovládač motora
Pridajte ovládač motora
Pridajte ovládač motora
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: