Простой контроллер шагового двигателя на 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 проводами (выводами).

Схема подключения 6 выводов

Для двигателей FL20STH, FL28STH, FL35ST, FL39ST, FL42STH, FL57ST, FL57STH с конфигурацией обмоток 6 проводов выводы промаркированы следующим цветами.

 Обозначение вывода на схеме  Цвет провода
 A  черный
 0  желтый
 C  зеленый
 B  красный
 0*  белый
 D  синий

Контроллер

Конфигурация с 5 проводами это вариант, в котором общие провода обмоток соединены внутри двигателя. Такие двигатели бывают. Например, PM35S-048.

Контроллер с PM35S-048

Документацию по шаговому двигателю PM35S-048 в PDF формате можно загрузить здесь.

Схема подключения униполярного шагового двигателя с 8 проводами (выводами).

Схема подклюючения 8 выводов

То же самое как и для предыдущего варианта, только все соединения обмоток происходят вне двигателя.

Как выбирать напряжение для шагового двигателя.

По закону Ома через сопротивление обмотки и допустимый ток фазы.

U = Iфазы * Rобмотки

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

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

 

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

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

Дальше любой из фазных выводов можно назначить фазой A. Останется 8 вариантов коммутаций выводов. Можно их перебрать. Если учесть, что обмотка фазы B имеет другой средний провод, то вариантов становится еще меньше. Попутка обмоток фаз не ведет к выходу из строя драйвера или двигателя. Двигатель дребезжит и не крутится.

Только надо помнить, что к такому же эффекту приводит слишком высокая скорость вращения (выход из синхронизации). Т.е. надо скорость вращения установить заведомо низкую.

Схема контроллера биполярного шагового двигателя с интегральным драйвером L298N.

Биполярный режим дает два преимущества:

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

Создавать схему биполярного драйвера на дискретных элементах – дело не благодарное. Проще использовать интегральный драйвер L298N. Описание на русском языке есть здесь.

Схема контроллера с биполярным драйвером L298N выглядит так.

Схема контроллера биполярного шагового двигателя

Драйвер L298N включен по стандартной схеме. Такой вариант контроллера обеспечивает фазные токи до 2 А, напряжение до 30 В.

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

В этом режиме может быть подключен двигатель с любой конфигурацией обмоток 4, 6, 8 проводов.

Схема подключения биполярного шагового двигателя с 4 проводами (выводами).

Схема 4 вывода

Для двигателей FL20STH, FL28STH, FL35ST, FL39ST, FL42STH, FL57ST, FL57STH с конфигурацией обмоток 4 провода выводы промаркированы следующим цветами.

 Обозначение вывода на схеме  Цвет провода
 A  черный
 C  зеленый
 B  красный
 D  синий

Схема подключения биполярного шагового двигателя с 6 проводами (выводами).

Схема 6 выводов

Для двигателей FL20STH, FL28STH, FL35ST, FL39ST, FL42STH, FL57ST, FL57STH с такой конфигурацией обмоток выводы промаркированы следующим цветами.

 Обозначение вывода на схеме  Цвет провода
 A  черный
 C  зеленый
 B  красный
 D  синий

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

Схема подключения биполярного шагового двигателя с 8 проводами (выводами).

Может быть два варианта:

  • с последовательным включением
  • с параллельным включением.

Схема последовательного включения обмоток.

Схема 8 выводов

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

Схема параллельного включения обмоток.

Схема 8 выводов

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

 

Т.е. выбор между последовательным и параллельным включением биполярного шагового двигателя с 8 выводами определяется критериями:

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

Программное обеспечение (прошивка) для PIC12F629 можно загрузить здесь.

18 комментариев на «Простой контроллер шагового двигателя на PIC12F629»

    • Я не разрабатывал печатную плату. Спаял на макетной плате. Схема простая и мне нужно было только одно такое устройство.

  1. Нужен полушаговый режим для биполярного ШД, в связи с этим вопрос: надо ли менять программу для 12F629 или прошивка подойдёт как к униполярному, так и к биполярному ШД?

    • Для униполярного и биполярного двигателей программа не меняется. Логика переключения фаз одинаковая.

  2. Обыскал весь интернет, не нашёл того что надо мне. Можете сделать например на одном из этих МК: 12F675, 16F676, 16F628A, 16F873-876, 18F252, 18F2520 что бы отдельной конпкой двигатель крутился в одну сторону, другой кнопкой в другую. При отпущеных кнопках запоминание последнего кода до отпускания кнопки, при этом на всех выходах лог. 0., то есть не запись в епром, а отпущеные кнопки как режим временной остановки, что бы при нажатии кнопки в очередной раз перебор кода начался с места остановки. И подстройка оборотов подстроречником в диапазоне 4…400Гц?
    Нужно для отрезного станка по текстолиту.

    • На PIC с 8 выводами такое не сделать, выводов не хватает. А на PIC18F2520, конечно, можно. Не знаю, что у меня со временем. Напишите полностью задачу на mypractic@mail.ru. Какой ток двигателя и все остальное. Может что-то готовое удастся подкорректировать.

      Кстати, посмотрите в рубрике Фасовочное оборудование Дозатор для розлива жидкостей во флаконы ПАРС. Там короткий фильм.

  3. Забыл, переключатель, можно на MCLR или на любой свободный порт: лог 1 — полушаг, лог 0 — полный шаг.

  4. Регулировка частоты оборотов может быть не на подстроечнике, а на 2х кнопках, больше и меньше с запоминанием в епроме.

  5. Дело в том, что нет свободных портов. Даже две кнопки к одному порту пришлось подключить.
    А выбор режима —
    •Для выбора режима – полношаговый или полушаговый необходимо при подаче питания на контроллер удерживать кнопку «–» в нажатом состоянии. Режим управления двигателем будет изменен на другой (проинвертирован). Достаточно выдержать кнопку – нажатой в течение 0,5 сек.

    Режим запомнится в EEPROM и не изменится при выключении питания.

  6. Ток двигателя который будет в конечном изделии ещё не знаю, выбор МК любой из выше перечисленных, их у меня хватает в избытке. Думаю прикрутить потом схему управления с МК к китайскому модулю на L298N, они сейчас по 1,5 бакса. Движок планирую из серии 775, двигатель постоянного тока 12 В — 18 В 11500 об./мин. — 18000 об./мин.
    При 12В — 1,8А при 18В — 2,2А
    Будет 2 алмазных диска, один сверху второй снизу. Что то на подобии скрайбинга. Прототип уже работает, только без электроники. Добавить ещё придётся сигнал на включение насоса для оттяжки текстолитовой пыли. Но это уже мелочь.

  7. Здравствуйте!
    А если биполярный шаговый двигатель потребляет ток в 10 А на каждую обмотку, достаточно только поставить более мощные MOSFET?

    • Здравствуйте! Для биполярного двигателя в статье вариант на L298 с током до 2 А. К тому же у двигателя должно быть сопротивление обмоток соответствующее напряжению питания. Посмотрите в уроке 33 (уроки Ардуино). Там описана эта проблема.
      Может лучше для такого мощного двигателя STEP/DIR драйвер использовать (урок 34).

    • Посмотрите урок 33. Там написано как подключать шаговые двигатели к простым драйверам-ключам.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *