Obsah:
- Krok 1: Seznamte se se steppery
- Krok 2: Najděte společnou řeč
- Krok 3: Zjistěte krokové pořadí
- Krok 4: Převzetí motoru na testovací jízdu
- Krok 5: Swing It Back and Forth
- Krok 6: Nikdy nepůlkrok, protože nejsem napůl krok …
- Krok 7: Přidejte ovladač motoru
- Krok 8: Konec
Video: Řiďte krokový motor s mikroprocesorem AVR: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Leží vám nějaké uklizené krokové motory z tiskáren/diskových jednotek/atd.?
Několik sond s ohmetrem, následovaný jednoduchým kódem ovladače na vašem mikroprocesoru a budete krokovat stylově.
Krok 1: Seznamte se se steppery
V zásadě budete muset zjistit, kam vedou všechny malé dráty.
Prvním krokem je zjistit, zda se jedná o unipolární nebo bipolární motor. Podívejte se na Jones na Steppech pro nějaké hlubší pozadí, pak na Ian Harries 'Site pro jednoduchou metodu, jak zjistit neznámý motor. Trochu si přečtěte a přidejte se ke mně v průchodu tímto motorem, který jsem dostal levně. (Právě jsou v prodeji za 0,99 $. Jsou malé, relativně lehké, ale nemají velký točivý moment. Zatím nevím, k čemu to bude dobré.)
Krok 2: Najděte společnou řeč
Takže máte pět (nebo čtyři nebo šest) vodičů. Váš motor bude mít dvě poloviny a pravděpodobně to dokonce poznáte pouhým pohledem na to, ke které straně patří každý vodič.
Pokud se díváte pouze na čtyři vodiče, máte štěstí - je to bipolární motor. Jediné, co musíte udělat, je zjistit, které dva páry vodičů jdou dohromady. Pokud máte unipolární motor nebo více než 4 vodiče, budete muset vypnout ohmetr. To, co hledáte, je společný (uzemňovací) vodič pro každou polovinu. Můžete zjistit, který je uzemněn v bipolárním motoru, protože má poloviční odpor vůči jednomu z pólů než póly přes sebe. Na obrázku jsou moje poznámky k připojení vodičů k vodičům a zaznamenání odporu (nebo jestli jsou vůbec připojeny). Vidíte, že bílá je základem pro spodní trojici b/c, která má poloviční odpor k červené nebo modré, kterou mají navzájem. (Tento motor je zvláštní a nemá středový závit na horní magnetické cívce. Je to jako napůl bipolární, napůl unipolární. Možná byste toho mohli využít k detekci rotace v červeno-bílo-modré cívce, když je černo-žlutá cívka je poháněna.)
Krok 3: Zjistěte krokové pořadí
Chtěl jsem řídit tento motor jako bipolární, takže bílý zemnící vodič ignoruji. Mám jen čtyři dráty, o které se musím starat.
Možná budete chtít provozovat svůj unipolární motor jako bipolární, protože používá celou cívku v obou fázích místo střídání mezi oběma polovinami každé cívky. Více cívek = větší točivý moment. Proveďte proud přes pár (všimněte si polarity, kterou jste si vybrali) a poté protékejte proudem přes další pár současně. Když připojíte druhý pár, sledujte, jakým způsobem se motor otáčí. Zapište si to. Nyní otočte polaritu na prvním páru, který jste vybrali. Poté znovu připojte druhý pár s opačnou polaritou. Všimněte si směru. Z toho byste měli být schopni zjistit posloupnost otáčení motoru v obou směrech. V mém příkladu se oba otočili proti směru hodinových ručiček, takže procházení sekvence stejným způsobem, jaký jsem zvolil, zvýší CCW motoru.
Krok 4: Převzetí motoru na testovací jízdu
Pokud ještě nejste vybaveni programováním mikroprocesorů, můžete dopadnout hůř než Ghetto Development Kit nebo některý z různých PIC programátorů. Zapojte dráty přímo k vašemu mikroprocesoru a vypalte jej následujícím kódem:
/* Hrajeme si na pohánění malých krokových motorů. */
/ * Zahrnout funkci zpoždění */ #define F_CPU 1000000UL #include/ * Pin defs pro ATTiny2313 *// * Po směru hodinových ručiček */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define ŽLUTÁ _BV (PB3) #definovat ZPOŽDĚNÍ 200 / * milisekund mezi kroky * / int hlavní (neplatné) {DDRB = 0xff; / * Povolit výstup na všech pinech B */ PORTB = 0x00; / * Nastavte je na 0v */ while (1) {/ * hlavní smyčka zde */ PORTB = MODRÁ; _delay_ms (ZPOŽDĚNÍ); PORTB = ČERNÝ; _delay_ms (ZPOŽDĚNÍ); PORTB = ČERVENÁ; _delay_ms (ZPOŽDĚNÍ); PORTB = ŽLUTÝ; _delay_ms (ZPOŽDĚNÍ); }} Jak jednoduchý je ten kód? Opravdu jednoduché. Jediné, co dělá, je udělat nějaké pěkné definice, abych mohl na dráty odkazovat spíše barvou než jejich názvy pinů, a pak je přepíná v pořadí s nastavitelným zpožděním mezi nimi. Pro začátek jsem vybral půlsekundové zpoždění mezi kroky. Výsledky najdete v krátkém videu. Pokud jste opravdu ve své hře, spočítejte počet kroků za cyklus, abyste zjistili jednostupňové úhlové rozlišení motoru. (Ach jo. PS. Jezdí bez zátěže na 3,6 V snadno. Viz baterie ve videu.)
Krok 5: Swing It Back and Forth
Takže to máte ve směru hodinových ručiček. Něco zajímavějšího? Malé vyčištění kódu a můžeme jej spustit tam a zpět. Pořadí ve směru hodinových ručiček jsem vložil do pole, takže můžete procházet fázemi pomocí jednoduché smyčky for. Nyní můžete spustit smyčku nahoru nebo dolů a jít ve směru nebo proti směru hodinových ručiček.
int main (void) {const uint8_t delay = 50; konst uint8_t po směru hodinových ručiček = {MODRÁ, ČERNÁ, ČERVENÁ, ŽLUTÁ}; uint8_t i; DDRB = 0xff; / * Povolit výstup na všech pinech B */ PORTB = 0x00; / * Nastavte je na 0v */ while (1) {/ * hlavní smyčka zde */ for (i = 0; i <= 3; i ++) {/ * procházejte barvami ve směru hodinových ručiček */ PORTB = ve směru hodinových ručiček ; _delay_ms (zpoždění); } for (i = 3; i> = 0; i-) { / * krok skrz barvy ccw * / PORTB = ve směru hodinových ručiček ; _delay_ms (zpoždění); }}} Podívejte se na pikantní video o tom, co to je.
Krok 6: Nikdy nepůlkrok, protože nejsem napůl krok …
Quest lyric stranou, napůl šlápnutí motoru je tam, kde je. Získáte více špičkového proudu, více okamžitého točivého momentu a dvojnásobné úhlové rozlišení. Stručně řečeno: Stručně řečeno, místo modré, černé, červené, žluté poháníte motor s modrou, modrou+černou, černou, černou+červenou, červenou, červenou+žlutou, žlutou, žlutou+modrou. Výsledkem je, že polovinu času zapojíte oba magnety najednou. A během doby, kdy jsou obě sady v záběru, motor ukazuje na polovinu mezi nimi, zmenšuje úhel mezi „kroky“a motor se otáčí plynuleji. Poznáte to z videa? Nejsem si jistý … Nyní část kódu, která provádí poloviční krok, vypadá takto:
neplatné halfStepping (uint16_t zpoždění, uint8_t směr ) {uint8_t i; pro (i = 0; i <= 3; i ++) {PORTB = směr ; / * část s jednou cívkou */ _delay_ms (zpoždění); PORTB | = směr [i+1]; / * přidat v půl kroku */ _delay_ms (zpoždění); }} První příkaz PORTB nastaví jeden pól na kladný a zbytek na záporný. Pak to čeká. Poté druhý příkaz PORTB nastaví druhý pól (na druhém vinutí) na kladný, přičemž zapojí obě vinutí pro 1,4násobek momentu (a dvojnásobek proudu). Níže je přiložen úplný seznam programů. Nyní jsou definována dvě pole (ve směru hodinových ručiček, proti směru hodinových ručiček) a obě mají po 5 prvcích, které umožňují vstup i+1 do funkce halfStepping.
Krok 7: Přidejte ovladač motoru
Zatím je vše dobré.
Jediným problémem je, že se zdá, že motor nemá tolik točivého momentu, což by mohlo být způsobeno skutečností, že mikroprocesor vydá pouze ~ 50 mA na kolík. Zjevným dalším krokem by bylo připojit ho k řidiči motoru, aby mu dodal více šťávy. Ale pak trochu přemýšlím: Řídím to pouze s 5V a odpor vinutí cívky je ~ 125 ohmů. Což znamená, že motor má pouze 40mA na pin a měl by být v pohodě poháněn (svalnatým!) AVR čipem. Abych získal větší napětí pohánějící motor, připojil jsem ho k čipu SN754410 H-bridge. Obvod je docela jednoduchý. Každý pin z AVR jde na vstup a odpovídající výstupní piny jdou do motoru. Čip potřebuje pro logickou sekci 5v a v motorové části může odebírat mnohem více napětí. Provoz na 11,25v (tři 3,6v baterie) trochu pomohl. Znatelně větší točivý moment na můj prst, ale stále to není powerhouse. Není to špatné pro motor, který je menší než nikl. A nyní se obvod stal univerzálním ovladačem bipolárního krokového motoru. Přidáno 29. listopadu: Včera chvíli chvíli běžel motor na 12 V a začalo být horko. Nejsem si jistý, jestli to byl problém s rezonanční frekvencí, nebo jestli to bylo prostě příliš mnoho proudu pro vinutí. Ať tak či onak, buďte trochu opatrní, pokud řídíte tento malý motor s větším napětím.
Krok 8: Konec
Co jsem se tedy naučil? Řízení krokového motoru s AVR (a čipem H-můstku) je docela snadné, dokonce i v „efektním“režimu polovičního kroku.
Zatím si nejsem jistý, co budu dělat s malými krokovými motory. Nějaké návrhy?
Doporučuje:
Jak používat krokový motor 28BYJ-48 se 3 tlačítky: 5 kroků
Jak používat krokový motor 28BYJ-48 se 3 tlačítky: Chcete ovládat krokový motor pomocí tlačítek? To může fungovat ve směru hodinových ručiček, proti směru hodinových ručiček a poté funkci Stop? Pak je toto video pro vás
Krokový motorem řízený krokový motor bez mikrokontroléru!: 6 kroků
Krokový motorem řízený krokový motor bez mikrokontroléru !: V tomto rychlém návodu vyrobíme jednoduchý ovladač krokového motoru pomocí krokového motoru. Tento projekt nevyžaduje žádné složité obvody ani mikrokontrolér. Takže bez dalších okolků začneme
Krokový motorem řízený krokový motor bez mikrokontroléru (V2): 9 kroků (s obrázky)
Krokový motorem řízený krokový motor bez mikrokontroléru (V2): V jednom z mých předchozích Instructables jsem vám ukázal, jak ovládat krokový motor pomocí krokového motoru bez mikrokontroléru. Byl to rychlý a zábavný projekt, ale přišel se dvěma problémy, které budou v tomto Instructable vyřešeny. Takže vtip
Řiďte Rover (autíčko) přes internet: 8 kroků
Řiďte Rover (autíčko) přes internet: Co budete stavět Tento tutoriál vás naučí stavět rover, který lze řídit pomocí mobilního telefonu. Obsahuje živý přenos videa a ovládací rozhraní pro řízení. Protože vozítko i váš telefon mají přístup na internet, hračka
Krokový motorem řízený krokový motor - Krokový motor jako rotační kodér: 11 kroků (s obrázky)
Krokový motorem řízený krokový motor | Krokový motor jako rotační kodér: Máte pár krokových motorů a chcete něco udělat? V tomto Instructable použijme krokový motor jako rotační kodér k ovládání polohy jiného krokového motoru pomocí mikrokontroléru Arduino. Takže bez dalších okolků pojďme