====== Драйвер шагового двигателя (Troyka-модуль) ====== Для управления шаговым двигателем при помощи микроконтроллера нужно не только управлять большой нагрузкой, но и обеспечить необходимую последовательность управляющих импульсов. [[amp>product/troyka-stepper-motor-driver|Драйвер шагового двигателя из линейки Troyka-модулей]] позволяет микроконтроллеру управлять биполярным и униполярным шаговым двигателем. {{ :продукты:troyka:stepper:stepper.png?nolink& |}} ===== Элементы платы ===== {{ :продукты:troyka:stepper:stepper_annotation.png?nolink& |}} ==== Подключение двигателя ==== На контакты 1, 2 подключается первая обмотка биполярного шагового двигателя. На контакты 3, 4 — вторая обмотка. Униполярный двигатель подключается точно также, просто не используются выводы из середин обмоток. ==== Питание двигателя ==== На колодки Vin подаётся напряжение 4,5–25 В постоянного тока. Для питания двигателя рекомендуется использовать отдельный контур питания, не связанный с цепью питания управляющего контроллера. К примеру, если вы используете Arduino, не рекомендуется использовать питание с пина 5V Arduino. Это может привести к перезагрузке управляющего контроллера, или к перегрузке регулятора напряжения Arduino. В некоторых случаях допускается использовать для питания шагового двигателя пин Vin Arduino. Например, если Arduino запитана от мощного внешнего источника питания 7–12 В, напряжение которого при включении двигателя не падает ниже 7 В. ==== Контакты подключения 3-проводного шлейфа ==== Troyka-Stepper подключается к управляющей электронике по трём [[сенсоры:3-провода|3-проводным шлейфам]]. Назначение контактов 3-проводных шлейфов: * Питание (V) — красный провод. На него должно подаваться напряжение 3,3–5 В, которое используется для питания логической части драйвера шагового двигателя. * Земля (G) — чёрный провод. Должен быть соединён с землёй микроконтроллера. * Сигнальный — жёлтый провод. Через него происходит управление соответствующим пином модуля. Для управления модулем используется от одного до трёх сигнальных контакта: * **Step**. Каждый раз, когда напряжение на этом контакте переходит из низкого уровня напряжения в высокий, шаговый двигатель делает следующий шаг. * **Direction**. Направление вращения шагового двигателя зависит от схемы подключения его обмоток и от напряжения на этом пине. Если на пине direction установлен высокий уровень напряжения, двигатель вращается в одну сторону. Если низкий — в другую. Если изменять направление вращения двигателя не нужно, вы можете не подключать этот контакт к микроконтроллеру. * **Enable**. Высокий уровень на этом пине включает подачу напряжения на двигатель. При остановке шагового двигателя в определённом положении, питание продолжает поступать на его управляющую обмотку. Это приводит к нагреву шагового двигателя и излишнему расходу электроэнергии. Чтобы отключить подачу питания на двигатель, достаточно выставить низкий уровень напряжения на этом контакте. При остановке двигателя бывает полезно подать на этот контакт [[конспект-arduino:шим|ШИМ-сигнал]]. Это позволит оставить на двигателе небольшое усилие, необходимое для удержания вала в текущем положении. Электроэнергии в таком случае будет тратится значительно меньше. Если нет необходимости управлять включением двигателя, вы можете не подключать этот контакт к микроконтроллеру. Тогда ток через обмотки двигателя будет течь всегда, если есть напряжение питания. ==== Индикатор вращения двигателя ==== Светодиодный индикатор. Горит зелёным при шаге в одну сторону, красным - при шаге в другую сторону. ===== Пример использования ===== {{ :продукты:troyka:stepper:stepper_usecase.png?nolink& |}} // Troyka-Stepper подключён к следующим пинам: const byte stepPin = 7; const byte directionPin = 8; const byte enablePin = 11; // Выдержка для регулировки скорости вращения int delayTime = 20; void setup() { // Настраиваем нужные контакты на выход pinMode(stepPin, OUTPUT); pinMode(directionPin, OUTPUT); pinMode(enablePin, OUTPUT); } void loop() { // Подаём питание на двигатель digitalWrite(enablePin, HIGH); // Задаём направление вращения по часовой стрелке digitalWrite(directionPin, HIGH); // Делаем 50 шагов for (int i = 0; i < 50; ++i) { // Делаем шаг digitalWrite(stepPin, HIGH); delay(delayTime); digitalWrite(stepPin, LOW); delay(delayTime); } // Переходим в режим экономичного удержания двигателя... analogWrite(enablePin, 100); //... на три секунды delay(3000); // Меняем направление вращения digitalWrite(directionPin, LOW); // Включаем двигатель на полную мощность digitalWrite(enablePin, HIGH); // Делаем 50 шагов for (int i = 0; i < 50; ++i) { digitalWrite(stepPin, HIGH); delay(delayTime); digitalWrite(stepPin, LOW); delay(delayTime); } // Ничего не делаем без отключения двигателя delay(3000); // Отключаем двигатель digitalWrite(enablePin, LOW); // Ничего не делаем до перезагрузки while (true) { ; } } ===== Характеристики модуля ===== |Номинальное напряжение питания двигателя | 4,5–25 В | |Пиковое напряжение на контактах Vin | 35 В | |Напряжение питания логической части | 3,3–5 В | |Длительно допустимый ток | до 600 мА | |Пиковый ток | 1200 мА | ===== Ресурсы ===== * [[projects:photo-turntable|Проект с использованием драйвера шагового двигателя «Поворотный стол для 3D-фотосъемки»]] * [[http://files.amperka.ru/datasheets/l293d.pdf|Техническое описание микросхемы драйвера двигателя L293D]]