Obsah:
Video: Úhlové poziční ovládání krokového motoru 28BYJ-48 s Arduino a analogovým joystickem: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Toto je kontrolní schéma krokového motoru 28BYJ-48, které jsem vyvinul pro použití v rámci svého závěrečného projektu disertační práce. Ještě jsem to neviděl, tak jsem si myslel, že nahraji to, co jsem objevil. Doufejme, že to pomůže někomu jinému!
Kód v zásadě umožňuje krokovému motoru „kopírovat“úhlovou polohu analogového joysticku, to znamená, že pokud joystick zatlačíte dopředu, motor míří na „sever“. zatlačením joysticku směrem na západ se motor otáčí a ukazuje stejným směrem.
Pro moji implementaci jsem požadoval, aby byl -li joystick uvolněn, tj. Nemá žádnou úhlovou polohu, motor se vrátil do „domovského“směru. Směr domů je orientován na východ a motor (nebo v nájmu jakýkoli ukazatel / zařízení, které jste připojili k výstupnímu hřídeli!) Musí také směřovat tímto směrem, když je zapnutý.
Zásoby
Arduino Uno nebo podobné
prkénko a výběr propojovacích vodičů (samec na samec, samec na samičku)
Napájení 5V
Analogový modul joysticku (ideálně s funkcí okamžitého tlačítka, to usnadňuje odpočinek „domovské“polohy
Krokový motor 28BYJ-48 a krokový ovladač ULN2003
Pero, papír a blu-tac (nebo jiné ukazovací zařízení k připojení k motoru!)
Krok 1: Krok 1: Nastavení
Připojte krokový motor k krokovému ovladači a připojte kolíky následujícím způsobem:
IN1 - Arduino pin 8
IN2 - Arduino pin 9
IN3 - pin Arduino 10
IN4 - Arduino pin 11
Připojte napájecí zdroj 5 V k napájecím lištám na desce a připojte 5V vstupy ULN2003 k napájecím lištám. připojte zemnicí lištu k zemi na vašem Arduinu.
pro joystick připojte následovně:
Přepínací pin - pin Arduino 2
Osa X - Arduino A0 (analogový v 0)
Osa Y - Arduino A1
+5V - výstup Arduino 5V
GND - Arduino GND
Nakonec připojte zem vašeho prkénka k druhému pinu Arduino GND
Krok 2: Krok 2: Vysvětlení kódu
Zahrnul jsem celý kód Arduino, který si můžete stáhnout a používat. Ale udělám vše pro to, abych vysvětlil příslušné části zde.
Teorie tohoto kódu spočívá v tom, že prostor obsazený joystickem je rozdělen na graf s 0, 0 uprostřed. nicméně vstupy joysticku spočívají na (přibližně) 512 ve středu, takže k překonání těchto dvou funkcí se používají k „vynulování“hodnoty načtené z osy X a Y. v závislosti na použitém napájecím zdroji budete možná muset změnit hodnoty ve funkcích ZeroX a ZeroY, aby váš joystick při odpočinku vydával spolehlivé hodnoty 0.
Když jsou načteny hodnoty X, Y, jsou nejprve převedeny na radiány pomocí funkce atan2 () v knihovně math.h. Vysvětlení této funkce je mimo rozsah tohoto pokynu, ale prosím, podívejte se na to - je to docela jednoduchý trik geometrie!
Nakonec, abychom usnadnili život těm z nás, kteří dříve pracovali ve stupních než v radech, je hodnota rad vypočítaná pomocí atan2 () převedena na stupně.
V horní části smyčky je malý úryvek kódu, který vám umožní kliknutím na momentální tlačítko na joysticku přesunout umístění „domů“. Při testování kódu to bylo neuvěřitelně užitečné, ale nechal jsem to tam, protože vidím, jak by to mohlo být v některých případech užitečné.
Nyní k hlavní části kódu! začneme čtením souřadnic joysticku X, Y dvakrát oddělených 10ms zpožděním a poté zkontrolujeme, zda jsou stejné - zjistil jsem, že joystick občas vydává sporadické hodnoty a toto malé zpoždění stačilo k zastavení otáčení motoru na základě těchto. Je to také dostatečně krátké zpoždění, které, jak se zdá, neruší záměrné vstupy.
Zbytek kódu je spíše samovysvětlující a udělal jsem maximum pro to, abych ho zdokumentoval; Série příkazů IF porovnává aktuální úhel joysticku s úhlem motoru a přesune motor do tohoto úhlu. 28BYJ-48 má 5 689 kroků na stupeň, a proto znásobujeme požadovaný pohyb tímto zdánlivě lichým číslem!
Jedna část kódu, která vyžaduje nejvíce vysvětlování, je to, co jsem nazval "obalený případ". V tom, že joystick a motor byly např. +175 ° a joystick se následně přesunul na -175 ° (pohyb pouze 10 ° na joysticku, od severu na západ k jihu na západ), motor by se pohyboval VE ŠPATNÉM SMĚRU o 350 °! aby to bylo vysvětleno, byl sepsán zvláštní případ.
Obal případ začíná kontrolou, že motor a joystick mají opačné znaky, tj. Motor je pozitivní a joystick negativní, nebo naopak. Také kontroluje, zda je součet absolutních (tj. Kladných hodnot) joysticku a motoru vyšší než 180 °.
Pokud jsou obě tato tvrzení pravdivá, funkce pak zkontroluje, zda se motor musí pohybovat ve směru hodinových ručiček (hodnota motoru je záporná) nebo proti směru hodinových ručiček (pokud je hodnota motoru kladná).
Sečtou se absolutní hodnoty úhlu motoru a úhlu joysticku a odečtou se od 360 ° k určení vzdálenosti k pohybu. Nakonec se úhel motoru (který nyní odráží úhel joysticku) aktualizuje jako takový.
Krok 3: DOKONČENO
Nezbývá tedy než nahrát kód do svého Arduina a spustit ho! Dobrou představu o tom, jak projekt funguje, najdete ve videu výše. To by bylo užitečné pro kardanové závěsy, robotická ramena a mnoho dalších aplikací!
Pokud kód použijete, dejte mi prosím vědět a pokud uvidíte, kde lze kód vylepšit, rád bych slyšel vaši zpětnou vazbu.
Doporučuje:
Ovládání krokového motoru: 5 kroků
Ovládání krokového motoru: Tento návod je platný jak pro Arduino, tak pro použití Drivemall Board pod odkazem na stavbu Drivemall. Výhodou upřednostňování Drivemall před klasickou deskou Arduino je snížení složitosti připojení
Ovládání Arduino LED s analogovým joystickem: 6 kroků
Ovládání Arduino LED pomocí analogového joysticku: V tomto tutoriálu se naučíme používat analogový joystick k ovládání LED. Podívejte se na ukázkové video
Znovu použijte touchpad starého notebooku k ovládání krokového motoru: 11 kroků (s obrázky)
Znovu použijte Touchpad starého notebooku k ovládání krokového motoru: Tento projekt jsem vytvořil před několika měsíci. Před několika dny jsem zveřejnil video projektu na r/Arduino na Redditu. Když jsem viděl lidi, kteří se o projekt zajímají, rozhodl jsem se vytvořit tento Instructable, kde jsem provedl nějaké změny v kódu Arduino
Jak provést ovládání joystickem pro Arduino: 3 kroky
Jak provést ovládání joystickem pro Arduino: V tomto návodu vám ukážu, jak vyrobit lego joysticky pro arduino
Výukový program Arduino - ovládání krokového motoru s potenciometrem: 5 kroků
Výukový program Arduino - ovládání krokového motoru s potenciometrem: Tento návod je psanou verzí mého " Arduina: Jak ovládat krokový motor potenciometrem " Video z YouTube, které jsem nedávno nahrál. Důrazně vám doporučujeme, abyste si to prohlédli. Můj kanál YouTube Nejprve byste měli vidět