Как запустить шаговый двигатель принтера его драйвером
МК-управление микрошаговым драйвером LB1847 из старого принтера
Данная статья родилась в помыслах изготовить себе трёх-координатный микростанок с ЧПУ для выполнения некоторых минимальных задач по сверлению, фрезерованию и вырезке печатных плат.
В течение некоторого времени мне очень часто на запчасти отдают старые матричные и струйные принтеры по причинам того, что хозяева решили купить себе новый и более совершенный принтер или МФУ, ибо старенький свой принтер уже морально устарел или его ремонт будет стоить соизмеримо с приобретением нового принтера, а старый попросту выкинули.
После разборки и выброса ненужных пластмассовых деталей и внутренней механики, я себе оставлял только печатные платы, шаговые двигатели с пасиками и стальные направляющие, по которым когда-то бегала печатающая головка. Давным-давно я посматривал в них на интересную микросхему, которая питает тамошние шаговые двигатели.
Просто запросив в поиске даташит на данную микросхему, я увидел в ней не просто драйвер с четырьмя парами ключей, а полноценный микрошаговый ШИМ контроллер.
Не буду заниматься комментированием оригинального даташита, вы просто можете запросить его в поиске, найти во вложении к статье и самостоятельно изучить характеристики. Я же двинусь далее.
Схема подключения довольно простая.
В считанные минуты была нарисована печатка и при помощи ЛУТа сделана плата, обвязку из резисторов, конденсаторов и диодов Шоттки, тоже снял со старой платы:
Далее это все было подключено к одной из моих самодельных тестовых плат с микроконтроллером Atmega32. Конечно, можно использовать любую доступную вам, но нужно учитывать, что должно хватать выводов для подключения, так как на управление используется аж 12 линий.
Ну и пусть, просто подключим их на питание микросхемы и забудем про них.
Так мы сократили количество используемых выводов до 10. При дальнейшем исследовании этой таблицы явно заметно, что вывод ENABLE получая логическую «1» (просто обесточивает канал, давая возможность другому каналу притянуть к себе магнитный ротор на максимальном токе), и при этом не имеет значения в какой фазе этот канал находится.
Сразу заметно, что та самая единица появляется тогда как на входах 2-3-4 каждого канала присутствует логический «0». Тут просто вспомним о справочнике микросхем логики и найдем нужный для нас логический элемент. Нам понадобится два элемента 3ИЛИ-НЕ, выбираем микросхему, импортная 7427, отечественная К155ЛЕ4 или подобные.
Обвязку полного подключения LB1847 не изображал, так как она ничем не отличается от той, что в даташите. На Vref временно поставил проволочный подстроечный резистор.
Как видно, теперь мы используем только 8 выводов для управления, чего вполне достаточно для использования одного полного порта микроконтроллера.
Теперь приступим к программированию нашего микроконтроллера. Для этого нам потребуется предварительно рассчитать значение выхода целого порта микроконтроллера для каждого микрошага.
Тут я просто использовал программу Excell, где создал таблицу и встроенными формулами рассчитал значение PORTB для режима Phase 2 W1-2 (учтите, что пример в даташите указан только для одной фазы, необходимо продублировать его для второй с изменением направления тока через обмотки ).
Сразу забегу вперед. Я изначально вдоволь наигрался как заданием статических величин по значениям перемещения вала, так и с вводом значения перемещения через порт RS232, но потом всё же захотелось вручную лицезреть сие детище и подключил энкодер, дабы насладиться механическим управлением с визуальным вращением вала шагового двигателя.
Функция опроса энкодера
Функция опроса энкодера не имеет никаких особенностей, банально читает значения с выводов и по их изменению добавляет или отнимает значение счетчика, тем самым диктуя главной программе направление на вращения. Единственное что опрос у меня сейчас проходит на частоте 100кГц, и мне было лень добавлять отдельный счетчик (три строчки программы), чтобы отсчитывать только полные щелчки оборота энкодера, да это и совсем не нужно на данной стадии тестовых испытаний.
Обработчик прерывания таймера
Аналогичная функция на обработку обратного счета для движения оси шагового двигателя в обратную сторону.
В данную функцию я ввел очень полезную величину, можно задать шаг работы двигателя от 1 до 8. Это я и хочу использовать в дальнейшем, чтобы можно было программно управлять скоростью перемещения.
Например: для холостого перемещения на пару тысяч шагов можно составить простой алгоритм, который может п лавно н ачать с одного микрошага за такт разрешения таймера, и каж дые 10 тактов поднимать на единицу пока не достигнет «8», так будет программно реализован четверть шаг (счетчик тоже будет добавлять или отнимать по 8 шагов), а далее за 100 шагов до окончания пути начать уменьшать значение перешагивания каждые 10 тактов и двигатель плавно остановится на нужном ему значении. Такая реализация программно обеспечит высокую скорость перемещения при максимальной точности перемещения вала двигателя даже под нагрузкой (старт-разгон-работа-торможение-остановка). Можно, конечно, поднять значение и до 16, в таком случае двигатель выйдет на режим полушага.
Главный цикл программы
Для проверок использовался один из биполярных шаговых двигателей с тех самых разобранных принтеров.
Он имеет шаг 7,5 градусов, что соответствует 48 шагам на полный оборот, при 32 микрошагах это выходит точность 1536 микрошагов на полный оборот вала двигателя. Если бы нам не было жалко использовать еще 2 вывода микроконтроллера, то легко можно получить 1/64 шага. А присмотревшись в конструктив этой микросхемы, думаю несложно и поболее 128 шагов сделать, только придется много расчетов произвести на усредненные значения, правда будет серьёзная нелинейность вращения, но и то что мы получили вполне достаточно, незачем нам вращение менее 0,1 градуса.
Энкодер, что я нашел у себя, имеет 24 щелчка на полный оборот, в каждом щелчке 4 импульса изменения состояния, то есть 96 импульсов на полный оборот.
Без использования энкодера программно запускал его на довольно быстрое вращение и действительно чувствовалась сила на валу при том, что я его питаю 12V вместо 24V родного питания принтера.
Вот посмотрите что из этого вышло.
При необходимости можно сохранять в энерго-независимой памяти текущие значения шага, и использовать его при отключениях устройства, только заранее привести значение к нулевому, ибо после отключения-включения устройства полушаг может провернуть вал как в одну, так и в другую сторону. Или просто использовать калибровку (например, на оптопаре или концевике) при включении устройства.
Данная статья была предварительным тестом работы микросхемы LB1847, все собрано практически на коленке, только для уточнения всех нюансов её работы. Далее планируется использовать более продвинутый микроконтроллер (скорее всего STM32) и организация одновременного управления тремя (и более) двигателями.
При необходимости можно еще дополнительно вывести на МК выводы DECAY, MD и программно управлять режимом спада тока при различных условиях.
Управление шаговым двигателем с помощью Arduino и драйвера A4988
Если вы планируете создать свой собственный 3D-принтер или станок с ЧПУ, вам нужно будет управлять несколькими шаговыми двигателями. Если использовать для этого только Arduino, то большая часть скетча будет занята кодом управления шаговыми двигателями и не останется много места для чего-то еще.
Модуль A4988 может контролировать как скорость, так и направление вращения биполярного шагового двигателя, такого как NEMA 17, использую всего два вывода контроллера.
Шаговые двигатели используют зубчатое колесо и электромагниты (катушки), позволяющие вращать ось по одному шагу за раз.
Драйвер двигателя посылает высокий импульс на соответствующую катушку, которая в свою очередь притягивает ближайший зуб зубчатого колеса, в результате чего ось двигателя проворачивается на определенный градус (шаг).
От характера управляющих импульсов зависит поведение шагового двигателя, а именно:
Микросхема драйвера шагового двигателя A4988
Модуль собран на чипе A4988. Не смотря на свой малый размер (всего 0,8 ″ × 0,6 ″), но обладает хорошими характеристиками.
Драйвер шагового двигателя A4988 имеет высокую выходную мощность (до 35 В и 2 А) и позволяет управлять одним биполярным шаговым двигателем с выходным током до 2 А на катушку, например NEMA 17.
Для удобства работы драйвер имеет встроенный транслятор. Использование транслятора позволило уменьшить количество управляющих контактов до 2, один для управления шагами, а другой для управления направлением вращения.
Драйвер предлагает 5 различных разрешений шага, а именно:
Распиновка драйвера A4988
Драйвер A4988 имеет всего 16 контактов, которые связывают его с внешним миром. Распиновка у A4988 следующая:
Давайте ознакомимся со всеми контактами по очереди.
Выводы питания
На самом деле A4988 требует подключения двух источников питания.
VDD и GND используется для управления внутренней логической схемой. Напряжение питания должно находиться в пределах от 3 до 5,5 В.
Vmot и GND для обеспечения питания шагового двигателя. Тут напряжение в пределах от 8 до 35 В.
Согласно datasheet, для питания двигателя требуется соответствующий разделительный конденсатор рядом с платой, способный выдерживать ток 4 А.
Один из способов защитить драйвер от таких скачков — подключить электролитический конденсатор емкостью 100 мкФ (или как минимум 47 мкФ) к контактам источника питания двигателя.
Выводы выбора микрошага
Драйвер A4988 допускает использование режима микрошага. Это достигается за счет подачи питания на катушки с промежуточными уровнями тока.
Например, если вы решите управлять шаговым двигателем NEMA 17 с шагом 1,8 градуса (200 шагов на оборот) в режиме 1/4 шага, то двигатель будет выдавать 800 микрошагов на оборот.
Драйвер A4988 имеет три вывода селектора размера шага (разрешения), а именно: MS1, MS2 и MS3. Установив соответствующие логические уровни на эти контакты, мы можем настроить двигатели на одно из пяти ступенчатых разрешений.
По умолчанию эти три контакта подтянуты к земле внутренним резисторам. Если мы оставим эти выводы не подключенными, то двигатель будет работать в режиме полного шага.
Выводы управления
Драйвер A4988 имеет два управляющих входа, а именно: STEP и DIR.
STEP — управляет микрошагом мотора. Каждый высокий импульс, отправляемый на этот вывод, приводит двигатель в действие на количество микрошагов, заданное выводами Microstep Selection (MS1, MS2 и MS3). Чем быстрее импульсы, тем быстрее будет вращаться двигатель.
DIR — управляет направлением вращения двигателя. Если на него подать высокий уровень, то двигатель будет вращается по часовой стрелке, а если низкий — против часовой стрелки.
Если вы просто хотите, чтобы двигатель вращался только в одном направлении, то вы можете соединить вывод DIR непосредственно с VCC или GND соответственно.
Выводы STEP и DIR не подтянуты внутренними резисторами, поэтому вы не должны оставлять их не подключенными.
Выводы управления питанием A4988
A4988 имеет три различных вывода для управления состоянием питания, а именно. EN, RST и SLP.
EN — вывод включения (0)/ выключения (1) драйвера A4988. По умолчанию на этом выводе установлен низкий уровень, поэтому драйвер всегда включен.
SLP — подача на данный вывод сигнала низкого уровня переводит драйвер в спящий режим, сводя к минимуму потребление энергии. Вы можете использовать это для экономии энергии.
RST — при подаче сигнала низкого уровня все входные данные STEP игнорируются, до тех пор пока не будет установлен высокий уровень. Низкий уровень также сбрасывает драйвер, устанавливая внутренний транслятор в предопределенное состояние Home. Исходное состояние — это в основном начальное положение, с которого запускается двигатель, и оно различается в зависимости от разрешения микрошага.
Если вам не нужно использовать вывод RST, вы можете подключить его к соседнему контакту SLP / SLEEP, чтобы вывести его на высокий уровень и включить драйвер.
Выводы для подключения шагового двигателя
Выходные контакты: 1B, 1A, 2A и 2B.
К этим выводам можно подключить любой биполярный шаговый двигатель с напряжением питания от 8 до 35 В.
Каждый выходной контакт модуля может обеспечить ток до 2 А. Однако величина тока, подаваемого на двигатель, зависит от источника питания системы, системы охлаждения и настройки ограничения тока.
Система охлаждения — радиатор
Чрезмерное рассеивание мощности микросхемы драйвера A4988 приводит к повышению температуры, которая может выйти за пределы возможностей микросхемы, что, вероятно, приведет к ее повреждению.
Даже если микросхема драйвера A4988 имеет максимальный номинальный ток 2 А на катушку, микросхема может подавать только около 1 А на катушку без перегрева.
Для достижения более 1 А на катушку требуется радиатор или другой метод охлаждения.
Драйвер A4988 обычно поставляется с радиатором. Желательно установить его перед использованием драйвера.
Ограничение тока
Перед использованием драйвера нам нужно сделать небольшую настройку. Нам нужно ограничить максимальный ток, протекающий через катушки шагового двигателя, и предотвратить превышение номинального тока двигателя.
На драйвере A4988 есть небольшой потенциометр, который можно использовать для установки ограничения тока. Вы должны установить ограничение по току равным или ниже номинального тока двигателя.
Для этого есть два метода:
Способ 1:
В данном случае мы собираемся установить ограничение тока путем измерения напряжения (Vref) на выводе «ref».
ограничение тока = Vref x 2,5
Например, если ваш двигатель рассчитан на 350mA, вы должны установить опорное напряжение 0,14В.
Способ 2:
В данном случае мы собираемся установить ограничение тока, измеряя ток, протекающий через катушку двигателя.
Подключение драйвера шагового двигателя A4988 к Arduino UNO
Подключения довольно простое. Начните с подключения VDD и GND (рядом с VDD) к контактам 5V и минус на Arduino. Входные контакты DIR и STEP подключите к цифровым контактам №2 и №3 на Arduino соответственно. Шаговый двигатель подключите к контактам 2B, 2A, 1A и 1B.
Подключение или отключение шагового двигателя при включенном драйвере может привести к его повреждению.
Затем подключите вывод RST к соседнему выводу SLP/SLEEP, чтобы драйвер оставался включенным. Также держите контакты выбора микрошага отключенными, чтобы двигатель работал в полношаговом режиме.
Наконец, подключите источник питания двигателя к контактам VMOT и GND. Не забудьте установить большой развязывающий электролитический конденсатор 100 мкФ на контакты источника питания двигателя, рядом с платой.
Код Arduino — простой пример
Следующий скетч даст вам полное представление о том, как управлять скоростью и направлением вращения биполярного шагового двигателя с помощью драйвера шагового двигателя A4988, и может служить основой для более практических экспериментов и проектов.
Пояснение к скетчу:
Скетч начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR A4988. Мы также определяем stepsPerRevolution. Установите его в соответствии со спецификациями шагового двигателя.
В разделе setup() кода все контакты управления двигателем объявлены как цифровой выход.
В цикле loop() мы медленно вращаем двигатель по часовой стрелке, а затем быстро вращаем его против часовой стрелки с интервалом в секунду.
Управление направлением вращения: для управления направлением вращения двигателя мы устанавливаем вывод DIR в высокое или низкое положение. Сигнал высокого уровня вращает двигатель по часовой стрелке, а низкого — против часовой стрелки.
Скорость двигателя определяется частотой импульсов, которые мы посылаем на вывод STEP. Чем чаще импульсы, тем быстрее вращается двигатель. Импульсы — это не что иное, как установка высокого уровня, некоторое ожидание, затем установка низкого уровня и снова ожидание. Изменяя задержку между двумя импульсами, вы изменяете частоту этих импульсов и, следовательно, скорость двигателя.
Скетч Arduino — использование библиотеки AccelStepper
Управление шаговым двигателем без библиотеки идеально подходит для простых приложений с одним двигателем. Но если вы хотите управлять несколькими шаговыми двигателями, то вам понадобится библиотека.
Итак, для нашего следующего эксперимента мы будем использовать расширенную библиотеку шаговых двигателей под названием AccelStepper library. Она поддерживает:
Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.
Установка библиотеки
Чтобы установить библиотеку, перейдите в Эскиз> Include Library> Manage Libraries… Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.
Отфильтруйте результаты поиска, набрав «Accelstepper». Щелкните первую запись и выберите «Установить».
Скетч Arduino
Вот простой код, который ускоряет шаговый двигатель в одном направлении, а затем замедляется, чтобы остановиться. Как только двигатель совершает один оборот, он меняет направление вращения. И он повторяет это снова и снова.
Пояснение к скетчу:
Мы начинаем с подключения недавно установленной библиотеки AccelStepper.
Определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Устанавливаем motorInterfaceType значение 1. (1 означает внешний шаговый драйвер с выводами Step и Direction).
Затем мы создаем экземпляр библиотеки с именем myStepper.
В функции setup() мы сначала устанавливаем максимальную скорость двигателя 1000. Затем мы устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя.
Затем мы устанавливаем обычную скорость 200 и количество шагов, например, 200 (поскольку NEMA 17 совершает 200 шагов за оборот).
В функции loop() мы используем оператор If, чтобы проверить, как далеко двигателю нужно проехать (путем чтения distanceToGo), пока он не достигнет целевой позиции (moveTo). Как только distanceToGo станет равен нулю мы переключаем двигатель в противоположное направление, изменив moveTo на противоположное значение относительно его текущего положения.
Теперь в конце цикла мы вызываем функцию run(). Это самая важная функция, поскольку шаговый двигатель не будет работать, пока эта функция не будет выполнена.
3D печать для самых новеньких. От А до Я. Шаговики, драйверы и немного магнитного поля.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.
Отписаться от уведомлений вы всегда сможете в профиле автора.
В продолжение предыдущего поста для начинающих пользователей 3D принтеров.
Существующие 3D принтеры выросли из больших станков, у которых позаимствовали кинематику и способ управления, который заключается в том, что бы последовательно передавать координаты для перемещения хотенда. Такой своеобразный метод является общепринятым стандартом для управления станков с ЧПУ (числовым программным управлением). Этот язык программирования называется G-code. Язык своеобразный, и изучать его нет необходимости, перевод модели из графического вида в машинный код для перемещения хотенда по осям и подачи пластика осуществляется в программах-слайсерах. Их я опишу чуть позже, пока же хочу вернуться к физической части принтеров и рассмотреть с помощью чего же можно правильно крутить шаговыми двигателями и получать готовую модель.
1. Платы управления и как они управляют.
Которые вставляются в гнезда платы. То есть для каждого шагового двигателя, подключаемого к связке Arduino+RAMPS необходим драйвер. RAMPS поддерживает подключение до 5 шаговых двигателей.
Для управления шаговым двигателем необходимо настроить напряжение питания двигателя подстроечным резистором. Настройка производится мультиметром в режиме замера постоянного напряжения. Один щуп касается земли ( крайнего контакта на драйвере с надписью GND или же минусового провода от блока питания), другим же коснуться подстроечного резистора.
Далее нужно посчитать по формуле необходимое напряжение, исходя из тока, на который рассчитан двигатель.
Vref – пин замера напряжения для установки тока по формуле.
Current Limit – ток шагового двигателя.
Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два чёрных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.
Vref = Current Limit * 8 * (RS)
Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25
Vref = Current Limit * 8 * 0,050 = Current Limit / 2,5
Например для 17HS4401: Vref = 1,7 / 2,5 = 0,68В
Формулы для других типов драйверов приведены в этой статье.
Другие платы формата All-in-one (все на одной плате, без таких многослойных конструкций) имеют аналогичные колодки под уже ставшими столь распространенными Pololu-драйвера.
Так же, для выбора режима работы шагового двигателя между колодками для установки шаговых двигателей сделаны перемычки, замыкая которые мы выбираем тот или иной режим работы.
Режимов работы у шагового двигателя с драйверами А4988 всего 5: полный шаг, 1/2 шага, 1/4 шага, 1/8 шага и 1/16.
Существует множество драйверов, совместимых с платами, применяемыми в 3D принтерах. Небольшой список:
Могут быть как зеленые, так и красные.
Максимальный делитель 1/16.
Могут встречаться как фиолетовые, так и синие. Из-за отсутствия нормального режима удержания (в статичном положении, но с фиксацией ротора, обычно этот режим потребляет меньше энергии, чем вращение) сильно греется. Поэтому рекомендуется устанавливать на чип хороший радиатор.
Максимальный делитель 1/32.
Сравнение шума от А4988 и TMC2100.
Но как полагается, чем-то нужно жертвовать взамен. Он очень сильно греется, а при перегреве начинаются пропуски шагов и перемещения по осям могут быть неверными.
Драйвер имеет собственный чип, который интерполирует делитель 1/16 в 1/256 без нагрузки для процессора, и обеспечивает очень тихую работу.
Чаще всего драйвер исполнения китайской компании Makerbase (MKS).
Использовать с 1/64 и 1/128 с 8-битной электроникой (на базе AtMega 2560) не рекомендуется, так как необходимо задействовать очень много ресурсов процессора. Предназначены для установки в 32-разрядные платы.
Поставляется в 2 вариантах:
2) Цифровая регулировка. Пины в наличии и регулировка производится программно. Поддерживается только собственными контроллерами: Azteeg X3, X3 PRO и X5 mini V3.
Драйвера так же производства Panucatt Devices.
В отличие от SD6128 имеют дробление шага до 1/256. Так же, имеется защита от перегрева и большого тока. Аналогично, присутствует в 2 версиях: с ручной регулировкой напряжения, и с поддержкой программной регулировки. Программная регулировка доступна только для плат Azteeg X3, X3 PRO и X5 mini V3.
В основе драйвера лежит чип THB6128. Драйвер работает как в 3,3В (32-разрядные платы), так и 5В (8-разрядные). Установка делителя производится так же, перемычками, в соответствии с таблицей из pdf-описания.
Для установки в 8-битные платы, задействовать делители выше 1/64 не рекомендуется из-за возможной перегрузки процессора.
Собственная версия Panucatt Devices, аналогичная привычной DRV8825, с тем лишь отличием, что есть 2 пина для управления напряжением на драйвере. Регулировка доступна лишь на платах собственного производства: Azteeg X3, X3 PRO и X5 mini V3.
Плата, аналогично с TMC2100, имеет внутренний делитель с 1/16 до 1/256. Переключение между делителями производится программно, по SPI-интерфейсу.
После конфигурирования прошивки плату можно отключить от драйвера.
Уже появились китайские клоны данной платы.
У чипа такой же делитель с 1/16 до 1/256, как и у всех остальных TMC2100,2130.
Драйвер имеет делитель от полного шага до 1/128. Для 8-битных плат не рекомендуется ставить делитель выше 1/32.
Небольшое лирическое отступление.
Представлю небольшую выжимку данной статьи, для понимания принципов работы шаговых двигателей и сложностей управления ими.
Шаговый двигатель. Как он работает и зачем ему спад тока?
Шаговый двигатель – это электромеханическое устройство, которое преобразует электрические импульсы в дискретные механические перемещения.
Определить тип двигателя можно даже на ощупь: при вращении вала обесточенного двигателя с постоянными магнитами (или гибридного) чувствуется переменное сопротивление вращению, двигатель вращается как бы щелчками. В то же время вал обесточенного двигателя с переменным магнитным сопротивлением вращается свободно. Гибридные двигатели являются дальнейшим усовершенствованием двигателей с постоянными магнитами и по способу управления ничем от них не отличаются. Определить тип двигателя можно также по конфигурации обмоток. Двигатели с переменным магнитным сопротивлением обычно имеют три (реже четыре) обмотки с одним общим выводом. Двигатели с постоянными магнитами чаще всего имеют две независимые обмотки. Эти обмотки могут иметь отводы от середины. Иногда двигатели с постоянными магнитами имеют 4 раздельных обмотки.
В шаговом двигателе вращающий момент создается магнитными потоками статора и ротора, которые соответствующим образом ориентированы друг относительно друга. Статор изготовлен из материала с высокой магнитной проницаемостью и имеет несколько полюсов. Полюс можно определить как некоторую область намагниченного тела, где магнитное поле сконцентрировано. Полюса имеют как статор, так и ротор. Для уменьшения потерь на вихревые токи магнитопроводы собраны из отдельных пластин, подобно сердечнику трансформатора. Вращающий момент пропорционален величине магнитного поля, которая пропорциональна току в обмотке и количеству витков. Таким образом, момент зависит от параметров обмоток. Если хотя бы одна обмотка шагового двигателя запитана, ротор принимает определенное положение. Он будет находится в этом положении до тех пор, пока внешний приложенный момент не превысит некоторого значения, называемого моментом удержания. После этого ротор повернется и будет стараться принять одно из следующих положений равновесия.
Нас интересуют гибридные двигатели, наиболее часто применяемые в 3D принтерах.
Гибридные двигатели сочетают в себе лучшие черты двигателей с переменным магнитным сопротивлением и двигателей с постоянными магнитами. Ротор гибридного двигателя имеет зубцы, расположенные в осевом направлении.
Ротор привычного для 3D принтера двигателя имеет 100 полюсов (50 пар), двигатель имеет 2 фазы, поэтому полное количество полюсов – 200, а шаг, соответственно, 1.8 град.
Как видно на рисунке, воздушные зазоры у верхнего и нижнего полюсного наконечника ротора разные. Это достигается благодаря повороту полюсных наконечников на половину шага зубъев. Поэтому существует другая магнитная цепь, которая содержит минимальные воздушные зазоры и, как следствие, обладает минимальным магнитным сопротивлением. По этой цепи замыкается другая часть потока (на рисунке показана штриховой белой линией), которая и создает момент. Часть цепи лежит в плоскости, перпендикулярной рисунку, поэтому не показана. В этой же плоскости создают магнитный поток катушки статора. В гибридном двигателе этот поток частично замыкается полюсными наконечниками ротора, и постоянный магнит его «видит» слабо. Поэтому в отличие от двигателей постоянного тока, магнит гибридного двигателя невозможно размагнитить ни при какой величине тока обмоток.
Величина зазора между зубцами ротора и статора очень небольшая – типично 0.1 мм. Это требует высокой точности при сборке, поэтому шаговый двигатель не стоит разбирать ради удовлетворения любопытства, иначе на этом его срок службы может закончиться.
Чтобы магнитный поток не замыкался через вал, который проходит внутри магнита, его изготавливают из немагнитных марок стали. Они обычно обладают повышенной хрупкостью, поэтому с валом, особенно малого диаметра, следует обращаться осторожно.
Для получения больших моментов необходимо увеличивать как поле, создаваемое статором, так и поле постоянного магнита. При этом требуется больший диаметр ротора, что ухудшает отношение крутящего момента к моменту инерции. Поэтому мощные шаговые двигатели иногда конструктивно выполняют из нескольких секций в виде этажерки. Крутящий момент и момент инерции увеличиваются пропорционально количеству секций, а их отношение не ухудшается.
Гибридные двигатели подразделяются на 2 типа. В зависимости от конфигурации обмоток двигатели делятся на биполярные и униполярные. Биполярный двигатель (на рисунке ниже под буквой а) имеет одну обмотку в каждой фазе, которая для изменения направления магнитного поля должна переполюсовывается драйвером. Всего биполярный двигатель имеет две обмотки и, соответственно, четыре вывода.
Униполярный двигатель (б) также имеет одну обмотку в каждой фазе, но от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов. Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8 (в). При соответствующем соединении обмоток такой двигатель можно использовать как униполярный или как биполярный. Униполярный двигатель с двумя обмоткими и отводами тоже можно использовать в биполярном режиме, если отводы оставить неподключенными. В любом случае ток обмоток следует выбирать так, чтобы не превысить максимальной рассеиваемой мощности.
Если сравнивать между собой биполярный и униполярный двигатели, то первый имеет выше удельную мощность. При одних и тех же размерах биполярные двигатели обеспечивают больший момент.
Момент, создаваемый шаговым двигателем, пропорционален величине магнитного поля, создаваемого обмотками статора. Наиболее важным является ограничение по нагреву двигателя вследствие омических потерь в обмотках. Как раз этот факт и демонстрирует одно из преимуществ биполярных двигателей. В униполярном двигателе в каждый момент времени используется лишь половина обмоток. Другая половина просто занимает место в окне сердечника, что вынуждает делать обмотки проводом меньшего диаметра. В то же время в биполярном двигателе всегда работают все обмотки, т.е. их использование оптимально. В таком двигателе сечение отдельных обмоток вдвое больше, а омическое сопротивление – соответственно вдвое меньше. Это позволяет увеличить ток в корень из двух раз при тех же потерях, что дает выигрыш в моменте примерно 40%. Если же повышенного момента не требуется, униполярный двигатель позволяет уменьшить габариты или просто работать с меньшими потерями. На практике все же часто применяют униполярные двигатели, так как они требуют значительно более простых схем управления обмотками.
А как управлять шаговым двигателем?
Чтобы получить нужное направление магнитного поля, необходимо выбрать не только правильное направление токов в катушках, но и правильное соотношение этих токов.
Смещение точки равновесия ротора говорит о том, что ротор можно зафиксировать в любой произвольной позиции. Для этого нужно лишь правильно установить отношение токов в фазах. Именно этот факт используется при реализации микрошагового режима.
Результатом использования микрошагового режима является более плавное вращение ротора на низких частотах. Для достижения высоких скоростей в микрошаговом режиме требуется высокая частота повторения микрошагов, которую не всегда может обеспечить управляющий микроконтроллер. Именно из-за этого происходит переход от 8-битной электроники к 32-битной, так как в дельта-принтерах для перемещения вдоль одной оси используется движение сразу 3 двигателей.
При осуществлении каждого шага ротор не сразу останавливается в новом положении равновесия, а осуществляет затухающие колебания вокруг положения равновесия. Время установления зависит от характеристик нагрузки и схемы драйвера. Обычно колебания являются нежелательными. Избавиться от этого явления можно используя микрошаговый режим. Ниже показаны перемещения ротора при работе в полношаговом и микрошаговом режимах.
Видно, что в полношаговом режиме наблюдаются выбросы и колебания, в то время как в микрошаговом режиме их нет. Однако и в этом режиме график положения ротора отличается от прямой линии. Эта погрешность объясняется погрешностью геометрии деталей двигателя и может быть уменьшена путем проведения калибровки и последующей компенсации путем корректировки токов фаз.
При вращении ротора у двигателя есть мертвые зоны, которые ограничивают точность позиционирования.
На рисунке показана зависимость зависимость момента от угла поворота ротора.
Наличие мертвых зон является очень важным для микрошагового режима. Если, например, имеются мертвые зоны величиной d, то микрошаг величиной менее d вообще не сдвинет ротор с места.
Когда двигатель работает под нагрузкой, всегда существует некоторый сдвиг между угловым положением ротора и ориентацией магнитного поля статора. Особенно неблагоприятной является ситуация, когда двигатель начинает торможение и момент нагрузки реверсируется. Нужно отметить, что запаздывание или опережение относится только к положению, но не к скорости. В любом случае, если синхронность работы двигателя не потеряна, это запаздывание или опережение не может превышать величины двух полных шагов. Это очень приятный факт.
Каждый раз, когда шаговый двигатель осуществляет шаг, ротор поворачивается на S радиан. При этом минимальный момент имеет в место, когда ротор находится между соседними положениями равновесия.
Этот момент называют рабочим моментом, он означает, какой наибольший момент может преодолевать двигатель при вращении с малой скоростью. Если двигатель делает шаг с двумя запитанными обмотками, то рабочий момент равен моменту удержания для одной запитанной обмотки.
Параметры привода зависят от характеристик нагрузки. Кроме трения, реальная нагрузка обладает инерцией. Инерция препятствует изменению скорости и требует от двигателя больших моментов на разгоне и торможении, ограничивая максимальное ускорение. С другой стороны, увеличение инерционности нагрузки увеличивает стабильность скорости.
При конструировании драйверов шаговых двигателей нужно учитывать, что обмотки двигателя представляют собой индуктивность. Эта индуктивность определяет время нарастания и спада тока. Поэтому если к обмотке приложено напряжение прямоугольной формы, форма тока не будет прямоугольной. При низких скоростях (а) время нарастания и спада тока не способно сильно повлиять на момент, однако на высоких скоростях момент падает. Связано это с тем, что на высоких скоростях ток в обмотках двигателя не успевает достигнуть номинального значения(б).
Для того, чтобы момент падал как можно меньше, необходимо обеспечить высокую скорость нарастания тока в обмотках двигателя, что достигается применением специальных схем питания.
Поведение момента при увеличении частоты коммутации фаз примерно такое: начиная с некоторой частоты среза момент монотонно падает. Обычно для шагового двигателя приводятся две кривые зависимости момента от скорости.
Внутренняя кривая (кривая старта) показывает, при каком максимальном моменте трения для данной скорости шаговый двигатель способен тронуться. Эта кривая пересекает ось скоростей в точке, называемой максимальной частотой старта или частотой приемистости. Она определяет максимальную скорость, на которой ненагруженный двигатель может тронуться.
Внешняя кривая (кривая разгона) показывает, при каком максимальном моменте трения для данной скорости шаговый двигатель способен поддерживать вращение без пропуска шагов. Эта кривая пересекает ось скоростей в точке максимальной частоты разгона. Она показывает максимальную скорость для данного двигателя без нагрузки. Область, которая лежит между кривыми, называется областью разгона.
Для того, чтобы работать на большой скорости из области разгона, необходимо стартовать на низкой скорости из области старта, а затем выполнить разгон. При остановке нужно действовать в обратном порядке: сначала выполнить торможение, и только войдя в область старта можно прекратить подачу управляющих импульсов. В противном случае произойдет потеря синхронности и положение ротора будет утеряно.
Необходимо отметить, что непрерывная работа шагового двигателя на высокой скорости не всегда допустима ввиду нагрева ротора.
При осуществлении разгона или торможения важно правильно выбрать закон изменения скорости и максимальное ускорение. Ускорение должно быть тем меньше, чем выше инерционность нагрузки. Критерий правильного выбора режима разгона – это осуществление разгона до нужной скорости для конкретной нагрузки за минимальное время. Чаще всего применяют разгон и торможение с постоянным ускорением.
Шаговым двигателям свойственен нежелательный эффект, называемый резонансом. Эффект проявляется в виде внезапного падения момента на некоторых скоростях. Это может привести к пропуску шагов и потере синхронности. Эффект проявляется в том случае, если частота шагов совпадает с собственной резонансной частотой ротора двигателя.
Когда двигатель совершает шаг, ротор не сразу устанавливается в новую позицию, а совершает затухающие колебания. Дело в том, что система ротор – магнитное поле – статор работает как пружинный маятник, частота колебаний которого зависит от момента инерции ротора (плюс нагрузки) и величины магнитного поля.
Резонансную частоту определяет момент инерции собственно ротора двигателя и момент инерции нагрузки на валу двигателя. Поэтому резонансная частота ротора ненагруженного двигателя, которая приводится среди параметров, имеет маленькую практическую ценность, так как любая нагрузка, подсоединенная к двигателю, изменит эту частоту.
Когда используется не микрошаговый режим, основной причиной появления колебаний является прерывистое вращение ротора. При осуществлении шага ротору толчком сообщается некоторая энергия. Этот толчок возбуждает колебания. Энергия, которая сообщается ротору в полушаговом режиме, составляет около 30% от энергии полного шага. Поэтому в полушаговом режиме амплитуда колебаний существенно меньше. В микрошаговом режиме с шагом 1/32 основного при каждом микрошаге сообщается всего около 0.1% от энергии полного шага. Поэтому в микрошаговом режиме явление резонанса практически незаметно.
Способы изменения направления тока
При работе шагового двигателя требуется изменение направления магнитного поля независимо для каждой фазы. Изменение направления магнитного поля может быть выполнено разными способами. В униполярных двигателях обмотки имеют отвод от середины или имеются две отдельные обмотки для каждой фазы. Направление магнитного поля меняется путем перключения половинок обмоток или целых обмоток. В этом случае требуются только два простых ключа A и B для каждой фазы.
После отключения индуктивности от источника питания ток не может мгновено прекратится. Возникает ЭДС (электродвижущая сила) самоиндукции, имеющая противоположное источнику питания направление.
Для регулировки момента нужно регулировать силу тока в обмотках. В любом случае, ток должен быть ограничен, чтобы не превысить рассеиваимую мощность на омическом сопротивлении обмоток. Более того, в полушаговом режиме требуется в определенные моменты обеспечивать нулевое значение тока в обмотках, а в микрошаговом режиме вообще требуется задание разных значений тока.
При работе на больших скоростях требуется увеличивать скорость нарастания тока в обмотках, что возможно повышением напряжения источника питания. При этом максимальный ток обмотки должен быть ограничен резистором.
Еще одним методом стабилизации тока в обмотках двигателя является ключевое (ШИМ) регулирование. Это позволяет использовать простые и дешевые нестабилизированные источники питания.
Падение напряжения на этом резисторе зависит от тока в обмотке. Когда ток достигает установленного значения, ключ выключается, что приводит к падению тока. Когда ток спадает до нижнего порога, ключ снова включается. Этот процесс повторяется периодически, поддерживая среднее значение тока постоянным.