Управление биполярным шаговым двигателем. Часть 1. Теория. Схема с контроллером PIC12F629 и драйвером LB1838
Шаговые двигатели интересны тем, что позволяют повернуть вал на определённый угол. Соответственно, с их помощью можно повернуть вал и на определённое число оборотов, потому что N оборотов — это тоже определённый угол, равный 360*N, и, в том числе, на нецелое число оборотов, например на 0.75 оборота, 2.5 оборота, на 3.7 оборота и т.д. Этими возможностями шаговых двигателей определяется и область их применения. В основном они используются для позиционирования различных устройств: считывающих головок в дисководах, печатающих головок в принтерах и плоттерах и т.д.
Естественно такие возможности не могли обойти стороной и радиолюбители. Они с успехом используют шаговики в конструкциях самодельных роботов, самодельных станков с ЧПУ и т.д. Ниже описаны результаты моих опытов с шаговым двигателем, надеюсь, что кому-то это может оказаться полезным.
Итак, что нам понадобится для экспериментов. Во-первых, шаговый двигатель. Я брал 5-ти вольтовый китайский биполярный шаговик с загадочным названием, выдранный из старого 3,5″ дисковода, аналог M20SP-GW15. Во-вторых, поскольку обмотки двигателя потребляют значительный ток (в данном случае до 300 мА), то вполне понятно, что подключить шаговик к контроллеру напрямую не удастся, нужен драйвер.
В качестве драйвера для биполярных шаговых двигателей обычно используют схему так называемого H-моста или специальную микросхему (в которой всё равно встроен H-мост). Можно конечно ваять самому, но я взял готовую микруху (LB1838) из того же старого дисковода. Собственно, кроме всего вышеописанного, для наших экспериментов также понадобятся: PIC-контроллер (был взят PIC12F629, как самый дешёвый) и пара кнопок.
Перед тем, как перейти непосредственно к схеме, давайте немного разберёмся с теорией.
Биполярный шаговый двигатель имеет две обмотки и, соответственно, подключается по четырём проводам. Найти концы обмоток можно простой прозвонкой — концы проводов, относящиеся к одной обмотке, будут между собой звониться, а концы, относящиеся к разным обмоткам, — нет. Концы первой обмотки обозначим буквами «a», «b», а концы второй обмотки буквами «c», «d».
На рассматриваемом экземпляре есть цифровая маркировка контактов возле мотора и цветовая маркировка проводов (бог его знает, может это тоже какой-то стандарт): 1 — красный, 2 — голубой — первая обмотка; 3 — жёлтый, 4 — белый — вторая обмотка.
Для того, чтобы биполярный шаговый двигатель вращался, необходимо запитывать обмотки в порядке, указанном в таблице. Если направление обхода таблицы выбрать сверху вниз по кругу, то двигатель будет вращаться вперёд, если снизу вверх по кругу — двигатель будет вращаться назад:
За один полный цикл двигатель делает четыре шага.
Для правильной работы, должна строго соблюдаться указанная в таблице последовательность коммутаций. То есть, например, после второй комбинации (когда мы подали + на вывод «c» и минус на вывод «d») мы можем подать либо третью комбинацию (отключить вторую обмотку, а на первой подать — на «a» и + на «b»), тогда двигатель повернётся на один шаг вперёд, либо первую комбинацию (двигатель повернётся на один шаг назад).
То, с какой комбинации нужно начинать вращение, определяется тем, какая последняя комбинация подавалась на двигатель перед его выключением (если конечно его руками потом не крутили) и желаемым направлением вращения.
То есть, допустим мы повернули двигатель на 5 шагов вперёд, подавая на него комбинации 2-3-4-1-2, потом обесточили, а потом захотели повернуть ещё на один шаг вперёд. Для этого на обмотки надо подать комбинацию 3. Пусть после этого мы его опять обесточили, а через какое-то время захотели вернуть его на 2 шага назад, тогда нам нужно подать на двигатель комбинации 2-1. И так далее в таком же духе.
Эта таблица, кроме всего прочего, позволяет оценить, что будет происходить с шаговым двигателем, если мы перепутаем порядок подключения обмоток или концы в обмотках.
На этом мы закончим с двигателем и перейдём к драйверу LB1838.
У этой микрухи есть четыре управляющие ноги (IN1, IN2, EN1, EN2), на которые мы как раз и будем подавать сигналы с контроллера, и четыре выходных ноги (Out1, Out2, Out3, Out4), к которым подключаются обмотки двигателя. Обмотки подключаются следующим образом: провод «a» подключается к Out1, провод «b» — к Out2, провод «c» — к Out3, провод «d» — к Out4.
Ниже представлена таблица истинности для микросхемы драйвера (состояние выходов в зависимости от состояния входов):
IN1 | EN1 | Out1 (a) | Out2(b) | IN2 | EN2 | Out3(c) | Out4(d) |
Low | High | + | — | Low | High | + | — |
High | High | — | + | High | High | — | + |
X | Low | откл | откл | X | Low | откл | откл |
Теперь давайте нарисуем на диаграмме, какую форму должны иметь сигналы IN1, EN1, IN2, EN2 для одного полного цикла вращения (4 шага), т.е. чтобы на выходах появились последовательно все 4 комбинации подключения обмоток:
Если присмотреться к этой диаграмме (слева), то становится очевидно, что сигналы IN1 и IN2 можно сделать абсолютно одинаковыми, то есть на обе этих ноги можно подавать один и тот же сигнал. В этом случае наша диаграмма будет выглядеть так:
Итак, на последней диаграмме нарисовано, какие комбинации уровней сигналов должны быть на управляющих входах драйвера (EN1, EN2, IN1, IN2) для того, чтобы получить соответствующие комбинации подключения обмоток двигателя, а также стрелками указан порядок смены этих комбинаций для обеспечения вращения в нужную сторону.
Вот в общем-то и вся теория. Необходимые комбинации уровней на управляющих входах формируются контроллером (мы будем использовать PIC12F629).
R1..R2 = 1 кОм. Когда соответствующая кнопка не нажата — резистор подтягивает напряжение на входе контроллера к +5 В (высокий уровень). При нажатии на кнопку напряжение на входе подтягивается к земле (низкий уровень).
С1, С2 = 0,1 мкФ — керамические конденсаторы.
С3 = 470 мкФ х 16В — электролитический конденсатор.
Программа управления реализует следующий алгоритм: при нажатии кнопки КН1 двигатель поворачивается на один шаг в одну сторону, а при нажатии кнопки КН2 — на один шаг в другую сторону.
Собственно говоря, можно прикрутить сюда программный UART и реализовать управление от компьютера (передавать с компа скорость, количество шагов и направление вращения).
АВТОНОМНЫЙ КОНТРОЛЛЕР БИПОЛЯРНОГО ШАГОВОГО ДВИГАТЕЛЯ.
Для проверки и автономного использования шаговых двигателей был разработан
автономный контроллер униполярных шаговых двигателей,
однако он может работать далеко не со всеми двигателями, а только с теми,
что имеют средние выводы обмоток, 5 ,6 и 8 выводные двигатели.
Для запуска 4 выводные двигателей по схеме биполярного включения был разработан
новый контроллер . Он позволяет запускать 4, 6 и 8 выводные двигатели с большим КПД.
Фотография собранного контролера. Транзисторы отогнуты в разные стороны для крепления двух раздельных пластинчатых радиаторов.
Фотография со стороны проводников
Схема собрана на микроконтроллере PIC12F629 и дискретных элементах в драйвере ШД. Монтаж выполнен частично с использованием smd элементов. Выходные транзисторы Дарлингтона уже содержат диоды для защиты от индуктивной составляющей обмоток ШД.
При использованных деталях допускается напряжение питания ШД до 40 вольт и током обмотки до 5 ампер (паспортно). Есть прошивки для работы в полушаговом, шаговом однофазном и шаговом двухфазном режимах.
Драйвер биполярных шаговых двигателей
Ниже представлена принципиальная схема драйвера биполярных шаговых двигателей с двумя L298 (усиленный) 48В, 4А.
Данный драйвер может использоваться для управления практически любых 2-фазных биполярных гибридных шаговиков с 4 выводами и может обеспечить ток работы до 4 ампер при максимальном напряжении 35В.
Драйвер поддерживает режимы работы full step и half step которые можно выбрать с помощю джапмпера H/F. Джампер CTRL предназначен для установки типа двигателя униполярный/биполярный, в позиции биполярного ШИМ работает на выходы INHIBIT в противном случае на выходы ABCD. Питание драйвера 12-35В для двигателя и 15-24В для схемы, диоды D1-D8 быстрые на 3 ампера, желательно Шоттки. Цепочкой R9 и C15 можно подбирать частоту ШИМ, при указанных номиналах она выше диапазона слышимых звуков, так что движок не жужжит. Потенциометром RV1 устанавливается рабочий ток двигателя.
Если будете гонять на максимальной мощности , то нужно обязательно посадить его на хороший радиатор и поставить кулер, также не забудьте намазать термопастой.
Схема и плата нарисованы в программе Proteus 7.7.
Схема протестированна и показала полную работоспособность драйвера
Используемые радиоэлементы:
ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ
Блог технической поддержки моих разработок
Простой контроллер шагового двигателя на PIC12F629
В статье приводятся принципиальные схемы вариантов простого, недорогого контроллера шагового двигателя и резидентное программное обеспечение (прошивка) для него.
Общее описание.
Контроллер шагового двигателя разработан на PIC контроллере PIC12F629. Это 8 выводной микроконтроллер стоимостью всего 0,5 $. Несмотря на простую схему и низкую стоимость комплектующих, контроллер обеспечивает довольно высокие характеристики и широкие функциональные возможности.
- Контроллер имеет варианты схем для управления как униполярным, так и биполярным шаговым двигателем.
- Обеспечивает регулировку скорости вращения двигателя в широких пределах.
- Имеет два режима управления шаговым двигателем:
- полношаговый;
- полушаговый.
- Обеспечивает вращение в прямом и реверсивном направлениях.
- Задание режимов, параметров, управление контроллером осуществляется двумя кнопками и сигналом ВКЛ (включение).
- При выключении питания все режимы и параметры сохраняются в энергонезависимой памяти контроллера и не требуют переустановки при включении.
Контроллер не имеет защиты от коротких замыканий обмоток двигателя. Но реализация этой функции значительно усложняет схему, а замыкание обмоток – случай крайне редкий. Я с таким не сталкивался. К тому же механическая остановка вала шагового двигателя во время вращения не вызывает опасных токов и защиты драйвера не требует.
Про режимы и способы управления шаговым двигателем можно почитать здесь, про дайверы здесь.
Схема контроллера униполярного шагового двигателя с драйвером на биполярных транзисторах.
Объяснять в схеме особенно нечего. К PIC контроллеру подключены:
- кнопки «+» и «–» (через аналоговый вход компаратора);
- сигнал ВКЛ (включение двигателя);
- драйвер ( транзисторы VT1-Vt4 , защитные диоды VD2-VD9).
PIC использует внутренний генератор тактирования. Режимы и параметры хранятся во внутреннем EEPROM.
Схема драйвера на биполярных транзисторах КТ972 обеспечивает ток коммутации до 2 А, напряжение обмоток до 24 В.
Я спаял контроллер на макетной плате размерами 45 x 20 мм.
Если ток коммутации не превышает 0,5 А, можно использовать транзисторы серии BC817 в корпусах SOT-23. Устройство получится совсем миниатюрным.
Программное обеспечение и управление контроллером.
Резидентное программное обеспечение написано на ассемблере с циклической переустановкой всех регистров. Программа зависнуть в принципе не может. Загрузить программное обеспечение (прошивку) для PIC12F629 можно здесь.
Управление контроллером достаточно простое.
- При активном сигнале «ВКЛ» (замкнут на землю) двигатель крутится, при неактивном (оторван от земли) – остановлен.
- При работающем двигателе ( сигнал ВКЛ активен) кнопки «+» и «–» меняют скорость вращения.
- Каждое нажатие на кнопку «+» увеличивает скорость на минимальную дискретность.
- Нажатие кнопки «–» — уменьшает скорость.
- При удержании кнопок «+» или «–» скорость вращения плавно увеличивается или уменьшается, на 15 значений дискретности в сек.
- При остановленном двигателе ( сигнал ВКЛ не активен).
- Нажатие кнопки «+» задает режим вращения в прямом направлении.
- Нажатие кнопки «–» переводит контроллер в режим реверсивного вращения.
- Для выбора режима – полношаговый или полушаговый необходимо при подаче питания на контроллер удерживать кнопку «–» в нажатом состоянии. Режим управления двигателем будет изменен на другой (проинвертирован). Достаточно выдержать кнопку – нажатой в течение 0,5 сек.
Схема контроллера униполярного шагового двигателя с драйвером на MOSFET транзисторах.
Низкопороговые MOSFET транзисторы позволяют создать драйвер с более высоким параметрами. Применение в драйвере MOSFET транзисторов, например, IRF7341 дает следующие преимущества.
- Сопротивление транзисторов в открытом состоянии не более 0,05 Ом. Значит малое падение напряжения (0,1 В при токе 2 А), транзисторы не греются, не требуют радиаторов охлаждения.
- Ток транзисторов до 4 А.
- Напряжение до 55 В.
- В одном 8 выводном корпусе SOIC-8 размещены 2 транзистора. Т.е. на реализацию драйвера потребуется 2 миниатюрных корпуса.
Таких параметров невозможно достичь на биполярных транзисторах. При токе коммутации свыше 1 А настоятельно рекомендую вариант утройства на MOSFET транзисторах.
Подключение к контроллеру униполярных шаговых двигателей.
В униполярном режиме могут работать двигатели с конфигурациями обмоток 5, 6 и 8 проводов.
Схема подключения униполярного шагового двигателя с 5 и 6 проводами (выводами).
Для двигателей FL20STH, FL28STH, FL35ST, FL39ST, FL42STH, FL57ST, FL57STH с конфигурацией обмоток 6 проводов выводы промаркированы следующим цветами.
Обозначение вывода на схеме | Цвет провода |
A | черный |
желтый | |
C | зеленый |
B | красный |
0* | белый |
D | синий |
Конфигурация с 5 проводами это вариант, в котором общие провода обмоток соединены внутри двигателя. Такие двигатели бывают. Например, PM35S-048.
Документацию по шаговому двигателю PM35S-048 в PDF формате можно загрузить здесь.
Схема подключения униполярного шагового двигателя с 8 проводами (выводами).
То же самое как и для предыдущего варианта, только все соединения обмоток происходят вне двигателя.
Как выбирать напряжение для шагового двигателя.
По закону Ома через сопротивление обмотки и допустимый ток фазы.
U = Iфазы * Rобмотки
Сопротивление обмотки постоянному току можно измерить, а ток надо искать в справочных данных.
Подчеркну, что речь идет о простых драйверах, которые не обеспечивают сложную форму тока и напряжения. Такие режимы используются на больших скоростях вращения.
Как определить обмотки шаговых двигателей, если нет справочных данных.
В униполярных двигателях с 5 и 6 выводами, средний вывод можно определить, измерив, сопротивление обмоток. Между фазами сопротивление будет в два раза больше, чем между средним выводом и фазой. Средние выводы подключаются к плюсу источника питания.
Дальше любой из фазных выводов можно назначить фазой A. Останется 8 вариантов коммутаций выводов. Можно их перебрать. Если учесть, что обмотка фазы B имеет другой средний провод, то вариантов становится еще меньше. Попутка обмоток фаз не ведет к выходу из строя драйвера или двигателя. Двигатель дребезжит и не крутится.
Только надо помнить, что к такому же эффекту приводит слишком высокая скорость вращения (выход из синхронизации). Т.е. надо скорость вращения установить заведомо низкую.
Схема контроллера биполярного шагового двигателя с интегральным драйвером L298N.
Биполярный режим дает два преимущества:
- может быть использован двигатель с почти любой конфигурацией обмоток;
- примерно на 40% повышается крутящий момент.
Создавать схему биполярного драйвера на дискретных элементах – дело неблагодарное. Проще использовать интегральный драйвер L298N. Описание на русском языке есть здесь.
Схема контроллера с биполярным драйвером L298N выглядит так.
Драйвер L298N включен по стандартной схеме. Такой вариант контроллера обеспечивает фазные токи до 2 А, напряжение до 30 В.
Подключение к контроллеру биполярных шаговых двигателей.
В этом режиме может быть подключен двигатель с любой конфигурацией обмоток 4, 6, 8 проводов.
Схема подключения биполярного шагового двигателя с 4 проводами (выводами).
Для двигателей FL20STH, FL28STH, FL35ST, FL39ST, FL42STH, FL57ST, FL57STH с конфигурацией обмоток 4 провода выводы промаркированы следующим цветами.
Обозначение вывода на схеме | Цвет провода |
A | черный |
C | зеленый |
B | красный |
D | синий |
Схема подключения биполярного шагового двигателя с 6 проводами (выводами).
Для двигателей FL20STH, FL28STH, FL35ST, FL39ST, FL42STH, FL57ST, FL57STH с такой конфигурацией обмоток выводы промаркированы следующим цветами.
Обозначение вывода на схеме | Цвет провода |
A | черный |
C | зеленый |
B | красный |
D | синий |
Такая схема требует напряжения питания в два раза большего по сравнению с униполярным включением, т.к. сопротивление обмоток в два раза больше. Скорее всего, контроллер надо подключать к питанию 24 В.
Схема подключения биполярного шагового двигателя с 8 проводами (выводами).
Может быть два варианта:
- с последовательным включением
- с параллельным включением.
Схема последовательного включения обмоток.
Схема с последовательным включением обмоток требует в два раза большего напряжения обмоток. Зато не увеличивается ток фазы.
Схема параллельного включения обмоток.
Схема с параллельным включением обмоток увеличивает в 2 раза фазные токи. К достоинствам этой схемы можно отнести, низкую индуктивность фазных обмоток. Это важно на больших скоростях вращения.
Т.е. выбор между последовательным и параллельным включением биполярного шагового двигателя с 8 выводами определяется критериями:
- максимальный ток драйвера;
- максимальное напряжение драйвера;
- скорость вращения двигателя.
Программное обеспечение (прошивка) для PIC12F629 можно загрузить здесь.