Управление биполярным шаговым двигателем своими руками. Что такое драйвер шагового двигателя? Чем же его кормить

Рассмотрим драйвер электродвигателей на транзисторах и микросхеме L298, разберемся с принципом работы H-моста. Узнаем особенности подключения драйверов на L298 к разным двигателям и источникам питания, проведем простые эксперименты с шаговыми движками и двигателями постоянного напряжения. Подключение к Raspberry Pi и простейшие программы для теста управления драйвером.

Что такое H-мост

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

Почему такое название? - потому что схема включения двигателя и переключателей для коммутации напоминает латинскую букву H. Принципы работы H-моста показан нарисунке ниже.

Рис. 1. Как работает H-мост, принцип коммутации двигателя для вращения в разные стороны.

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

Важно заметить что НЕЛЬЗЯ допускать замыкания двух ключей на одной стороне H-моста, поскольку получится короткое замыкание, при проектировании схемы моста нужно заложить это правило в логику и таким образом реализовать защиту.

Схема простого H-моста на кремниевых транзисторах

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

Рис. 2. Принципиальная схема простого драйвера электродвигателя на кремниевых транзисторах.

Такой драйвер позволяет управлять электродвигателем постоянного тока с питающим напряжением до 25В (для КТ817А, КТ816А) и до 45В (для КТ817Б-Г, КТ816Б-Г) с током не более 3А. При большом рабочем и нагрузочном токе двигателя выходные транзисторы КТ817 и КТ816 должны быть установлены на радиаторы достаточного размера.

Установка диодов VD1-VD2 обязательна, они нужны для защиты выходных транзисторов от обратного тока. На их место можно поставить отечественные КД105А или другие на больший ток.

Собрав две такие схемки (2х6 транзисторов) можно также управлять шаговым двигателем или же двумя двигателями постоянного тока.

Для того чтобы не городить огород из 12 транзисторов можно применить специализированные микросхемы, ниже мы рассмотрим пример с микросхемой L298 и готовым блоком на ее основе.

Микросхема L298, характеристики и возможности

Интегральная микросхема L298 - это мощный универсальный мостовой драйвер для управления двигателями постоянного тока, шаговыми движками, электромагнитными реле и электромагнитами (соленоидами). В микросхеме содержится два H-моста, выполненных на мощных транзисторах, а также логика совместимая с TTL.

Рис. 3. Микросхема L298 в корпусах Multiwatt15 PowerSO20.

Основные технические характеристики:

  • Рабочее напряжение - до 46В;
  • Максимальный постоянный ток - 4А (с радиатором);
  • Низкое напряжение насыщения;
  • Защита от перегрева;
  • Логический "0" = напряжение до 1,5В.

Где можно применить драйвер на микросхеме L298? - несколько идей:

  • Управление шаговым двигателем;
  • Управление двумя двигателями постоянного тока (DC motors);
  • Коммутация катушек мощных реле;
  • Управление соленоидами (электромагнитами).

Если посмотреть на структурную схему микросхему L298 то мы можем увидеть что-то на подобии схемы на рисунке 2, только с дополнительными логическими элементами.

Рис. 4. Внутренняя схема микросхемы L298N - мощный двойной H-мост.

Для каждого H-моста мы имеем по 3 входа: In1 - для подачи напряжения в одном направлении, In2 - в противоположном, и еще один вход En для подачи питания на выходные транзисторы моста.

Таким образом мы можем установить направление прохождения тока и управлять его подачей (включено или выключено, а также ШИМ).

Схема драйвера на микросхеме L298

Ниже представлена простая схема для драйвера двигателей на микросхеме L298N. Управление осуществляется по четырем проводам (вместо шести у L298) благодаря использованию дополнительных инверторов в микросхеме CD4011.

Рис. 5. Принципиальная схема драйвера электродвигателей на микросхеме L298N.

Для питания логики обеих микросхем нужно стабилизированное напряжение +5В (P2), можно использовать интегральный стабилизатор, например L7805 или же питать логику от имеющейся линии питания +5В. Для подачи питающего напряжения на двигатели используется отдельная линия питания P1.

Выводы P4, P5 используются для установки полярности каждого из каналов, а выводы P6, P7 - разрешают подачу питания на каскады (ключи) внутреннего H-моста для каждого канала.

Микросхему CD4011 можно заменить на отечественную К176ЛА7. Диоды Шоттки можно поставить другого номинала, на 35В/4А и более. Если не планируется ограничивать ток обмоток двигателя(двигателей) то низкоомные ограничивающие резисторы R9-R10 можно исключить из схемы, заменив их на перемычки.

В интернете можно заказать готовый модуль на L298, правда в нем будет 6 входов для управления.

Рис. 6. Готовые модули на L298.

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

Для подключения данной платки важно четко уяснить одну особенность:

  • Если для питания двигателей используется напряжение более чем 12В то перемычку нужно убрать и подавать отдельно 5В на выделенный для этого коннектор
  • Если питание двигателей будет осуществляться от напряжения 5-12В то перемычку нужно утсановить и дополнительное питание 5В не понадобится.

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

Для того чтобы сэкономить два входа при подключении такого блока к Arduino или Raspberry Pi можно добавить часть схемы на CD4001, как на рисунке 5.

L298 + DC двигатели + Raspberry Pi

Для данного эксперимента к модулю на L298 были подключены два двигателя постоянного тока. Питание всего модуля осуществляется от одного аккумулятора на 6В. Поскольку это напряжение меньше 12В (смотрим выше описание) то перемычку внутреннего стабилизатора оставляем установленной и дополнительное питание +5В для логики не потребуется.

Перемычки "ENA" и "ENB", которые разрешают подачу питания на выходные мосты, оставлены установленными. Таким образом, для управления каждым из двигателей используем оставшиеся четыре входа: IN1, IN2, IN3, IN4.

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

Где взять +5В? - в данном случае это напряжение присутствует на разъеме питания, справа возле GND. Для теста можно воспользоваться кусочком проволоки - перемычкой.

Теперь подключим наш модуль к Raspberry Pi и напишем простую тестовую программу на Python. Для подключения модуля я использовал выводы GPIO вот в таком соответствии:

Рис. 7. L298 + Raspberry Pi + электродвигатели постоянного тока.

Мини-компьютер у меня питается через понижающий импульсный стабилизатор от второго аккумулятора на 6В. Перейдем к написанию программы для нашего эксперимента, наша цель - управлять вращением вала каждого из двигателей при помощи клавиатуры, которая подключена к Raspberry Pi или же удаленно по SSH, VNC.

Теперь испробуем простую программу, написанную на Python, которая поможет понять принцип управления электродвигателем постоянного тока.

Загружаем малинку, открываем Терминал или же подключаемся к ней удаленно при помощи SSH. Создаем новый файл и открываем его для редактирования при помощи команды:

Nano /home/pi/l298_dc_motors_test.py

Вставляем в редактор код скрипта на Python, который приведен ниже:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO # Подготавливаем пины GPIO. GPIO.cleanup() GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) GPIO.setup(17, GPIO.OUT) GPIO.output(17, GPIO.LOW) # Включаем вращение двигателя 1 в одну сторону. GPIO.output(4, GPIO.HIGH) # ждем 5 секунд. time.sleep(5) # Выключаем двигатель 1. GPIO.output(4, GPIO.LOW) # ждем 10 секунд. time.sleep(10) # Включаем вращение двигателя 1 в другую сторону. GPIO.output(17, GPIO.HIGH) # ждем 5 секунд. time.sleep(5) # Выключаем двигатель 1. GPIO.output(17, GPIO.LOW)

Выходим из редактора и сохраняем файл. Делаем скрипт исполняемым и запускаем его:

Chmod +x /home/pi/l298_dc_motors_test.py /home/pi/l298_dc_motors_test.py

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

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

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

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import curses import time import RPi.GPIO as GPIO # Установим номера пинов GPIO, с которыми будем работать M1_RIGHT = 4 M1_LEFT = 17 M2_RIGHT = 27 M2_LEFT = 22 # Функция для подготовки пинов GPIO def setup(*ports): GPIO.cleanup() # Режим именования пинов по названию, а не по номеру на плате GPIO.setmode(GPIO.BCM) for port in ports: # Установка пина на вывод + низкий уровень "0" GPIO.setup(port, GPIO.OUT) GPIO.output(port, GPIO.LOW) # Функция для установки низкого уровня на всех пинах (выключение) def stop_all(): GPIO.output(M1_LEFT, GPIO.LOW) GPIO.output(M1_RIGHT, GPIO.LOW) GPIO.output(M2_LEFT, GPIO.LOW) GPIO.output(M2_RIGHT, GPIO.LOW) # Функция для управления вращением движков def rotate(motor=1, mode="s"): # Выключаем все пины stop_all() # Для мотора 1 if motor == 1: if mode == "r": # Устанавливаем высокий уровень на пине M1_RIGHT (4) GPIO.output(M1_RIGHT, GPIO.HIGH) elif mode == "l": # Устанавливаем высокий уровень на пине M1_LEFT (17) GPIO.output(M1_LEFT, GPIO.HIGH) # Для мотора 2 elif motor == 2: if mode == "r": GPIO.output(M2_RIGHT, GPIO.HIGH) elif mode == "l": GPIO.output(M2_LEFT, GPIO.HIGH) # Выполним инициализацию пинов GPIO setup(M1_RIGHT, M1_LEFT, M2_RIGHT, M2_LEFT) # Инициализация экрана (модуль curses) stdscr = curses.initscr() # Реагировать на нажатие клавиш без подтверждения при помощи ENTER curses.cbreak() # Разрешить использование стрелочек на клавиатуре stdscr.keypad(1) # Не блокировать программу по времени при опросе событий stdscr.nodelay(1) # Отобразим на экране данные по умолчанию stdscr.addstr(0, 10, "Hit "q" to quit") stdscr.addstr(2, 10, "A - M1 Left, D - M1 Right") stdscr.addstr(3, 10, "< - M2 Left, > - M2 Right") stdscr.addstr(4, 10, "S - stop") stdscr.refresh() # Главный цикл while True: # Получаем код нажатия клавиши и проверяем его key = stdscr.getch() if key != -1: # Если клавиша "стрелка влево" то вращаем движок 2 влево if key == curses.KEY_LEFT: # Выводим на экран строку "M2 <---" в позиции 6, 10 stdscr.addstr(6, 10, "M2 <---") rotate(2, "l") # Если клавиша "стрелка вправо" то вращаем движок 2 вправо elif key == curses.KEY_RIGHT: stdscr.addstr(6, 10, "M2 --->") rotate(2, "r") # Если клавиша "а" то вращаем движок 1 влево elif key == ord("a"): stdscr.addstr(6, 10, "M1 <---") rotate(1, "l") # Если клавиша "d" то вращаем движок 1 вправо elif key == ord("d"): stdscr.addstr(6, 10, "M1 --->") rotate(1, "r") # Если клавиша "s" то останов всех движков elif key == ord("s"): stdscr.addstr(6, 10, "STOP 12") stop_all() # Если клавиша "s" то выходим из программы elif key == ord("q"): # Восстановление прежних настроек терминала stdscr.keypad(0) curses.echo() curses.endwin() # Очистка и выход os.system("clear") sys.exit() # Обновляем текст на экране и делаем небольшую задержку stdscr.refresh() time.sleep(0.01)

Запустив скрипт можно понажимать стрелочки клавиатуры "влево" и "вправо", а также клавиши с буквами "A" и "D" - двигатели должны вращаться поочередно и в разные стороны, а программа будет отображать их текущий режим работы.

Рис. 8. Программа на Python для управления двигателями при помощи драйвера L298 (терминал Konsole, KDE).

Краткая видео-демонстрация работы данного эксперимента приведена ниже:

Что такое шаговый двигатель, типы шаговиков

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

Шаговые двигатели надежны, стойки к износу и позволяют контролировать вращение на определенный угол, применяются в автоматизации процессов, на производстве, в электронно-вычислительной аппаратуре(CD-DVD приводы, принтеры, копиры) и т.п.

Такие двигатели бывают следующих видов:

  • Биполярный - 2 обмотки, по одной на каждую фазу, для управления можно использовать схему на 2 H-моста или один полу-мост с двуполярным питанием;
  • Униполярный - 2 обмотки, каждая с отводом от середины, удобно переключать фазы сменой половинок каждой из обмоток, упрощает схему драйвера (4 ключа), а также использовать как быполярный без использования отводов от обмоток;
  • С четирьмя обмотками - универсальный, подключив обмотки соответствующим образом можно использовать как быполярный или униполярный движок.

Рис. 9. Типы шаговых двигателей: биполярный, униполярный, с четырьмя обмотками.

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

L298 + шаговый двигатель + Raspberry Pi

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

Для подключения одного биполярного двигателя потребуется два выхода драйвера на L298 (два H-моста). Для данного эксперимента модуль L298 нужно подключить к Raspberry Pi так же, как и в варианте с .

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

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

Рис. 10. Подключение биполярного шагового двигателя к модулю L298 для управления через Raspberry Pi.

Если все уже подключено, то переходим к экспериментам с простой тестовой программой на Python, которая поможет понять как работать с шаговыми двигателем используя L298 + Raspberry Pi.

Создадим файл для скрипта и откроем его для редактирования:

Nano /home/pi/l298_stepper_motor_test.py

Вставляем в редактор следующий код скрипта на Python:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO # Подготавливаем пины GPIO. GPIO.cleanup() GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) GPIO.setup(17, GPIO.OUT) GPIO.output(17, GPIO.LOW) GPIO.setup(27, GPIO.OUT) GPIO.output(27, GPIO.LOW) GPIO.setup(22, GPIO.OUT) GPIO.output(22, GPIO.LOW) # Временная задержка между шагами, сек. step_timeout = 0.0105 # Длительность импульса, сек. impulse_timeout = 0.008 # Шаг 1. GPIO.output(4, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(4, GPIO.LOW) time.sleep(step_timeout) # Шаг 2. GPIO.output(17, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(17, GPIO.LOW) time.sleep(step_timeout) # Шаг 3. GPIO.output(27, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(27, GPIO.LOW) time.sleep(step_timeout) # Шаг 4. GPIO.output(22, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(22, GPIO.LOW) time.sleep(step_timeout) # Ждем 10 секунд. time.sleep(10) # 20 раз по 4 шага в цикле. for i in range(0,20): GPIO.output(4, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(4, GPIO.LOW) time.sleep(step_timeout) GPIO.output(17, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(17, GPIO.LOW) time.sleep(step_timeout) GPIO.output(27, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(27, GPIO.LOW) time.sleep(step_timeout) GPIO.output(22, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(22, GPIO.LOW) time.sleep(step_timeout)

Делаем файл со скриптом исполняемым и запускаем его на исполнение:

Chmod +x /home/pi/l298_stepper_motor_test.py /home/pi/l298_stepper_motor_test.py

осле запуска скрипта, шаговый двигатель должен совершить 4 шага (вращение в одну сторону), потом подождав 10 секунд он снова начнет свое вращение и сделает уже 20*4 шагов.

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

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import curses import time import RPi.GPIO as GPIO # Функция для подготовки пинов GPIO def setup(*ports): GPIO.cleanup() # Режим именования пинов по названию, а не по номеру на плате GPIO.setmode(GPIO.BCM) for port in ports: # Установка пина на вывод + низкий уровень "0" GPIO.setup(port, GPIO.OUT) GPIO.output(port, GPIO.LOW) # Функция для подачи импульса на пин с некоторой задержкой (1 шаг) def impulse(port=0): GPIO.output(port, GPIO.HIGH) # Set the timeout value to be anough for one step time.sleep(0.008) GPIO.output(port, GPIO.LOW) time.sleep(timeout) # Выполняем установку нужных нам пинов GPIO setup(4, 17, 27, 22) # Задержка между шагами (по умолчанию) timeout = 0.0105 # Направление вращения (по умолчанию) direction = "r" # Инициализация экрана (модуль curses) stdscr = curses.initscr() # Реагировать на нажатие клавиш без подтверждения при помощи ENTER curses.cbreak() # Разрешить использование стрелочек на клавиатуре stdscr.keypad(1) # Не блокировать программу по времени при опросе событий stdscr.nodelay(1) # Отобразим на экране данные по умолчанию stdscr.addstr(0, 10, "Hit "q" to quit") stdscr.addstr(2, 10, "--->") stdscr.addstr(3, 10, "Timeout: " + str(timeout)) stdscr.refresh() # Главный цикл while True: # Набор импульсов для вращения вала мотора вправо if direction == "r": impulse(4) impulse(17) impulse(27) impulse(22) # Набор импульсов для вращения вала мотора влево elif direction == "l": impulse(22) impulse(27) impulse(17) impulse(4) # Считываем код нажатия клавиши и проверяем его key = stdscr.getch() if key != -1: # Клавиша "влево" меняет направление вращения: ВЛЕВО if key == curses.KEY_LEFT: # отображаем текст "<---" в позиции экрана 2, 10 stdscr.addstr(2, 10, "<---") # Изменим значение переменной с направлением вращения direction = "l" # Клавиша "вправо" меняет направление вращения: ВПРАВО elif key == curses.KEY_RIGHT: stdscr.addstr(2, 10, "--->") direction = "r" # Клавиша "вверх" ускоряет вращение elif key == curses.KEY_UP: # Уменьшаем задержку между шагами timeout = timeout - 0.0005 # Клавиша "вниз" замедляет вращение elif key == curses.KEY_DOWN: # Увеличиваем задержку между шагами timeout = timeout + 0.0005 # Клавиша "q" выполняет выход из программы elif key == ord("q"): stdscr.keypad(0) curses.echo() curses.endwin() os.system("clear") sys.exit() # Смотрим чтобы время задержки не перешло границу 0 if timeout <= 0: timeout = 0.0005 # Обновляем текст на экране stdscr.addstr(3, 10, "Timeout: " + str(timeout)) stdscr.refresh() time.sleep(0.01)

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

Если же двигатель не вращается, то возможно что потребуется сменить полярность подключения одной из обмоток к модулю на L298.

Рис. 11. Программа управления биполярным шаговым двигателем, L298, Raspberry Pi.

Видео-демонстрация работы шагового двигателя:

Заключение

Надеюсь вы получили ответ на вопрос "что такое H-мост и как он работает", из экспериментов должно быть понятно как применять драйвер на микросхеме L298 и подключать к нему разные движки.

Важно заметить что в интернете можно найти готовые библиотеки и скрипты на Python для удобного управления двигателями при помощи H-моста на L298 с использованием Raspberry Pi.

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

Для того чтобы изготовить контроллер шагового двигателя, необходимо понять принцип работы самих шаговый электрических машин и чем они отличается от других типов электромоторов. А разновидностей электрических машин существует огромное множество: постоянного тока, переменного тока. Электродвигатели переменного тока делятся на синхронные и асинхронные. Описывать каждый тип электродвигателей я не стану так-как это выходит за рамки данной статьи, скажу лишь что каждый тип двигателя имеет свои преимущества и недостатки. А что же такое шаговый электродвигатель и как им управлять?

Шаговый электродвигатель — это синхронный бесщёточный электродвигатель с несколькими обмотками (обычно с четырьмя), в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора. Принципиальная электрическая схема шагового мотора дает представление о его устройстве.

А на этой картинке показана таблица истинности и диаграмма работы шаговика в полношаговом режиме. Существуют еще и другие режимы работы шаговых двигателей (полушаговый, микрошаговый и др.)

Получается если повторять эту последовательность сигналов ABCD можно вращать ротор электромотора в одну сторону.
А как вращать ротор в другую сторону? Да очень просто, нужно изменить последовательность сигналов с ABCD на DCBA.
А как поворачивать ротор на конкретный заданный угол, например 30 градусов? У каждой модели шагового электромотора есть такой параметр как число шагов. У шаговиков которые я вытащил из матричных принтеров этот параметр 200 и 52, т.е. чтобы совершить полный оборот 360 градусов одним двигателям нужно пройти 200 шагов а другим 52. Получается чтобы повернуть ротор на угол 30 градусов, нужно пройти:
-в первом случае 30:(360:200)=16,666... (шагов) можно округлить до 17 шагов;
-во втором случае 30:(360:52)=4,33... (шага), можно округлить до 4 шагов.
Как видите есть достаточно большая погрешность, можно сделать вывод что чем больше шагов у мотора тем меньше погрешность. Погрешность можно уменьшать если использовать полушаговый или микрошаговый режим работы или механическим способом - использовать понижающий редуктор в этом случае страдает скорость движения.
Как управлять скоростью вращения ротора? Достаточно изменить длительность импульсов подаваемых на входы ABCD, чем длиннее импульсы по оси времени, тем меньше скорость вращения ротора.
Полагаю этой информации будет достаточно чтобы иметь теоретическое представление о работе шаговых электромоторов, все остальные знания можно будет получить экспериментируя.
И так перейдем к схемотехнике. Как работать с шаговым двигателем мы разобрались, осталось подключить его к Arduino и написать управляющую программу. К сожалению напрямую подключить обмотки мотора к выходам нашего микроконтроллера невозможно по одной простой причине - нехватка мощности. Любой электромотор пропускает через свои обмотки достаточно большой ток, а к микроконтроллеру можно подключить нагрузку не более 40 mA (параметры ArduinoMega 2560) . Что же делать если есть необходимость управлять нагрузкой например 10A да еще и напряжением 220В? Эту проблему можно решить если между микроконтроллером и шаговым двигателем интегрировать силовую электрическую схему, тогда можно будет управлять хоть трехфазным электромотором который открывает многотонный люк в ракетную шахту:-). В нашем случае люк в ракетную шахту открывать не нужно, нам нужно всего лишь заставить работать шаговый мотор и в этом нам поможет драйвер шагового двигателя. Можно конечно купить готовые решения, на рынке их очень много, но я буду делать свой собственный драйвер. Для этого мне понадобятся силовые ключевые полевые транзисторы Mosfet, как я уже говорил эти транзисторы идеально подходят для сопряжения Arduino с любыми нагрузками.
На рисунке ниже представлена электрическая принципиальная схема контроллера шагового двигателя.

В качестве силовых ключей я применил транзисторы IRF634B максимальное напряжение исток-сток 250В, ток стока 8,1А, этого более чем достаточно для моего случая. Со схемой более менее разобрались будем рисовать печатную плату. Рисовал в встроенном в Windows редакторе Paint, скажу это не самая лучшая затея, в следующий раз буду использовать какой-нибудь специализированный и простой редактор печатных плат. Ниже представлен рисунок готовой печатной платы.

Далее это изображение в зеркальном отражении распечатываем на бумаге при помощи лазерного принтера. Яркость печати лучше всего сделать максимальной, а бумагу нужно использовать не обычную офисную а глянцевую, подойдут обычные глянцевые журналы. Берем лист и печатаем поверх имеющегося изображения. Далее получившуюся картинку прикладываем к заранее подготовленному куску фольгированного стеклотекстолита и хорошенько проглаживаем утюгом в течении 20 минут. Утюг нужно нагреть до максимальной температуры.
Как подготовить текстолит? Во первых его нужно отрезать по размеру изображения печатной платы (при помощи ножниц по металлу или ножовкой по металлу), во вторых зашкурить края мелкой наждачной бумагой, чтобы не осталось заусенцев. Также необходимо пройтись наждачкой по поверхности фольги, снять окислы, фольга приобретет ровный красноватый оттенок. Далее поверхность обработанную наждачной бумагой нужно протереть ваткой смоченной в растворитель (используйте 646 растворитель он меньше воняет).
После прогрева утюгом, тонер с бумаги запекается на поверхность фольгированного стеклотекстолита в виде изображения контактных дорожек. После этой операции плату с бумагой необходимо остудить до комнатной температуры и положить в ванночку с водой примерно на 30 минут. За это время бумага раскиснет и ее нужно аккуратно скатать подушечками пальцев с поверхности текстолита. На поверхности останутся ровные черные следы в виде контактных дорожек. Если у вас не получилось перенести изображение с бумаги и у вас есть огрехи, тогда следует смыть тонер с поверхности текстолита растворителем и повторить все заново. У меня все получилось с первого раза.
После получения качественного изображения дорожек, необходимо вытравить лишнюю медь, для этого нам понадобится травильный раствор который мы приготовим сами. Раньше для травления печатных плат я использовал медный купорос и обычную поваренную соль в соотношении на 0,5 литра горячей воды по 2 столовые ложки с горкой медного купороса и поваренной соли. Все это тщательно размешивалось в воде и раствор готов. Но в этот раз попробовал иной рецепт, очень дешевый и доступный.
Рекомендуемый способ приготовления травильного раствора:
В 100 мл аптечной 3% перекиси водорода растворяется 30 г лимонной кислоты и 2 чайные ложки поваренной соли. Этого раствора должно хватить для травления площади 100 см2. Соль при подготовке раствора можно не жалеть. Так как она играет роль катализатора и в процессе травления практически не расходуется.
После приготовления раствора, печатную плату необходимо опустить в емкость с раствором и наблюдать за процессом травления, тут главное не передержать. Раствор съест непокрытую тонером поверхность меди, как только это произойдет плату необходимо достать и промыть холодной водой, далее ее нужно просушить и снять с поверхности дорожек тонер при помощи ватки и растворителя. Если в вашей плате предусмотрены отверстия для крепления радиодеталей или крепежа, самое время просверлить их. Я опустил эту операцию по причине того что это всего лишь макетный драйвер шагового двигателя, предназначенный для освоения новых для меня технологий.
Приступаем к лужению дорожек. Это необходимо сделать чтобы облегчить себе работу при пайке. Раньше я лудил при помощи припоя и канифоли, но скажу это "грязный" способ. От канифоли много дыма и шлака на плате который нужно будет смывать растворителем. Я применил другой способ, лужение глицерином. Глицерин продается в аптеках и стоит копейки. Поверхность платы необходимо протереть ваткой смоченной в глицерине и наносить припой паяльником точными мазками. Поверхность дорожек покрывается тонким слоем припоя и остается чистой, лишний глицерин можно удалить ваткой или промыть плату в воде с мылом. К сожалению у меня нет фотографии полученного результата, после лужения, но получившееся качество впечатляет.
Далее необходимо припаять все радиодетали на плату, для пайки SMD компонентов я использовал пинцет. В качестве флюса использовал глицерин. Получилось очень даже аккуратно.
Результат налицо. Конечно после изготовления плата выглядела лучше, на фото она уже после многочисленных экспериментов (для этого она и создавалась).



Итак наш драйвер шагового двигателя готов! Теперь переходим к самому интересному к практическим экспериментам. Припаиваем все провода подключаем источник питания и пишем управляющую программу для Arduino.
Среда разработки Arduino богата на различные библиотеки, для работы с шаговым двигателем предусмотрена специальная библиотека Stepper.h, ее мы и будем использовать. Как пользоваться средой разработки Arduino и описывать синтаксис языка программирования я не стану, эту информацию вы можете посмотреть на сайте http://www.arduino.cc/ , там же описание всех библиотек с примерами в том числе и описание Stepper.h.


Листинг программы:
/*
* Тестовая программа для шаговика
*/
#include
#define STEPS 200

Stepper stepper(STEPS, 31, 33, 35, 37);

void setup()
{
stepper.setSpeed(50);
}

void loop()
{
stepper.step(200);
delay(1000);
}

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

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

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

Шаговый двигатель представляет собой электрическую машину, предназначенную для преобразования электрической энергии сети в механическую энергию. Конструктивно состоит из обмоток статора и магнитомягкого или магнитотвердого ротора. Отличительной особенностью шагового двигателя является дискретное вращение, при котором заданному числу импульсов соответствует определенное число совершаемых шагов. Наибольшее применение такие устройства получили в станках с ЧПУ, робототехнике, устройствах хранения и считывания информации.

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

Преимущества и недостатки шагового электродвигателя

К преимуществам эксплуатации шагового двигателя можно отнести:

  • В шаговых электродвигателях угол поворота соответствует числу поданных электрических сигналов, при этом, после остановки вращения сохраняется полный момент и фиксация;
  • Точное позиционирование – обеспечивает 3 – 5% от установленного шага, которая не накапливается от шага к шагу;
  • Обеспечивает высокую скорость старта, реверса, остановки;
  • Отличается высокой надежностью за счет отсутствия трущихся компонентов для токосъема, в отличии от коллекторных двигателей;
  • Для позиционирования шаговому двигателю не требуется обратной связи;
  • Может выдавать низкие обороты для непосредственно подведенной нагрузки без каких-либо редукторов;
  • Сравнительно меньшая стоимость относительно тех же ;
  • Обеспечивается широкий диапазон управления скоростью оборотов вала за счет изменения частоты электрических импульсов.

К недостаткам применения шагового двигателя относятся:

  • Может возникать резонансный эффект и проскальзывание шагового агрегата;
  • Существует вероятность утраты контроля из-за отсутствия обратной связи;
  • Количество расходуемой электроэнергии не зависит от наличия или отсутствия нагрузки;
  • Сложности управления из-за особенности схемы

Устройство и принцип работы

Рис. 1. Принцип действия шагового двигателя

На рисунке 1 изображены 4 обмотки, которые относятся к статору двигателя, а их расположение устроено так, что они находятся под углом 90º относительно друг друга. Из чего следует, что такая машина характеризуется размером шага в 90º.

В момент подачи напряжения U1 в первую обмотку происходит перемещение ротора на те же 90º. В случае поочередной подачи напряжения U2, U3, U4 в соответствующие обмотки, вал продолжит вращение до завершения полного круга. После чего цикл повторяется снова. Для изменения направления вращения достаточно изменить очередность подачи импульсов в соответствующие обмотки.

Типы шаговых двигателей

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

По конструкции ротора

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

Реактивный

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


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

С постоянными магнитами

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


Гибридные

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


Преимущества гибридного шагового двигателя заключатся в его высокой точности, плавности и скорости перемещения, малым шагом – от 0,9 до 5°. Их применяют для высококлассных станков ЧПУ, компьютерных и офисных приборах и современной робототехнике. Единственным недостатком считается относительно высокая стоимость.

Для примера разберем вариант гибридных ШД на 200 шагов позиционирования вала. Соответственно каждый из цилиндров будет иметь по 50 зубцов, один из них является положительным полюсом, второй отрицательным. При этом каждый положительный зубец расположен напротив паза в отрицательном цилиндре и наоборот. Конструктивно это выглядит так:


Из-за чего на валу шагового двигателя получается 100 перемежающихся полюсов с отличной полярностью. Статор также имеет зубцы, как показано на рисунке 6 ниже, кроме промежутков между его компонентами.


Рис. 6. Принцип работы гибридного ШД

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

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

По виду обмоток

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

Униполярный

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


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


Биполярный

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


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

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

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

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

Типичные схемы подключения ШД

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


Схемы подключения различных типов шаговых двигателей

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

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

Управление шаговым двигателем

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

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


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


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


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

Без контроллера

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


Как видите, от источника питания V напряжение подается на мост. При попарном включении контактов S1 – S4 или S3 – S2 будет происходить движение тока через обмотки двигателя. Что и обусловит вращение в ту или иную сторону.

С контроллером

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


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

Популярные схемы управления ШД


Схема управления от контроллера с дифференциальным выходом

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


Схема управления от контроллера с выходом типа «открытый коллектор»

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

Простейший драйвер шагового двигателя своими руками

Чтобы собрать схему драйвера в домашних условиях могут пригодиться некоторые элементы от старых принтеров, компьютеров и другой техники. Вам понадобятся транзисторы, диоды, резисторы (R) и микросхема (RG).


Для построения программы руководствуйтесь следующим принципом: при подаче на один из выводов D логической единицы (остальные сигнализируют ноль) происходит открытие транзистора и сигнал проходит к катушке двигателя. Таким образом, выполняется один шаг.

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

Полезное видео



07-05-2009

Инструменты:

  • Клеевой пистолет
  • Кусачки
  • Ножницы
  • Принадлежности для пайки
  • Краска

Для контроллера:

  • 1 разъем DB-25 - провод
  • 1 цилиндрическое гнездо для питания постоянного тока Для испытательного стенда
  • 1 стержень с резьбой
  • 1 подходящая под стержень гайка - разные шайбы и шурупы - куски древесины

Для управляющего компьютера:

  • 1 старый компьютер (или ноутбук)
  • 1 копия TurboCNC (отсюда)

Шаг 2.

Берем детали от старого сканера. Чтобы построить собственный ЧПУ контроллер нужно для начала извлечь из сканера шаговый двигатель и плату управления. Здесь не приведено никаких фотографий, потому что каждый сканер выглядит по-своему, но обычно нужно просто снять стекло и вывернуть несколько винтов. Кроме двигателя и платы можно оставить еще металлические стержни, которые потребуются для тестирования шагового двигателя.

Шаг 3.

Извлекаем микросхему из платы управления Теперь нужно найти на плате управления шаговым двигателем микросхему ULN2003. Если вы не смогли обнаружить ее на своем устройстве, ULN2003 можно купить отдельно. Если она есть, ее нужно выпаять. Это потребует некоторого умения, но не так уж сложно. Сначала при помощи отсоса удалите как можно больше припоя. После этого осторожно просуньте под микросхему конец отвертки. Осторожно прикоснитесь концом паяльника к каждому выводу, продолжая при этом нажимать на отвертку.

Шаг 4.

Пайка Теперь нам нужно припаять микросхему на макетную плату. Припаяйте к плате все выводы микросхемы. На показанной здесь макетной плате имеется две шины электропитания, поэтому положительный вывод ULN2003 (смотрите схему и на рисунке ниже) припаивается к одной из них, а отрицательный - к другой. Теперь, нужно соединить вывод 2 коннектора параллельного порта с выводом 1 ULN2003. Вывод 3 коннектора параллельного порта соединяется с выводом 2 ULN2003, вывод 4 - с выводом 3 ULN2003 и вывод 5 - с выводом 4 ULN2003. Теперь вывод 25 параллельного порта припаивается к отрицательной шине питания. Далее к управляющему устройству припаивается мотор. Делать это придется путем проб и ошибок. Можно просто припаять провода так, чтобы потом цеплять на них крокодилы. Еще можно использовать клеммы с винтовым креплением или что-нибудь подобное. Просто припаяйте провода к выводам 16, 15, 14 и 13 микросхемы ULN2003. Теперь припаяйте провод (желательно черный) к положительной шине питания. Управляющее устройство почти готово. Наконец, подсоедините к шинам электропитания на макетной плате цилиндрическое гнездо для питания постоянного тока. Чтобы провода не могли отломаться, их закрепляют клеем из пистолета.

Шаг 5.

Установка программного обеспечения Теперь о программном обеспечении. Единственная вещь, которая точно будет работать с вашим новым устройством - это Turbo CNC. Скачайте его . Распакуйте архив и запишите на CD. Теперь, на компьютере, который вы собираетесь использовать для управления, перейдите на диск C:// и создайте в корне папку "tcnc". Затем, скопируйте файлы с CD в новую папку. Закройте все окна. Вы только что установили Turbo CNC.

Шаг 6.

Настройка программного обеспечения Перезагрузите компьютер чтобы перейти к работе в MS-DOS. В командной строке наберите "C: cncTURBOCNC". Иногда лучше использовать загрузочный диск, тогда копия TURBOCNC помещается на него и нужно набирать, соответственно "A: cncTURBOCNC". Возникнет экран, похожий на изображенный на рис. 3. Нажмите пробел. Теперь вы находитесь в главном меню программы. Нажмите F1, и при помощи клавиш со стрелками выберите меню "Configure". При помощи клавиш со стрелками выберите "number of axis". Нажмите Enter. Введите количество осей, которые будут использоваться. Поскольку у нас только один мотор, выбираем "1". Нажмите Enter чтобы продолжить. Снова нажмите F1 и в меню "Configure" выберите пункт "Configure axes", затем дважды нажмите Enter.

Появится следующий экран. Нажимайте Tab пока не перейдете к ячейке "Drive Type". При помощи стрелки вниз выберите пункт "Phase". Снова при помощи Tab выберите ячейку "Scale". Чтобы использовать калькулятор, нам нужно найти число шагов, которые двигатель делает за один оборот. Зная номер модели двигателя, можно установить на сколько градусов он поворачивается за один шаг. Чтобы найти число шагов, которые двигатель делает за один оборот, теперь нужно поделить 360 на число градусов за один шаг. Например, если мотор поворачивается за один шаг на 7,5 градусов, 360 поделить на 7,5 получится 48. Число, которое получится у вас, забейте в калькулятор шкалы (scale calculator).

Остальные настройки оставьте как есть. Нажмите OK, и скопируйте число в ячейке Scale в такую же ячейку на другом компьютере. В ячейке Acceleration установите значение 20, поскольку установленных по умолчанию 2000 слишком много для нашей системы. Начальную скорость установите равной 20, а максимальную - 175. Нажимайте Tab пока не дойдете до пункта "Last Phase". Установите в нем значение 4. Нажимайте Tab пока не дойдете до первого ряда иксов.

Скопируйте следующее в четыре первых ячейки:

1000XXXXXXXX
0100XXXXXXXX
0010XXXXXXXX
0001XXXXXXXX

Остальные ячейки оставьте без изменений. Выберите OK. Теперь вы настроили программное обеспечение.

Шаг 7.

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

Чтобы закрепить двигатель, имевшийся в наличии, использовали два отрезка стержня с резьбой 1/8. Брусок с прикрепленным двигателем надевается на свободный конец стальных прутов. Снова закрепите их шурупами. Сквозь третье отверстие на первом бруске проденьте стержень с резьбой. Заверните на стержне гайку. Проденьте стержень сквозь отверстие во втором бруске. Поворачивайте стержень до тех пор, пока он не пройдет сквозь все отверстия и не дойдет до вала двигателя. Соедините вал двигателя и стержень при помощи шланга и зажимов из проволоки. На втором бруске гайка удерживается при помощи дополнительных гаек и винтов. В завершение, отрежьте брусок дерева для подставки. Привинтите ее шурупами ко второму бруску. Проверьте, установлена ли подставка ровно на поверхности. Регулировать положение подставки на поверхности можно при помощи дополнительных винтов и гаек. Так делается вал для тестовой системы.

Шаг 8.

Подсоединяем и тестируем двигатель Теперь нужно соединить двигатель с контроллером. Во-первых, соедините общий провод (смотрите документацию к двигателю) с проводом, который был припаян к положительной шине питания. Другие четыре провода соединяются путем проб и ошибок. Соедините их все, и затем меняйте порядок соединения, если ваш двигатель делает два шага вперед и один назад или что-либо подобное. Для проведения тестирования подключите 12 В 350 мА источник питания постоянного тока в цилиндрическое гнездо. Затем соедините разъем DB25 c компьютером. В TurboCNC проверьте как соединен двигатель. В результате тестирования и проверки правильного подсоединения двигателя у вас должен получиться полностью работоспособный вал. Чтобы проверить масштабирование вашего устройства, прикрепите к нему маркер и запустите тестовую программу. Измерьте получившуюся линию. Если длина линии составляет порядка 2-3 см, устройство работает правильно. В противном случае, проверьте вычисления в шаге 6. Если у вас все получилось, поздравляем, самое трудное уже позади.


Шаг 9.

Изготовление корпуса

Часть 1

Изготовление корпуса - это завершительный этап. Присоединимся к защитникам природы и сделаем его из вторсырья. Тем более, что контроллер у нас тоже не с магазинных полок. У представленного вашему вниманию образца плата имеет размер 5 на 7,5 см, поэтому корпус будет размером 7,5 на 10 на 5 см, чтобы оставить достаточно места для проводов. Из картонной коробки вырезаем стенки. Вырезаем 2 прямоугольника размером 7,5 на 10 см, еще 2 размером 5 на 10 см и еще 2 размером 7,5 на 5 см (см. рисунки). В них нужно вырезать отверстия для разъемов. Обведите контуры разъема параллельного порта на одной из 5 х 10 стенок. На этой же стенке обведите контуры цилиндрического гнезда для питания постоянного тока. Вырежьте по контурам оба отверстия. То, что вы будете делать дальше, зависит от того, припаивали ли вы к проводам двигателя разъемы. Если да, то закрепите их снаружи второй пока пустой стенки размером 5 х 10. Если нет, проткните в стенке 5 отверстий для проводов. При помощи клеевого пистолета соедините все стенки вместе (кроме верхней, см. рисунки). Корпус можно покрасить.

Шаг 10.

Изготовление корпуса

Часть 2

Теперь нужно приклеить все компоненты внутрь корпуса. Убедитесь, что на разъемы попало достаточно много клея, потому что они будут подвергаться большим нагрузкам. Чтобы коробка оставалась закрытой, нужно сделать защелки. Из пенопласта вырежьте пару ушек. Затем вырежьте пару полос и четыре небольших квадратика. Приклейте по два квадратика к каждой из полос как показано на рисунке. Приклейте ушки по обеим сторонам корпуса. Сверху коробки приклейте полосы. Этим завершается изготовление корпуса.

Шаг 11.

Возможные применения и заключение Этот контроллер можно применять как: - ЧПУ устройство - плоттер - или любую другую вещь, которой нужно точное управление движением. - добавление- Здесь приведены схема и инструкции по изготовлению контроллера с тремя осями. Чтобы настроить программное обеспечение, следуйте вышеуказанным шагам, но в поле "number of axis" введите 3.

Для настройки первой оси делайте все как было сказано выше, для второй оси тоже, но в строках первых четырех фаз введите следующее:

"XXXX1000XXXX
XXXX0100XXXX
XXXX0010XXXX
XXXX0001XXXX"

Для третьей оси в строках первых четырех фаз введите:

"XXXXXXXX1000
XXXXXXXX0100
XXXXXXXX0010
XXXXXXXX0001"

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться .

Часть 2. Схемотехника систем управления

Выше были рассмотрены наиболее важные общие вопросы использования шаговых двигателей, которые помогут в их освоении. Но, как гласит наша любимая украинская поговорка: «Не повірю поки не провірю» («Не поверю, пока не проверю»). Поэтому перейдем к практической стороне вопроса. Как уже отмечалось, шаговые двигатели - это удовольствие не из дешевых. Но они имеются в старых принтерах, считывателях гибких и лазерных дисков, например, SPM-20 (шаговый двигатель для позиционирования головки в дисководах 5"25 Mitsumi) или EM-483 (от принтера Epson Stylus C86), которые можно найти у себя в старом хламе или купить за копейки на радиобазаре. Примеры таких двигателей представлены на Рисунке 8.

Наиболее простыми для начального освоения являются униполярные двигатели. Причина кроется в простоте и дешевизне их драйвера управления обмотками. На Рисунке 9 приведена практическая схема драйвера, использованного автором статьи для униполярного шагового двигателя серии P542-M48 .

Естественно, что выбор типа транзистора для ключей управления обмотками должен происходить с учетом максимального тока коммутации, а его подключение учитывать необходимость заряда/разряда емкости затвора. В ряде случаев прямое соединение MOSFET с ИМС коммутатора может быть недопустимым. Как правило, в затворах устанавливаются последовательно включенные резисторы небольших номиналов. Но в ряде случае необходимо предусмотреть еще и соответствующий драйвер для управления ключами, который обеспечит заряд/разряд их входной емкости. В некоторых решениях предлагается в качестве ключей использовать биполярные транзисторы. Это подходит только для очень маломощных двигателей с небольшим током обмоток. Для рассматриваемого двигателя с рабочим током обмоток I = 230 мА ток управления по базе ключа должен составить, по крайней мере, 15 мА (хотя для нормальной работы ключа необходимо, чтобы ток базы равнялся 1/10 рабочего, то есть 23 мА). Но такой ток от микросхем серии 74HCхх забрать невозможно, поэтому потребуются дополнительные драйверы. Как хороший компромисс, можно использовать IGBT, сочетающие в себе достоинства полевых и биполярных транзисторов.

С точки зрения автора статьи, самым оптимальным для управления коммутацией обмоток двигателей небольшой мощности является использование подходящих по току и сопротивлению открытого канала R DC(ON) MOSFET, но с учетом рекомендаций, описанных выше. Мощность, рассеиваемая на ключах для выбранного в качестве примера двигателя серии P542-M48, при полной остановке ротора не превысит

P VT = R DC(ON) × I 2 = 0.25 × (0.230) 2 = 13.2 мВт.

Еще одним важным моментов является правильный выбор так называемых снаберных диодов, шунтирующих обмотку двигателя (VD1…VD4 на Рисунке 9). Назначение этих диодов - гасить ЭДС самоиндукции, возникающую при выключении управляющих ключей. Если диоды выбраны неверно, то неизбежен выход из строя транзисторных ключей и устройства в целом. Обратите внимание, что в мощные MOSFET такие диоды, как правило, уже встроены.

Режим управления двигателем задается коммутатором. Как уже было отмечено выше, наиболее удобным и эффективным является управление с перекрытием фаз (Рисунок 4б). Такой режим легко реализуется при помощи триггеров. Практическая схема универсального коммутатора, который использовал автор статьи как в ряде отладочных модулей (в том числе, и с приведенным выше драйвером), так и для практических применений, приведена на Рисунке 10.

Схема на Рисунке 10 пригодна для любых типов двигателей (униполярных и биполярных). Частота вращения двигателя задается внешним тактовым генератором (скважность любая), сигнал с которого подается на вход «ШАГИ», а направление вращения устанавливается через вход «НАПРАВЛЕНИЕ». Оба сигнала имеют логические уровни и, если для их формирования используются выходы с открытым коллектором, то потребуются соответствующие резисторы подтяжки (на Рисунке 10 они не показаны). Временная диаграмма работы коммутатора приведена на Рисунке 11.

Хочу обратить внимание читателей: в Интернете вы могли встретить похожую схему, выполненную не на D-триггерах, а на JK-триггерах. Будьте внимательны! В ряде этих схем допущена ошибка в подключении ИМС. Если нет необходимости в реверсе, то схема коммутатора может быть значительно упрощена (см. Рисунок 12), при этом частота вращения останется неизменной, а диаграмма управления будет аналогичной той, которая приведена на Рисунке 11 (осциллограммы до переключения очередности фаз).

Поскольку особых требований к сигналу «ШАГИ» не предъявляется, для его формирования может использоваться любой подходящий по уровням выходного сигнала генератор. Для своих отладочных модулей автор использовал генератор на базе ИМС (Рисунок 13).

Для питания собственно двигателя можно использовать схему, приведенную на Рисунке 14, а схему коммутатора и генератора питать или от отдельного источника питания +5 В или через дополнительный маломощный стабилизатор. Земли силовой и сигнальной частей в любом случае необходимо разделить.

Схема на Рисунке 14 обеспечивает подачу двух стабильных по уровню напряжений для питания обмоток двигателя: 12 В в рабочем режиме и 6 В в режиме удержания. (Формулы, необходимые для расчета выходного напряжения, приведены в ). Рабочий режим включается подачей высокого логического уровня на контакт «ТОРМОЗ» разъема Х1. Допустимость снижения напряжения питания определяется тем, что, как уже отмечалось в первой части статьи, момент удержания шаговых двигателей превышает момент вращения. Так, для рассматриваемого двигателя P542-M48 момент удержания с редуктором 25:6 равен 19.8 Н·см, а момент вращения всего 6 Н·см. Этот подход позволяет при остановке двигателя уменьшить потребление мощности с 5.52 Вт до 1.38 Вт! Полное отключение двигателя осуществляется подачей высокого логического уровня на контакт «ВКЛ/ВЫКЛ» разъема Х1.

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

Примечание: В этом варианте использование резисторов подтяжки недопустимо!

В качестве дросселя автор использовал катушку SDR1006-331K (Bourns). Общее питание формирователя напряжения для обмоток двигателя можно уменьшить до 16 - 18 В, что не скажется на его работе. Еще раз обращаю внимание: при самостоятельном расчете не забудьте учитывать, что формирователь обеспечивает режим с перекрытием фаз, то есть необходимо закладываться на номинальный ток схемы питания, равный удвоенному максимальному току обмоток при выбранном напряжении питания.

Задача управления биполярными двигателями более сложна. Основная проблема в драйвере. Для этих двигателей требуется драйвер мостового типа, и делать его, тем более в современных условиях, на дискретных элементах - неблагодарная задача. Да, этого и не требуется, так как имеется очень большой выбор специализированных ИМС. Все эти ИМС условно можно свести к двум типам. Первый - весьма популярная у любителей робототехники ИМС L293D или ее варианты от . Они относительно недороги и подходят для управления маломощными двигателями с током обмоток до 600 мА. ИМС имеют защиту от перегрева; устанавливать ее необходимо с обеспечением теплоотвода, которым служит фольга печатной платы . Второй тип - это уже знакомая читателям по публикации в ИМС LMD18245 .

Автор использовал драйвер L293DD в схеме для управления биполярным двигателем малой мощности типа 20M020D2B 12 В/0.1 А во время изучения проблемы использования шаговых двигателей. Этот драйвер удобен тем, что содержит четыре полумостовых ключа, поэтому для управления биполярным шаговым двигателем требуется всего одна ИМС. Полная схема, приведенная в и многократно повторенная на интернет-сайтах, пригодна для использования в качестве тестовой платы. На Рисунке 15 показано включение ИМС драйвера (с привязкой к коммутатору из Рисунка 10), поскольку именно эта часть сейчас представляет для нас интерес, а Figure 6 (Bipolar Stepping-Motor Control) из спецификации не совсем понятна начинающему пользователю. Она вводит в заблуждение, например, тем, что показаны внешние диоды, которые на самом деле встроены в ИМС и прекрасно справляются с обмотками маломощных двигателей. Естественно, что драйвер L293D может работать с любым коммутатором. Выключается драйвер логическим нулем по входу R.

Примечание: ИМС L293, в зависимости от изготовителя и суффиксов, указывающих на тип корпуса, имеют различия в нумерации и количестве выводов!

В отличие от L293DD, LMD18245 является не четырех-, а двухканальным драйвером, поэтому для реализации схемы управления требуются две ИМС. Драйвер LMD18245 выполнен по DMOS технологии, содержит схемы защиты от перегрева, короткого замыкания и выполнен в удобном 15-выводном корпусе ТО-220, что позволяет легко отводить от его корпуса излишнее тепло. В качестве задающего генератора использовалась схема, приведенная ранее на Рисунке 13, но с увеличенным до 4.7 кОм сопротивлением резистора R2. Для подачи одиночных импульсов используется кнопка BH1, позволяющая сдвинуть ротор двигателя на один шаг. Направление вращения ротора определяется положением переключателя S1. Включение и выключение двигателя осуществляется выключателем S2. В положение «ВЫКЛ» ротор двигателя освобождается, и его вращение импульсами управления становится невозможным. Режим удержания уменьшает максимальный ток, потребляемый обмотками двигателя, с двух до одного ампера. Если импульсы управления не подаются, то ротор двигателя остается в зафиксированном положении с пониженной вдвое мощностью потребления. Если же импульсы подаются, то вращение двигателя в этом режиме осуществляется с пониженным на малых скоростях вращения моментом. Необходимо заметить, что поскольку при полношаговом управлении «two-phase-on » включены обе обмотки, ток двигателя удваивается, а схема драйвера должна рассчитываться исходя из требований обеспечения заданного тока двух обмоток (резисторы R3, R8).

Схема содержит описанный ранее двунаправленный двухфазовый формирователь на D-триггерах (Рисунок 10). Максимальный ток драйвера задается резистором, включенным в цепь контакта 13 ИМС LMD18245 (резисторы R3, R8), и двоичным кодом на контактах цепи управления тока (выводы 8, 7, 6, 4). Формула для расчета максимального тока приведена в спецификации на драйвер . Ограничение тока осуществляется импульсным методом. При достижении максимально заданной величины тока выполняется его «нарезка» («chopping»). Параметры этой «нарезки» задаются параллельной RC цепочкой, подключенной к выводу 3 драйвера. Достоинством ИМС LMD18245 является то, что токозадающий резистор, не включенный непосредственно в цепь двигателя, имеет достаточно большой номинал и маленькую рассеиваемую мощность. Для рассматриваемой схемы максимальный ток в амперах, согласно приведенной в формуле, составляет:

V DAC REF - опорное напряжение ЦАП (в рассматриваемой схеме 5 В);
D - задействованные разряды ЦАП (в этом режиме используются все 16 разрядов);
R S - сопротивление токоограничивающего резистора (R3 = R8 = 10 кОм).

Соответственно, в режиме удержания (поскольку используются 8 разрядов ЦАП), максимальный ток составит 1 А.

Как можно видеть из предложенной статьи, шаговые двигатели хоть и сложнее в управлении, чем коллекторные, но не настолько, чтобы отказываться от них. Как говорили еще древние римляне: «Дорогу осилит идущий». Естественно, что на практике для многих приложений управление шаговыми двигателями целесообразно делать на основе микроконтроллеров, которые легко сформируют нужные команды для драйверов и выполнят роль коммутаторов. Дополнительную информацию и более детальное рассмотрение проблем, связанных с применением шаговых двигателей, кроме как по упомянутым выше ссылкам [ , , ], можно почерпнуть из ставшей уже классикой монографии Кенио Такаши и на специализированных интернет-сайтах, например, .

Есть еще один момент, на который автор статьи хотел бы обратить внимание читателей. Шаговые двигатели, как впрочем, и все двигатели постоянного тока, обратимы. Что имеется ввиду? Если приложить внешнее вращающее усилие к ротору, то с обмоток статора можно снять ЭДС, то есть двигатель становится генератором, причем весьма и весьма эффективным. Автор статьи экспериментировал с этим вариантом использования шаговых двигателей во время работы консультантом по силовой электронике в компании, занимающейся ветроэнергетикой. Необходимо было на простых макетах отработать ряд практических решений. По наблюдению автора статьи, эффективность шагового двигателя в таком применении была выше, чем у аналогичного по параметрам и габаритам коллекторного двигателя постоянного тока. Но это уже другая история.

  • Rentyuk Vladimir «Control stepper motors in both directions» EDN March 18, 2010
  • Кенио Такаши. Шаговые двигатели и их микропроцессорные системы управления: Пер. с англ., М.: Энергоатомиздат, 1987 - 199 с.