Драйвер шагового двигателя DRV8825. Подключение к Arduino

Управление шаговым двигателем и схема включения для Ардуино

Рассмотрите возможность управления шаговым двигателем с помощью стандартной библиотеки stepper.h и более удобной и популярной библиотеки aclstepper.h, в которой реализовано множество дополнительных команд и функций. Схема подключения двигателя остается без изменений. Чуть дальше мы перечислили возможные команды, которые можно использовать в программе с этими библиотеками.

Пояснения к коду:

  1. вместо портов 8,9,10,11 можно использовать любой цифровой порт;
  2. библиотека Stepper.h имеет несколько функций, поэтому она подходит только для тестирования шагового двигателя и проверки подключения драйвера.

Пояснения к коду:

  1. библиотеку AccelStepper.h можно использовать при подключении шагового двигателя к Motor Shield L293D вместе с библиотекой AFMotor.h;
  2. в программе можно установить не только максимальную скорость, но и ускорение и замедление вала шагового двигателя.

Описание команд библиотеки AccelStepper.h

Настройка микрошага драйвера DRV8825.

Настройка микрошага драйвера DRV8825.

Драйвер DRV8825 может работать в микрошаговом режиме, то есть может подавать питание на катушки с промежуточным уровнем. Например, если взять двигатель NEMA17 с шагом 1.8 градусов или 200 шагов на оборот, в режиме 1/4, двигатель будет выдавать 800 шагов за оборот.

Дня настройки микрошага на драйвере DRV предусмотрены три выхода, а именно M0, M1 и M2. Установив соответствующие логические уровни для этих выводов, можно выбрать режим микрошага.

Драйвер DRV8825 может работать в микрошаговом режиме

Выводы M0, M1 и M2 в микросхеме DRV8825 подтянуты резистором к земле, поэтому, если не подключать их, двигатель будет работать в режиме полного шага.

Система охлаждения DRV8825.

Система охлаждения DRV8825.

При интенсивной работе микросхемы драйвер DRV8825 начинает сильно греться и если температура превысит предельное значение, то он может сгореть. По документации DRV8825 может работать с током до 2,5 А. на катушку, но на практике микросхема не греется, если ток не превышает 1,2 А. на катушку. Поэтому если ток выше 1,2 А. необходимо устанавливать радиатор охлаждения, который идет в комплекте.

Подключение 28BYJ-48 плате Arduino

Схема не сложная, необходимо всего шесть проводов для подключения, сначала подключаем интерфейсные провода, IN1 (ULN2003) в 11 (Arduino UNO), IN2 (ULN2003) в 10 (Arduino UNO), IN3 (ULN2003) в 9 (Arduino UNO) и IN4 (ULN2003) в 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к VIN и подключаем разъем двигателя в модуль ULN2003.

Пример управления шаговым двигателем 28BYJ-48 с помощью Энкодера.

Для уменьшения количества элементов в схеме решил заменить потенциометр и тактовую кнопку на энкодер вращения KY-040. Как подключить энкодер вращения к Arduino рассказывал в предыдущем уроке.

Подключаем шаговый двигатель 28BYJ-48 и энкодер к Arduino по схеме.

Подключаем шаговый двигатель 28BYJ-48 и энкодер к Arduino по схеме.

Проводим небольшую доработку кода и получим вот такой результат.

Если нажать на энкодер, меняется направление вращения. А при вращении энкодера по часовой стрелке - скорость увеличивается. Если вращать против часовой стрелки - скорость снижается.

Если нажать на энкодер, меняется направление вращения. А при вращении энкодера по часовой стрелке — скорость увеличивается. Если вращать против часовой стрелки — скорость снижается.

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Вы также можете без проблем воспользоваться примером из стандартной библиотеки Stepper, которая позволит сделать тоже самое и при меньшем объёме кода. Но библиотека не даст вам понять, как это все устроено.

стандартной библиотеки Stepper

А вот сам пример вращения в одну сторону, а затем в другую с использованием библиотеки Stepper.

А вот сам пример вращения в одну сторону, а затем в другую с использованием библиотеки Stepper.

На основе данного примера можно реализовать управление не только одним шаговым двигателем, а несколькими. Причем, каждый двигатель будет выполнять свои действия не зависимо от других. В планах сделать пару проектов с использованием данного шагового двигателя.

Пишите в комментариях, что бы вы хотели сделать на шаговых двигателях, и какие примеры вас интересуют. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Работа шагового двигателя и описание драйвера

Как работает шаговик?

Для практических задач с точным перемещением объекта обязательно требуется ШД. Это мотор, который перемещает свой вал в зависимости от заданных шагов в программе контроллера. Чаще всего их применяют в станках ЧПУ, робототехнике, манипуляторах, 3D-принтерах.

Мы же с вами рассмотрим конкретный двигатель 28BYj-48 с драйвером управления ULN2003 . Он достаточно дешёвый, прост в сборке и легко писать программу.

шаговый двигатель

В 4-шаговом режиме он может совершать 2048 шагов, в 8-шаговом 4096 шагов. Питание 5 В, ток потребления 160 мА. Передаточное число 1:64 , то есть один шаг он совершит на 5,625 градусов. Крутящий момент составляет 34 мН.м. Средняя скорость 15 об/мин, с помощью программного кода можно ускорить до 35 об/мин, но вы должны понимать, что мы при этом теряем мощность и точность.

Размеры двигателя указаны из первоисточника — даташита производителя Kiatronics.

Даташит ШД

А вот таким образом он выглядит изнутри:

Внутренности ШД

Для небольших технических проектов — 28BYj-48 идеальный вариант. Его главным преимуществом является дешевизна и простота. Прилагаю спецификацию:

8-шаговая управляющая сигнальная последовательность 5.625º/шаг

ШД имеет четыре обмотки, которые запитываются последовательно:

Схема ШД

Для того, чтобы заставить мотор двигаться по часовой стрелке, нужно попеременно подавать на обмотки напряжение. Движок работает в двух режимах в шаговом и полушаговом, чем они отличаются, мы сейчас разберём.

1.Шаговый режим — это когда две из четырех обмоток запитываются на каждом шаге. Смотрите карту включения обмоток: Для этого способа используется библиотека my Stepper.h.

Провод Фазы для шагового режима
1 2 3 4
4 оранжевый
3 желтый
2 розовый
1 синий

2.Полушаговый режим — это когда запитывается первая обмотка, потом вторая и третья вместе, потом четвёртая и т.д. В Даташите разработчика указано, что предпочтительнее режим полушага для мотора. Подробно изображено на карте подключений:

Провод Фазы для полушагового режима
1 2 3 4 5 6 7 8
4 оранжевый
3 желтый
2 розовый
1 синий

Описание драйвера ULN2003

Плата представляет собой силовой модуль, который содержит в себе семь независимых транзисторов Дарлингтона. Каждая пара представляет собой каскад из двух биполярных транзисторов. ULN2003 является неким усилителем с током нагрузки 500 мА и напряжением 50 В. На изображении отображена сама плата и описание выводов к ней.

ULN2003

Управляющие входы IN1,IN2,IN3,IN4 подключаются к любым дискретным выводам Arduino Uno. Если кому интересно, можете прочитать статью здесь . Светодиоды отображают, какой шаг совершил двигатель. Выводы для подключения внешнего источника питания. Рекомендую запитывать отдельной батареей, так как нагрузка может возрастать до 1 А. Только не забудьте переставить джампер на внешнее питание двигателя.

Шаговый двигатель – принцип работы

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Схема шагового двигателя

Шаговый двигатель – это мотор, перемещающий свой вал в зависимости от заданных в программе микроконтроллера шагов и направления. Подобные устройства чаще всего используются в робототехнике, принтерах, манипуляторах, различных станках и прочих электронных приборах. Большим преимуществом шаговых двигателей над двигателями постоянного вращения является обеспечение точного углового позиционирования ротора. Также в шаговых двигателях имеется возможность быстрого старта, остановки, реверса.

Шаговый двигатель обеспечивает вращения ротора на заданный угол при соответствующем управляющем сигнале. Благодаря этому можно контролировать положение узлов механизмов и выходить в заданную позицию.

Работа двигателя осуществляется следующим образом – в центральном вале имеется ряд магнитов и несколько катушек. При подаче питания создается магнитное поле, которое воздействует на магниты и заставляет вал вращаться.

Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.

Упрощенные анимированные схемы работы шагового двигателя

Основные виды шаговых моторов:

  • Двигатели с переменными магнитами (применяются довольно редко);
  • Двигатели с постоянными магнитами;
  • Гибридные двигатели (более сложные в изготовлении, стоят дороже, но являются самым распространенным видом шаговых двигателей).

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

Драйвер для управления шаговым двигателем

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

Но существенным минусов в биполярном режиме является сложность самого драйвера.

Драйвер униполярного привода требует всего 4 транзисторных ключа, для обеспечения работы драйвера биполярного привода требуется более сложная схема.

С каждой обмоткой отдельно нужно проводить различные действия – подключение к источнику питания, отключение. Для такой коммутации используется схема-мост с четырьмя ключами.

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Драйвер двигателя L298N

Драйвер шагового двигателя ULN2003

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Описание драйвера шаговых двигателей UNL2003

Шаговые двигателями с модулями драйверов на базе ULN2003 – частые гости в мастерских Ардуино благодаря своей дешевизне и доступности. Как правило, за это приходится платить не очень высокой надежностью и точностью.

Другие драйвера

Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

  • Они позволяют стабилизировать фазные токи;
  • Возможность установки микрошагового режима;
  • Обеспечение защиты ключа от замыкания;
  • Защита от перегрева;
  • Оптоизоляция сигнала управления, высокая защищенность от помех.

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Подключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Подключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Подключение шагового двигателя к Ардуино

Принципиальная схема подключения.

Ардуино и шаговый двигатель: основы, схемы, подключение и управление

Принципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Основные характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Пример скетча для управления

В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.

const int stepsPerRevolution = 200;

Stepper myStepper(stepsPerRevolution, 8,9,10,11); //подключение к пинам 8…11 на Ардуино

myStepper.setSpeed(60); //установка скорости вращения ротора

//Функция ожидает, пока поступит команда, преобразовывает текст и подает сигнал на двигатель для его вращения на указанное число шагов.

Serial.println(«Move right»); //по часовой стрелке

Serial.println(«Move left»); //против часовой стрелки

Заключение

В этой статье мы с вами узнали, что такое шаговый двигатель, как можно его подключить к ардуино, что такое драйвер шагового двигателя.

Мы также рассмотрели пример написания скетча, использующего встроенную библиотеку Stepper.

Как видим, ничего особенно сложного в работе с шаговыми моторами нет и мы рекомендуем вам обязательно поэкспериментировать самостоятельно и попробовать включить его в своих проектах Arduino.

Работа проекта

Когда вы сделаете все необходимые соединения в схеме данного проекта у вас должна получиться примерно следующая конструкция:

Внешний вид собранной конструкции для этого проекта

После этого загрузите программу в плату Arduino и откройте окно монитора последовательной связи (serial monitor). После этого вы можете вращать ручку потенциометра и наблюдать как в соответствии с ее поворотами шаговый двигатель будет вращаться по часовой и против часовой стрелки.

ОБОРУДОВАНИЕ ТЕХНОЛОГИИ РАЗРАБОТКИ

Во всех статьях о шаговых двигателях я не уставал повторять, что шаговый двигатель объединяет в себе электропривод и позиционирующее устройство без обратной связи. В этом уроке я хочу продемонстрировать использование шагового двигателя в следящем электроприводе.

Предыдущий урок Список уроков Следующий урок

В уроке я разработал две следящие системы с шаговым двигателем в качестве электропривода.

  • Одна использует драйвер на базе платы Ардуино из предыдущего урока и управляется от компьютера.
  • Второй следящий электропривод представляет собой автономное устройство, в котором положение вала двигателя задается переменным резистором.

Вы увидите, как просто реализуются такие системы на базе шагового двигателя. Но сначала я расскажу о том, что такое следящий электропривод и как он создается по традиционной схеме.

Следящий электропривод.

Это очень сложная тема, включающая несколько технических дисциплин, таких как электрические машины, теория автоматического управления, электроника и многие другие. Я затрону только самые общие понятия.

Следящий электропривод – это электрический привод, реализующий изменение положения исполнительного механизма (нагрузки) в соответствии с задающим сигналом, который может произвольно меняться во времени.

Проще говоря, маломощный входной сигнал на входе следящего электропривода управляет с определенной точностью мощной механической нагрузкой. Мы двигаем на экране компьютера изображение стрелки или крутим ручку переменного резистора, а поворачивается вал мощного двигателя.

В общем случае структурная схема следящей системы электропривода выглядит так.

С валом двигателя механически связан датчик положения ротора. Датчик преобразует угол положения вала в физическую величину, с которой работает регулятор. Это может быть напряжение для аналогового регулятора или цифровой код для вычислительных систем. Далее измеренный угол сравнивается с заданным, вычисляется ошибка рассогласования. Ошибка поступает на регулятор, который вырабатывает сигналы питания двигателя, стремясь скомпенсировать разницу между заданным и реальным углами. В качестве привода могут быть использованы самые разные типы двигателей, от низковольтного коллекторного, до мощного асинхронного.

Схема состоит из трех прямоугольников, но на самом деле следящий электропривод это очень сложная система. Требуется достаточно точный датчик угла. Работа регулятора осложняется инерционностью двигателя и нагрузки. Крайне неприятно работать на нелинейную нагрузку. Такие системы строятся по принципу пропорционально интегрально дифференциальных регуляторов. Часто используются адаптивные регуляторы.

Принцип реализации следящего электропривода на шаговом двигателе.

Намного проще реализовать следящий электропривод на шаговом двигателе. Главная особенность шагового двигателя состоит в том, что положение ротора всегда можно вычислить, подсчитав количество сделанных шагов.

Следящий электропривод считает сделанные шаги и таким образом определяет текущее положение ротора. Когда изменяется заданное значение положения вала, система вычисляет разницу между реальным и заданным углами, и делает необходимое количество шагов, чтобы скомпенсировать ошибку рассогласования. Никаких обратных связей, нет необходимости в датчике положения ротора.

К достоинствам следящего привода на базе шагового двигателя следует отнести:

  • простота реализации;
  • отсутствие датчика положения ротора;
  • не бывает перерегулирования, колебательных процессов.
  • необходимость начальной синхронизации реального положения ротора и значения положения ротора в контроллере системы;
  • при выходе из синхронизации шагового двигателя система будет работать с ошибкой, которую можно скомпенсировать только повторной синхронизацией.

Следящий электропривод с управлением от компьютера.

Для реализации этого устройства я использовал драйвер шагового двигателя из предыдущего урока. Такая же схема подключения двигателя к плате Ардуино, та же резидентная программа драйвера с управлением от компьютера по протоколу AT команд.

Весь алгоритм управления реализован в программе верхнего уровня на компьютере.

  • Программа хранит текущее положение ротора двигателя.
  • При изменении заданного значения угла, она вычисляет количество шагов, которое двигатель должен сделать для компенсации ошибки. Затем посылает драйверу AT команду сделать необходимое количество шагов.
  • С помощью AT команды чтения оставшихся шагов программа ждет остановки двигателя и, при необходимости, формирует следующую команду вращения ротора.
  • Положение вала двигателя отображается на мониторе компьютера.

Программу я назвал Tracker. Загрузить ее можно по этой ссылке:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Варианты подключения, первый запуск, установка номера порта абсолютно такие же, как в программе Thermometer (Урок 24). Для проверки удобнее использовать виртуальный порт, который создает драйвер Ардуино при подключении платы к компьютеру. Запускать программу Arduino IDE для этого не надо.

Еще раз повторю, что схема подключения двигателя и скетч программы для платы Ардуино можно взять из предыдущего урока. Собственно мы используем разработанное в предыдущем уроке устройство – интеллектуальный драйвер шагового двигателя. Следящий электропривод это один из примеров применения драйвера.

У меня собранное устройство выглядит так.

Прищепка выполняет роль стрелки положения вала двигателя.

Окно программы Tracker выглядит так.

Часть графических элементов управления аналогичны компонентам программы StepMotor из предыдущего урока.

  • Панель ”Скорость” позволяет задать скорость вращения.
  • С помощью панели “Режим” можно задать режим коммутации фаз и остановки двигателя.
  • Панель “Шаги” позволяет сделать произвольное количество шагов.

Надо только помнить, что данные с этих трех панелей передается в драйвер нажатием кнопок ”—>” рядом с соответствующими панелями.

  • Через панель “Параметры двигателя” можно задать число шагов двигателя на полный оборот и период коммутации фаз в программе драйвера (в моей программе 250 мкс).
  • Светодиод ”Обмен” сигнализирует о состоянии связи компьютера с драйвером. В нормальном режиме должен светиться зеленым.
  • Кнопки “– 1 шаг” и “+ 1 шаг” позволяют сделать по одному шагу по часовой и против часовой стрелки.

В программе появились новые элементы для управления следящим приводом.

Прежде всего, это шкала угла положения вала двигателя. На ней два указателя:

  • Заданного угла – треугольник зеленого цвета;
  • Реального угла – треугольник красного цвета.

За указателем реального угла следует паук в центре шкалы. Люблю я насекомых. Этим летом ксилокопу поймал. Хотел ее использовать в программе, но чтобы сэкономить время взял изображение паука из старой программы. Кстати из программы следящей системы на базе мощного индукторного двигателя.

Указатель заданного угла можно двигать мышью, меняя заданный угол. Ниже шкалы есть числовые показатели заданного и реального углов, а также соответствующие им шаги двигателя.

Активная птичка ”Слежение” означает, что при перемещении указателя заданного угла двигатель оперативно (в реальном времени) отрабатывает положение. Т.е. вал реального двигателя следует за зеленым указателем.

Если птички ”Слежение” нет, то заданное значение отслеживается только по нажатию кнопки ”Пуск”.

Кнопка “Синхронизация” устанавливает оба указателя в нулевое положение. Используется для задания начального положения двигателя.

Я снял короткий фильм о работе следящего привода.

Как я не крутил двигатель нулевой угол на шкале программы соответствовал одному и тому же положению вала реального двигателя. Только надо учитывать, что это правило строго выполняется в режиме фиксации ротора при остановке двигателя, особенно в полу шаговом и между шаговом режимах коммутации. В режиме выключения фаз при остановке положение вала двигателя может измениться из-за механической нагрузки или инерции.

Только надо помнить, что в режиме фиксации ротора при остановке через драйверы всегда течет ток. На транзисторы драйвера должны быть установлены радиаторы. Иначе они могут перегреться и сгореть.

Ардуино проект следящего электропривода с управлением от переменного резистора.

Второй вариант следящего электропривода без обратной связи я решил реализовать как автономное устройство, в котором заданный угол устанавливается переменным резистором.

К плате Ардуино подключен драйвер униполярного шагового двигателя по схеме из предыдущего урока. Впрочем, можно использовать любую другую схему для униполярного или биполярного шагового двигателя.

К аналоговому входу A0 платы подключен переменный резистор по этой схеме.

У меня собранное устройство выглядит так.

Следящий привод должен поворачивать вал двигателя вслед за перемещением вала резистора. Управляет следящей системой программа платы Ардуино.

Резидентная программа следящего электропривода на Ардуино.

Скетч программы можно загрузить по этой ссылке:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Надеюсь, у Вас уже установлены библиотеки TimerOne.h и StepMotor.h.

Скетч программы небольшой.

// программа следящего электропривода без обратной связи #include #include

#define MEASURE_PERIOD 80 // время периода измерения (* 250 мкс) #define numStepsMotor 400 // число шагов двигателя на оборот

int timeCount; // счетчик времени long sumU; // переменные для суммирования кодов АЦП long averageU; // сумма кодов АЦП (среднее значение * 80) int currentStep; // текущее положение двигателя int setStep; // заданное положение двигателя

StepMotor myMotor(10, 11, 12, 13); // создаем объект типа StepMotor, задаем выводы для фаз

// вычисление заданного положения setStep = averageU * (numStepsMotor — 1) / 1023 / MEASURE_PERIOD;

// определение сколько шагов надо сделать int stepsToDo; // сколько шагов надо сделать

stepsToDo = currentStep — setStep; // ошибка рассогласования

if( abs(stepsToDo) >= (numStepsMotor / 2) )

if((stepsToDo) > 0) stepsToDo -= numStepsMotor; else stepsToDo += numStepsMotor; > myMotor.step(stepsToDo); // запуск двигателя currentStep = setStep; // перегрузка текущего положения > >

sumU += analogRead(A0); // суммирование кодов АЦП timeCount++; // +1 счетчик выборок усреднения

В программе измеряется и усредняется значение напряжения на аналоговом входе A0. Этот блок описан в уроке 13.

При остановленном двигателе проверяется, есть ли разница между заданным и реальным углами положения ротора. При необходимости вызывается функция step() для поворота вала двигателя.

Вот короткий фильм о работе устройства.

У моего двигателя 400 шагов на оборот. Если Вы используете другой привод, то надо изменить строку

#define numStepsMotor 400 // число шагов двигателя на оборот

Двигатель работает в шаговом режиме без фиксации ротора при остановке. Режим задан в блоке setup, его легко можно изменить. В полу шаговом режиме число шагов двигателя надо задать в два раза большим. В моем случае:

#define numStepsMotor 800 // число шагов двигателя на оборот

В некоторых положениях переменного резистора значение АЦП дергается на одну единицу. Обычное для преобразования аналогового сигнала явление. Шаговый двигатель отрабатывает это изменение заданного угла, что выражается в подергивании вала. Я не стал компенсировать этот эффект, потому что программа больше демонстрационная.

Неожиданно нашлось первое практическое применение варианта следящей системы с переменным резистором. Антону потребовалось изготовить большой стрелочный регулятор громкости. Очевидно в декоративно-оформительских целях. Вместо переменного резистора — задатчика положения он подал усиленный аналоговый сигнал, добавил второй канал и начальную установку стрелок в крайнее левое положение. Вот, что получилось.

Я так понял, что в окончательном варианте устройство будет оформлено в виде больших стрелочных индикаторов.

В этом уроке я хотел показать главное преимущество шагового двигателя – возможность позиционирования без обратной связи. Надеюсь, Вы оценили простоту создания следящих систем по такому принципу.

Вот ссылка на реальный проект следящей системы, реализованный таким образом.

К плате Arduino Nano подключены два двигателя, которые отслеживают положение по данным, заданным с интерфейса DMX.

В следующем уроке будем подключать к Ардуино биполярный шаговый двигатель. Все программы из предыдущих уроков должны работать без изменений и с биполярным приводом.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector