Нет так давно мы рассматривали алгоритм сборки ЧПУ своими руками, где затрагивалась тема управления шаговыми двигателями, ведь именно они позволяют просто и точно спозиционировать фрезу в заданной точке.
Конечно, шаговые двигатели (ШД) используются не только в ЧПУ и 3D-принтерах, им есть масса и других применений. Например, вкупе с популярным "конструктором для взрослых", Arduino, на базе которого можно создать всё что угодно. Однако, связка "Ардуино – шаговый двигатель" требует дополнительный элемент – драйвер.
Из-за того, что двигатель требует повышенного напряжения и силы тока, непосредственное подключение его к микроконтроллеру невозможно, напряжения логического нуля в +5В и силы тока в 40 мА не хватит для работы любого шагового двигателя. Функцию усилителя/переключателя берет на себя драйвер.
О нём мы и поговорим подробнее ниже.
L298N описание
Модуль L298N выполняет роль Н-моста (напряжение, прикладываемое к двигателю постоянного тока, может менять полярность для того, чтобы изменить направление вращения в противоположную сторону) и универсального драйвера для независимого управления сразу двумя двигателями постоянного тока или для одного шагового двигателя.
Модуль собирается на основе одноименной микросхемы (L298N).
К L298N можно подключить двигатели, питающиеся напряжением от 5 до 35 вольт. Управление может быть реализовано в активном или пассивном режимах.
1.Активный – доступно не просто включение и отключение вращения мотора, но и управление его скоростью.
2.Пассивный – контроллер будет понимать только логику "включить/выключить двигатель". Управление уровнем выходного напряжения будет недоступно.
L298N – это облегчённая версия платы L293D. По сравнению с последней на L298N отсутствуют защитные диоды (их можно установить самостоятельно при необходимости защиты от скачков тока в процессе пуска двигателей).
Подключение
Чтобы логика управления была понятнее, сначала разберёмся с джамперами и клеммами на плате.
Рис. 1. Джамперы и клеммы на плате
К клеммникам 1 и 2 подключаются двигатели, логика подключения зависит от моделей двигателей и логики их работы.
Блок клемм 3 отвечает за подключение питания двигателей. Первый контакт - +12. На него подаётся питание от 5 до 12 вольт, если джампер 3 одет, и от 12 до 35 воль, если джампер 3 снят.
При питании до +12В встроенный стабилизатор сам генерирует питание для логической части схемы, поэтому контакт +5В можно не использовать.
Если джампер 3 снят, то контакт +5В требуется запитать отдельно.
Управляющие сигналы от Ардуино или с другого микроконтроллера должны подаваться на контакты IN1-IN4, ENA, ENB. В зависимости от логических уровней и конфигурации джамперов 1,2 будет подаваться питание на двигатели/двигатель.
Джамперы 1 и 2 отвечают за переключение между активным и пассивным режимами работы драйвера. Если джампер одет, то реализуется логика "пассивного" управления.
Теперь для наглядности рассмотрим пару реальных схем подключения.
Управление двумя двигателями постоянного тока
Схема соединения будет выглядеть следующим образом.
Рис. 2. Схема соединения
Напряжение питания двигателей ниже 12 вольт, значит джампер 3 установлен, джамперы 1 и 2 на контактах ENA и ENB сняты.
Стоит особое внимание уделить пинам на Ардуино с ШИМ-модуляцией (рядом с цифровым значением есть специальный символ "~"). Они необходимы для управления скоростью вращения вала (чем выше уровень напряжения, тем выше скорость).
Теперь о логике, на примере левого двигателя (см. изображение выше).
Таблица
Логический уровень на контакте ENA | Логический уровень на контакте IN1 | Логический уровень на контакте IN2 | Результат работы двигателя |
1 | 1 | 0 | Вращается по часовой стрелке |
1 | 0 | 1 | Вращается против часовой |
0 | 1 | 0 | Не вращается |
0 | 0 | 1 | Не вращается |
Логический уровень на контакте ENAЛогический уровень на контакте IN1Логический уровень на контакте IN2Результат работы двигателя
Получается, что контакт ENA отвечает за разрешение работы двигателя. А от комбинации на входах IN1, IN2 зависит направление вращения.
Если на контакт ENA подать не логическую единицу, а заданный уровень напряжения из доступного диапазона (0-255), то изменится скорость вращения.
Управление шаговым двигателем
Соединение схемы управления, включающей в себя драйвер, двигатель Nema17 и Arduino Nano, выглядит следующим образом.
Рис. 3. Соединение схемы управления,
Назначение контактов A+, A-, B+ и B- может отличаться на вашей модели привода, поэтому необходимо изучить документацию для определения правильного назначения.
Ввиду того, что логика работы данной схемы предполагает наличие на выходах только логических нулей и единиц, то джамперами 1 и 2 модуль L298N переключается в пассивный режим.
Скетч для работы с шаговым двигателем есть во встроенной библиотеке IDE для Ардуино (называется Stepper Library, найти её можно так - File -> Examples -> Stepper).
Константа stepsPerRevolution отвечает за количество шагов в одном обороте, по умолчанию установлено значение 200. Его необходимо изменить, если модель вашего двигателя имеет другой показатель.
Метод myStepper.setSpeed() отвечает за настройку скорости вращения, по умолчанию в скетче указан показатель 60, его можно изменить под свои требования.
Вызов функции, инициализирующей вращение, осуществляется через метод step с параметром stepsPerRevolution, при отрицательном параметре вращение осуществляется в обратную сторону.
Пример с использованием этой библиотеки можно найти ниже во вложениях. Полную документацию по API можно найти на официальном сайте проекта.
Скетчи двигателей постоянного тока и шаговых двигателей можно найти здесь.
Автор: RadioRadar