![Ъглово позиционно управление на стъпков двигател 28BYJ-48 с Arduino и аналогов джойстик: 3 стъпки Ъглово позиционно управление на стъпков двигател 28BYJ-48 с Arduino и аналогов джойстик: 3 стъпки](https://i.howwhatproduce.com/images/001/image-1369-36-j.webp)
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36
![Ъглово позиционно управление на стъпков двигател 28BYJ-48 с Arduino и аналогов джойстик Ъглово позиционно управление на стъпков двигател 28BYJ-48 с Arduino и аналогов джойстик](https://i.howwhatproduce.com/images/001/image-1369-37-j.webp)
Това е схема за управление на стъпковия двигател 28BYJ-48, която разработих, за да използвам като част от моя проект за дисертация за последната година. Не съм виждал това да се прави преди, затова реших да кача това, което открих. Надяваме се, че това ще помогне на някой друг там!
Кодът по принцип позволява на стъпков двигател да „копира“ъгловата позиция на аналогов джойстик, тоест ако натиснете джойстика напред, моторът сочи към „север“. натиснете джойстика на запад, моторът се върти, за да сочи в същата посока.
За моето изпълнение изисквах, ако джойстикът е пуснат, т.е. няма ъглово положение, моторът да се върне в посока "начало". Посоката на дома е обърната на изток, а моторът (или на лизинг какъвто и да е показалец / устройство, което сте прикрепили към изходния вал!) Също трябва да е обърнат в тази посока, когато е включен.
Консумативи
Arduino Uno или подобен
макет и избор на джъмперни проводници (мъжки към мъжки, мъжки към женски)
5V захранване
Аналогов джойстик модул (в идеалния случай с моментна функция на бутон, това улеснява почивката на позицията "вкъщи"
28BYJ-48 стъпков двигател и ULN2003 стъпков драйвер
Химикалка, хартия и blu-tac (или всяко друго устройство с показалец, което да се прикрепи към двигателя!)
Стъпка 1: Стъпка 1: Настройка
Свържете стъпковия двигател към стъпковия драйвер и свържете щифтовете, както следва:
IN1 - Arduino щифт 8
IN2 - Arduino щифт 9
IN3 - Arduino щифт 10
IN4 - щифт 11 на Arduino
Свържете вашето 5v захранване към захранващите шини на вашата дъска и свържете 5V входовете ULN2003 към захранващите шини. свържете земната релса към земята на вашия Arduino.
за джойстика, свържете както следва:
Превключващ щифт - Arduino щифт 2
Ос X - Arduino A0 (аналогов в 0)
Оста Y - Arduino A1
+5V - 5V изход на Arduino
GND - Arduino GND
Накрая свържете земята на вашата дъска към другия щифт на Arduino GND
Стъпка 2: Стъпка 2: Обясняване на кода
Включих пълния код на Arduino, който можете да изтеглите и използвате. Но ще направя всичко възможно да обясня съответните части тук.
Теорията зад този код е, че пространството, заето от джойстика, е разделено на графика, с 0, 0 в центъра. обаче входовете на джойстика се намират на (приблизително) 512 в центъра, така че за преодоляване на това две функции се използват за "нулиране" на стойността, отчетена от оста X и Y. в зависимост от захранването, което използвате, може да се наложи да промените стойностите във функциите ZeroX и ZeroY, така че вашият джойстик да дава надеждно отчитане на 0, когато почивате.
Когато стойностите X, Y се четат, те първо се преобразуват в радиани с помощта на функцията atan2 () в библиотеката math.h. Обяснението на тази функция е извън обхвата на тази инструкция, но моля, отидете да я потърсите - това е доста прост трик на геометрията!
И накрая, за да улесним живота на онези от нас, които са свикнали да работят в градуси, а не в радове, стойността на rad, изчислена от atan2 (), се преобразува в градуси.
В горната част на цикъла има малък фрагмент от код, който ви позволява да щракнете върху моменталния бутон на джойстика, за да преместите „домашното“местоположение. Това беше изключително полезно при тестването на кода, но го оставих, тъй като виждам как може да бъде полезен в някои случаи.
Сега към основната част от кода! започваме с четене на джойстика X, Y координати два пъти разделени с 10 ms закъснение и след това проверяваме дали са еднакви - открих, че джойстика от време на време ще извежда спорадични показания и това леко забавяне беше достатъчно, за да спре двигателя да се върти въз основа на тези. Това също е достатъчно кратко забавяне, което изглежда не пречи на умишлените данни.
Останалата част от кода е доста ясна и аз направих всичко възможно да го документирам; Поредица от IF изявления сравняват текущия ъгъл на джойстика с ъгъла на двигателя и преместват двигателя до този ъгъл. 28BYJ-48 има 5.689 стъпки на градус, затова умножаваме необходимото движение с това на пръв поглед нечетно число!
Единствената част от кода, която изисква най -много обяснения, е това, което нарекох "опаковъчен случай". Дори когато джойстика и мотора бяха при напр. +175 °, а джойстикът впоследствие се премести на -175 ° (движение само с 10 ° на джойстика, от северозапад до юг от запад), моторът ще се движи В ГРЕШНА ПОСОКА с 350 °! за да се обясни това, е написан специалният случай.
Обхващащият случай започва с проверка дали двигателят и джойстика имат противоположни знаци, т.е.моторът е положителен, а джойстика отрицателен, или обратното. Той също така проверява дали сумата от абсолютните (тоест положителни стойности) на джойстика и двигателя са над 180 °.
Ако и двете твърдения са верни, тогава функцията проверява дали двигателят трябва да се движи по часовниковата стрелка (стойността на двигателя е отрицателна) или обратно на часовниковата стрелка (ако стойността на двигателя е положителна).
Абсолютните стойности на ъгъла на двигателя и ъгъла на джойстика се изчисляват и изваждат от 360 °, за да се определи разстоянието за движение. И накрая, ъгълът на двигателя (който сега отразява ъгъла на джойстика) се актуализира като такъв.
Стъпка 3: ЗАКЛЮЧЕНО
![](https://i.ytimg.com/vi/47mHkajnIV4/hqdefault.jpg)
Така че, остава само да качите кода във вашия Arduino и да го стартирате! Вижте видеото по -горе за добра представа как функционира проектът. Това би било полезно за карданите на камерите, роботизираните ръце и много други приложения!
Ако използвате кода, моля, уведомете ме и ако видите някой, където кодът може да бъде подобрен, ще се радвам да чуя отзивите ви.
Препоръчано:
28BYJ-48 5V стъпков двигател и драйвер A4988: 4 стъпки
![28BYJ-48 5V стъпков двигател и драйвер A4988: 4 стъпки 28BYJ-48 5V стъпков двигател и драйвер A4988: 4 стъпки](https://i.howwhatproduce.com/images/001/image-2000-14-j.webp)
28BYJ-48 5V стъпков двигател и драйвер A4988: Някога искали ли сте да накарате робот да се завърти под точен ъгъл, използвайки само няколко изхода на вашия Arduino или micro: bit? Всичко това евтино? Това е инструкцията за вас! В тази инструкция ще видим как да управляваме много евтин стъпков двигател, използвайки само
Стъпков двигател Контролиран стъпков двигател без микроконтролер!: 6 стъпки
![Стъпков двигател Контролиран стъпков двигател без микроконтролер!: 6 стъпки Стъпков двигател Контролиран стъпков двигател без микроконтролер!: 6 стъпки](https://i.howwhatproduce.com/images/002/image-4196-13-j.webp)
Стъпков двигател, управляван от стъпков двигател без микроконтролер !: В тази бърза инструкция ще направим прост контролер за стъпков двигател, използващ стъпков двигател. Този проект не изисква сложни схеми или микроконтролер. Така че, без да се замисляме, нека започнем
Стъпков двигател Контролиран стъпков двигател без микроконтролер (V2): 9 стъпки (със снимки)
![Стъпков двигател Контролиран стъпков двигател без микроконтролер (V2): 9 стъпки (със снимки) Стъпков двигател Контролиран стъпков двигател без микроконтролер (V2): 9 стъпки (със снимки)](https://i.howwhatproduce.com/images/002/image-5311-28-j.webp)
Стъпков двигател, управляван от стъпков двигател без микроконтролер (V2): В една от предишните ми инструкции, аз ви показах как да управлявате стъпков двигател, използвайки стъпков двигател без микроконтролер. Това беше бърз и забавен проект, но той дойде с два проблема, които ще бъдат решени в тази инструкция. И така, остроумие
Модел локомотив със стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки)
![Модел локомотив със стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки) Модел локомотив със стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки)](https://i.howwhatproduce.com/images/006/image-16276-j.webp)
Модел локомотив със стъпков двигател | Стъпков двигател като въртящ се енкодер: В една от предишните инструкции научихме как да използваме стъпков двигател като въртящ се енкодер. В този проект сега ще използваме въртящия се енкодер със стъпков двигател, за да управляваме модел локомотив, използвайки микроконтролер Arduino. Така че, без fu
Стъпков двигател Контролиран стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки)
![Стъпков двигател Контролиран стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки) Стъпков двигател Контролиран стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки)](https://i.howwhatproduce.com/images/007/image-20303-j.webp)
Стъпков двигател Контролиран стъпков двигател | Стъпков двигател като въртящ се енкодер: Имате ли няколко стъпкови двигателя, които лежат наоколо и искат да направят нещо? В тази инструкция нека използваме стъпков двигател като въртящ се енкодер, за да контролираме позицията на друг стъпков двигател, използвайки микроконтролер Arduino. Така че без да се замисляме, нека да