Obsah:
Video: Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Toto je schéma riadenia krokového motora 28BYJ-48, ktorú som vyvinul na použitie v rámci svojho záverečného projektu dizertačnej práce. Ešte som to nevidel, preto som si myslel, že odovzdám to, čo som zistil. Našťastie to pomôže niekomu inému!
Kód v zásade umožňuje krokovému motoru „kopírovať“uhlovú polohu analógového joysticku, to znamená, že ak joystick zatlačíte dopredu, motor smeruje na „sever“. zatlačením joysticku smerom na západ sa motor otáča a ukazuje rovnakým smerom.
Pri svojej implementácii som požadoval, aby ak je joystick pustený, to znamená, že nemá uhlovú polohu, motor sa vrátil do „domáceho“smeru. Smer domov je otočený na východ a motor (alebo aspoň jeden ukazovateľ / zariadenie, ktoré máte pripojené k výstupnému hriadeľu!) Musí byť pri zapnutí otočené týmto smerom.
Zásoby
Arduino Uno alebo podobné
doska a výber prepojovacích káblov (z mužského na mužského, mužského -ženského pohlavia)
Napájanie 5V
Modul analógového joysticku (v ideálnom prípade s funkciou chvíľkového stlačenia tlačidla uľahčuje odpočinok v „domovskej“polohe
Krokový motor 28BYJ-48 a krokový ovládač ULN2003
Pero, papier a blu-tac (alebo akékoľvek iné ukazovacie zariadenie na pripevnenie k motoru!)
Krok 1: Krok 1: Nastavenie
Pripojte krokový motor k krokovému ovládaču a kolíky zapojte nasledovne:
IN1 - pin Arduino 8
IN2 - pin Arduino 9
IN3 - pin Arduino 10
IN4 - pin Arduino 11
Pripojte 5V napájací zdroj k napájacím lištám na vašom breadboarde a 5V vstupy ULN2003 k napájacím lištám. pripojte uzemňovaciu lištu k zemi na vašom Arduino.
pre joystick pripojte nasledovne:
Prepínací kolík - pin Arduino 2
Os X - Arduino A0 (analógový v 0)
Os Y - Arduino A1
+5V - 5V výstup Arduino
GND - Arduino GND
Nakoniec pripojte uzemňovaciu dosku k druhému kolíku Arduino GND
Krok 2: Krok 2: Vysvetlenie kódu
Zahrnul som úplný kód Arduino, ktorý si môžete stiahnuť a používať. Ale urobím všetko pre to, aby som tu vysvetlil príslušné časti.
Teória tohto kódu je, že priestor obsadený joystickom je rozdelený do grafu s 0, 0 v strede. vstupy joysticku sú však v strede (približne) 512, takže na prekonanie týchto dvoch funkcií slúžia na „vynulovanie“hodnoty načítanej z osí X a Y. v závislosti od napájania, ktoré používate, bude možno potrebné zmeniť hodnoty vo funkciách ZeroX a ZeroY, aby váš joystick pri odpočinku vydával spoľahlivé hodnoty 0.
Keď sa načítajú hodnoty X, Y, najskôr sa prevedú na radiány pomocou funkcie atan2 () v knižnici math.h. Vysvetlenie tejto funkcie je mimo rozsah tohto návodu, ale pozrite sa na to - je to pomerne jednoduchý trik z geometrie!
Nakoniec, aby sme uľahčili život tým z nás, ktorí predtým pracovali v stupňoch než v radoch, hodnota rad vypočítaná pomocou atan2 () sa prevedie na stupne.
V hornej časti slučky je malý útržok kódu, ktorý vám umožňuje kliknúť na chvíľkové tlačidlo na joysticku a presunúť tak „domovské“miesto. Pri testovaní kódu to bolo veľmi užitočné, ale nechal som to, pretože vidím, ako by to v niektorých prípadoch mohlo byť užitočné.
Teraz k hlavnej časti kódu! začneme čítaním súradníc joysticku X a Y dvakrát oddelených oneskorením 10 ms a potom skontrolujeme, či sú rovnaké - zistil som, že joystick občas vysiela sporadické hodnoty a toto malé oneskorenie stačilo na zastavenie otáčania motora na základe týchto. Je to tiež dostatočne krátke oneskorenie, že sa zdá, že to neprekáža úmyselným vstupom.
Zvyšok kódu je dosť vysvetľujúci a urobil som maximum, aby som ho zdokumentoval; Séria príkazov IF porovnáva aktuálny uhol joysticku s uhlom motora a posúva motor do tohto uhla. 28BYJ-48 má 5 689 krokov na stupeň, a preto požadovaný pohyb vynásobíme týmto zdanlivo nepárnym číslom!
Jedna časť kódu, ktorá si vyžaduje najviac vysvetlenia, je to, čo som nazval „obalový prípad“. V tom, že joystick a motor boli napr. +175 ° a joystick sa následne posunul na -175 ° (pohyb joysticku iba o 10 °, od severu na západ k juhu na západ), motor by sa pohyboval V ZLOM SMERE o 350 °! na tento účel bol spísaný špeciálny prípad.
Obalové puzdro začína kontrolou, že motor a joystick majú opačné znaky, tj. Motor je pozitívny a joystick negatívny alebo naopak. Tiež kontroluje, či súčet absolútnych (tj. Kladných hodnôt) joysticku a motora je vyšší ako 180 °.
Ak sú obidva tieto tvrdenia pravdivé, funkcia potom skontroluje, či sa motor musí pohybovať v smere hodinových ručičiek (hodnota motora je záporná) alebo v protismere hodinových ručičiek (ak je hodnota motora kladná).
Sčítajú sa absolútne hodnoty uhla motora a uhla joysticku a odčítajú sa od 360 °, aby sa určila vzdialenosť k pohybu. Nakoniec sa uhol motora (ktorý teraz odráža uhol joysticku) aktualizuje ako taký.
Krok 3: DOKONČENÉ
Všetko, čo musíte urobiť, je nahrať kód do vášho Arduina a spustiť ho! Vo videu vyššie nájdete dobrú predstavu o tom, ako projekt funguje. To by bolo užitočné pre kardanové závesy, robotické ramená a mnoho ďalších aplikácií!
Ak kód použijete, dajte mi vedieť a ak uvidíte, kde je možné kód vylepšiť, rád by som počul vašu spätnú väzbu.
Odporúča:
Ovládanie krokového motora: 5 krokov
Ovládanie krokového motora: Tento návod je platný, ak používame Arduino a obidva pomocou Drivemall Board pod odkazom na zostavu Drivemall. Výhodou uprednostnenia Drivemall pred klasickou doskou Arduino je zníženie zložitosti pripojení, ktoré
Ovládanie Arduino LED s analógovým joystickom: 6 krokov
Ovládanie Arduino LED pomocou analógového joysticku: V tomto návode sa naučíme používať analógový joystick na ovládanie LED. Pozrite si ukážkové video
Výukový program Arduino - ovládanie krokového motora s potenciometrom: 5 krokov
Výukový program Arduino - ovládanie krokového motora s potenciometrom: Tento návod je písomnou verziou môjho článku „Arduino: Ako ovládať krokový motor pomocou potenciometra“; Video z YouTube, ktoré som nedávno nahral. Dôrazne vám to odporúčame skontrolovať. Môj kanál YouTube Najprv by ste mali vidieť tieto
Výukový program Arduino - Ovládanie krokového motora s ovládačom ULN 2003: 5 krokov
Výučba Arduino - Ovládanie krokového motora pomocou ovládača ULN 2003: Tento návod je písomnou verziou môjho článku „Arduino: Ako ovládať krokový motor pomocou ovládača motora ULN 2003“; Video z YouTube, ktoré som nedávno nahral. Dôrazne vám to odporúčam skontrolovať
Ovládanie krokového motora s Arduino: 8 krokov
Ovládanie krokového motora s Arduino: Salut les Makers :) c'est Maker3.0Nie je to premiér " inštruovateľný " najbežnejšie činnosti súvisiace s ovládaním a diaľkovým ovládaním "Stepper Motor" Pohybujte sa v smere otáčania a sklápania, obráťte sa na automatizáciu!