Иногда мне в руки попадают различные устройства, которые необходимо отладить и протестить их работу. В некоторых случаях это не так просто, так как тяжело найти какую либо информацию по устройству. Приходится изучать большое количество ресурсов. Поэтому буду "складировать" полученную информацию на Хабре. Возможно, она кому-то пригодится.
С чем я работал
Для отладки работы миниатюрного шагового двигателя мне понадобилось:
Плата расширения для драйверов шаговых двигателей и, собственно, сам драйвер. Я взял A4988.
Миниатюрный шаговый двигатель (именно такой, как на картинке ниже).
Контроллер, использую обычный Arduino Nano.
Отладка (подключение)
Моя задача была не сложной, мне необходимо было добиться точного позиционирования (движение на задаваемый угол), ведь это одно из преимуществ, ради которого мы используем шаговые двигатели.
Я не буду подробно рассказывать, что такое шаговый двигатель и принцип его работы, на просторах интернета этой информации предостаточно. Скажу только, что у меня 2-х фазный шаговик, а следовательно в его конструкции используется две обмотки.
Шаговые двигатели приходят в разной комплектации. Мне же пришел точь-в-точь как на картинке. Я бы сказал полусырой. Любителям пайки понравится работать с таким. Корпус, из которого торчат миниатюрные штырьки. При перегреве эти штырьки грациозно вылетают из пластикового корпуса, после чего их обратный монтаж почти не реален. Поэтому рекомендую сразу искать с напаянным переходником, сохраните большую часть нервной системы.
Кстати, эта картинка все, что у меня было по данным шаговичкам, а больше и не надо. Знаю где вход и выход каждой фазы. Но всё же, прозвоните на всякий случай и найдите эти самые вход и выход каждой фазы.
Теперь разберемся, куда подключать в плату расширения, припаянные к шаговичку провода.
Думаю, у кого есть мультиметр, легко определит эти контакты. Почему важно их определить, потому что на картинке с шаговичком есть А+ А- В+ В-, а на драйвере и плате расширения обозначение А2 А1 В2 В1. Это было самое сложное, с чем мне предстояло столкнуться. Сиди, думай, куда и что подключать.
Ниже будет очень важная картинка, которая мне помогла решить данную задачку.
Как мы видим в пины 2В и 2А необходимо подключать одну обмотку, а в 1А и 1В - другую. И это самое главное, что нам необходимо знать при подключении.
Итог подключения:
Отладка (программа)
Я не стал изобретать велосипед, ведь у Гайвера (AlexGyver) есть отличная библиотека для работы с шаговыми двигателями. Хотя, там мне тоже пришлось много чего попробовать и почитать, чтобы программа заработала, как мне надо.
#define DRIVER_STEP_TIME 2
#include "GyverStepper.h"
GStepper< STEPPER2WIRE> stepper(22, 2, 3); //Точно калибруется тут (1-ый параметр)
void setup() {
stepper.setMaxSpeed(50); // установка максимальной скорости по модулю в шагах/секунду, тип данных float.
stepper.setTargetDeg(180); // отправляем на 180 градусов
}
void loop() {
while (stepper.tick()); // ждём, когда мотор доедет
stepper.setTargetDeg(0); // отправляем на 0 градусов
while (stepper.tick()); // ждём, когда мотор доедет
stepper.setTargetDeg(270); // отправляем на 270 градусов
}
Так как мне нужно было именно позиционировать, то вся загвоздка была тут:
GStepper< STEPPER2WIRE> stepper(22, 2, 3);
Первый параметр в скобочках, это количество шагов на один оборот. А данный параметр нужно брать из документации на двигатель. Эту самую документацию на мой шаговичок я нигде не нашел. Поэтому этот параметр я подобрал эмпирически. Возможно он +-1, угол я измерял на глаз.
Стоит отметить, что данный параметр будет меняться при изменении микрошага на плате расширения (красная коробочка с переключателями).
Конец
Надеюсь данная статья упростит путь новичка в освоении шаговых двигателей.
Комментарии (13)
DvoiNic
08.05.2024 10:11+1Что помешало подключить движок через UNL2004, и "прошагать вручную" для определения количества шагов на оборот?
И да, "количество шагов на оборот" не меняется от способа управления (хоть шаг, хоть полушаг, хоть микрошаг), а определяется "железом" - количеством полюсов у статора двигателя.
Ну и вообще, всё написанное в статье (и даже гораздо больше) есть даже на ардуино.ру в разделе посвященном совершенно штатной библиотеке stepper.
Konstantin_engineer Автор
08.05.2024 10:11Спасибо, почитаю
DvoiNic
08.05.2024 10:11+2кстати, заглянул в доку по А4988, там можно выставить режим "полный шаг" (земля на всех трех задающих), и дергая степ - тоже крутить пошагово. так что подключив без всякой библиотеки, "прошагайте" 220 шагов, и посмотрите, будет ли точно 10 оборотов...
Moog_Prodigy
08.05.2024 10:11УЛНка не умеет рулить биполярными шаговиками, тогда бы для этого лучше использовать микруху типа LM293. А еще точнее небольшими шаговиками можно управлять мощными двуполярными ОУ, дробя шаг до неприлично больших значений. Получать же два канала управляющих напряжений можно с компьютера, выпаяв выходные конденсаторы.
DustyZebra
08.05.2024 10:11+1LM293 для фотоаппаратных шаговиков-малюток уже не модно, FM116C продаются за 3 цента в розницу и их вполне хватит.
NickDoom
08.05.2024 10:11+4Приходится изучать большое количество ресурсов. Поэтому буду
"складировать" полученную информацию на Хабре. Возможно, она кому-то
пригодится.Спасибо, хороший подход :) Я так когда-то Википедию в качестве записной книжки юзал, многие типичные применения линухового консольного ПО до сих пор подсматриваю там, куда сам когда-то написал :)
voldemar_d
08.05.2024 10:11Что-то я попытался на алиэкспресс найти sm1007, ничего не находит.
Подскажите, как правильно искать?
1CHer
08.05.2024 10:11А для чего такие миниатюрные шаговики конкретно вам, поиграться или в какой то проект?
Konstantin_engineer Автор
08.05.2024 10:11Пока что просто попробовать, возможно пригодятся в проекте
Где то читал, что такие шаговики используются в оптических устройствах (фотоаппараты, вроде)
Но могу сказать, у них очень маленькая мощность. Даже не представляю, где использовать можно будет
ivanstor
Для новичков не помешает сообщить марку движка.
Konstantin_engineer Автор
На моих шаговиках маркировка стерта, но у меня получилось найти маркировку на просторах интернета.
В название статьи внес изменение.
DvoiNic
китайцы их никак не маркируют. различают по диаметру корпуса - 6мм движок, 8 мм движок..
Кстати, в описании 8мм движков они указывают 18 градусов на шаг, т.е. при полношаговом управлении будет 20 шагов/оборот