Obsah:

Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom: 3 kroky
Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom: 3 kroky

Video: Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom: 3 kroky

Video: Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom: 3 kroky
Video: Jak na to - Spárování obkladů a dlažby v interiéru 2024, November
Anonim
Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom
Uhlové pozičné ovládanie krokového motora 28BYJ-48 s Arduino a analógovým joystickom

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: