Как подключить шаговый двигатель к ардуино уно
Albion76 › Блог › Опыт изучения Arduino. Подключение шагового двигателя. Часть программная и наладочная.
Всем привет!
В прошлой части своего повествования о подключении ШД к ардуино я остановился на том, что собрал на макетной плате стабилизатор напряжения на 5 В, установил плату управления (ПУ) и подготовил выводы ШД. Настройка самой платы заключается в установке тока двигателя и выбора значения микрошага.
Начнём с тока двигателя. На ПУ надо подать только питание логической части, т.е. 5 В. Плюс подается на вывод VDD (может быть обозначен VCC, VLOG), минус на GND. ШД и его питание пока не подаю. Сам процесс регулировки сводится к установке Vref.
Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два чёрных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

Vref = Current Limit * 8 * (RS)
RS = 0,100
Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25
RS = 0,050
Vref = Current Limit * 8 * 0,050 = Current Limit / 2,5
где
Vref – напряжение на пине, который задаёт ток двигателя.
Current Limit – ток шагового двигателя.
RS — сопротивление резистора — датчика тока.
Измерять Vref проще всего на подвижном выводе подстроечного резистора. Минус мультиметра (в режиме измерения напряжения постоянного тока соединяется с выводом GND, а плюс цепляется за жало отвёрточки, которой кручу подстроечный резистор. Ток своего двигателя я не знал и подобрал опытным путём.

Полный размер
Если пересчитать по формуле, то получу ток:
Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25
отсюда
Current Limit = 1,25 * Vref = 1,25 * 0,28 = 0,35 А или 350 мА
С током разобрался. Теперь микрошаг.
За микрошаг отвечают выводы MS (micro step) MS1, MS2, MS3.
Теперь пару слов о том, что такое микрошаг. Из таблицы видно, что это дробное число. Допустим ШД совершает полный оборот за 200 шагов. Если будет выбран микрошаг 1/4, то полный оборот будет совершаться уже за 800 шагов, а при микрошаге 1/16 — за 3200 шагов. Для чего это нужно? При полном шаге получается больший момент, меньшая точность и больше шумность. Чем мельче шаг, тем выше точность позиционирования, плавнее ход (особенно на малых частотах вращения) и значительно меньше шума при работе. Однако при этом момент на валу двигателя будет меньше. Забегая вперёд, скажу что поигрался с разными значениями, но остановился на 1/16, соединив выводы MS1, MS2, MS3 с выводом VDD.
ПУ настроена — можно подключать двигатель и его питание.
Напомню, что одна из обмоток у меня это синий и зелёный провод, вторая — белый и оранжевый.

Полный размер
Схематически подключение ШД к ПУ выглядит у меня так:

После подачи напряжений питания на плату ШД стал произвольно двигаться. Виной тому наводки на выводах STEP (шаг) и DIR (direction — направление) — эти выводы отвечают за управление вращением ШД.
Если соединить вывод DIR с выводом VDD, ШД будет двигаться в одну сторону, а если с GND, то в другую.
При переходе напряжения от низкого к высокому уровню на выводе STEP ШД совершает 1 микрошаг. Т.е. для вращения двигателя на этот вывод нужно подавать прямоугольные импульсы с низким уровнем около нуля и высоким около 5 В, так называемые TTL-уровни. Генератором таких импульсов у меня будет плата ардуино.
Я загрузил в неё скетч из примеров под названием Blink. В оригинале он формирует на 13 выводе платы (в моём случае Arduino Nano) импульсы с частотой 1/2 Гц (1 с подается высокий уровень, затем 1 с низкий уровень). При такой частоте ШД совершил бы один оборот (при микрошаге 1/16) за 6400 с! Так долго я ждать не хотел))) и стал повышать частоту двигателя. Устойчивой работы мне удалось добиться на частотах вплоть до 10 кГц. Т.е. длительность импульса и паузы у меня составляют по 50 мкс. Операторы delay в скетче пришлось заменить на delayMicroseconds, потому что delay умеет работать только со временами от 1 мс. В итоге скетч стал выглядеть так:

Затем я решил доработать скетч таким образом, чтобы двигатель периодически менял направление вращения. Доработанный скетч выглядит так:

По подключению Arduino.

Полный размер
Пробный запуск показал полную работоспособность схемы. Двигатель не перегревается и шаги не пропускает. Цель достигнута.
Для тех, кто осилил весь материал, видео устройства в работе.
Это первое моё видео предназначенное для публичного просмотра. И первое виде в блоге, снятое мной.
Напишите в комментариях имеет ли смысл снимать видео или достаточно ограничиться статичными изображениями?
Купить комплектующие можно здесь:
Arduino Nano с кабелем microUSB
Макетная плата 420 точек
Набор оконцованных проводов "папа-папа"
Разные драйверы двигателей: от дешевых A4988 до "тихих" TMC2208
Всем Мира!
До свидания!