Управление биполярным шаговым двигателем. Часть 1. Теория. Схема с контроллером PIC12F629 и драйвером LB1838
Шаговые двигатели интересны тем, что позволяют повернуть вал на определённый угол. Соответственно, с их помощью можно повернуть вал и на определённое число оборотов, потому что N оборотов — это тоже определённый угол, равный 360*N, и, в том числе, на нецелое число оборотов, например на 0.75 оборота, 2.5 оборота, на 3.7 оборота и т.д. Этими возможностями шаговых двигателей определяется и область их применения. В основном они используются для позиционирования различных устройств: считывающих головок в дисководах, печатающих головок в принтерах и плоттерах и т.д.
Естественно такие возможности не могли обойти стороной и радиолюбители. Они с успехом используют шаговики в конструкциях самодельных роботов, самодельных станков с ЧПУ и т.д. Ниже описаны результаты моих опытов с шаговым двигателем, надеюсь, что кому-то это может оказаться полезным.
Итак, что нам понадобится для экспериментов. Во-первых, шаговый двигатель. Я брал 5-ти вольтовый китайский биполярный шаговик с загадочным названием, выдранный из старого 3,5″ дисковода, аналог M20SP-GW15. Во-вторых, поскольку обмотки двигателя потребляют значительный ток (в данном случае до 300 мА), то вполне понятно, что подключить шаговик к контроллеру напрямую не удастся, нужен драйвер.
В качестве драйвера для биполярных шаговых двигателей обычно используют схему так называемого H-моста или специальную микросхему (в которой всё равно встроен H-мост). Можно конечно ваять самому, но я взял готовую микруху (LB1838) из того же старого дисковода. Собственно, кроме всего вышеописанного, для наших экспериментов также понадобятся: PIC-контроллер (был взят PIC12F629, как самый дешёвый) и пара кнопок.
Перед тем, как перейти непосредственно к схеме, давайте немного разберёмся с теорией.
Биполярный шаговый двигатель имеет две обмотки и, соответственно, подключается по четырём проводам. Найти концы обмоток можно простой прозвонкой — концы проводов, относящиеся к одной обмотке, будут между собой звониться, а концы, относящиеся к разным обмоткам, — нет. Концы первой обмотки обозначим буквами «a», «b», а концы второй обмотки буквами «c», «d».
На рассматриваемом экземпляре есть цифровая маркировка контактов возле мотора и цветовая маркировка проводов (бог его знает, может это тоже какой-то стандарт): 1 — красный, 2 — голубой — первая обмотка; 3 — жёлтый, 4 — белый — вторая обмотка.
Для того, чтобы биполярный шаговый двигатель вращался, необходимо запитывать обмотки в порядке, указанном в таблице. Если направление обхода таблицы выбрать сверху вниз по кругу, то двигатель будет вращаться вперёд, если снизу вверх по кругу — двигатель будет вращаться назад:
За один полный цикл двигатель делает четыре шага.
Для правильной работы, должна строго соблюдаться указанная в таблице последовательность коммутаций. То есть, например, после второй комбинации (когда мы подали + на вывод «c» и минус на вывод «d») мы можем подать либо третью комбинацию (отключить вторую обмотку, а на первой подать — на «a» и + на «b»), тогда двигатель повернётся на один шаг вперёд, либо первую комбинацию (двигатель повернётся на один шаг назад).
То, с какой комбинации нужно начинать вращение, определяется тем, какая последняя комбинация подавалась на двигатель перед его выключением (если конечно его руками потом не крутили) и желаемым направлением вращения.
То есть, допустим мы повернули двигатель на 5 шагов вперёд, подавая на него комбинации 2-3-4-1-2, потом обесточили, а потом захотели повернуть ещё на один шаг вперёд. Для этого на обмотки надо подать комбинацию 3. Пусть после этого мы его опять обесточили, а через какое-то время захотели вернуть его на 2 шага назад, тогда нам нужно подать на двигатель комбинации 2-1. И так далее в таком же духе.
Эта таблица, кроме всего прочего, позволяет оценить, что будет происходить с шаговым двигателем, если мы перепутаем порядок подключения обмоток или концы в обмотках.
На этом мы закончим с двигателем и перейдём к драйверу LB1838.
У этой микрухи есть четыре управляющие ноги (IN1, IN2, EN1, EN2), на которые мы как раз и будем подавать сигналы с контроллера, и четыре выходных ноги (Out1, Out2, Out3, Out4), к которым подключаются обмотки двигателя. Обмотки подключаются следующим образом: провод «a» подключается к Out1, провод «b» — к Out2, провод «c» — к Out3, провод «d» — к Out4.
Ниже представлена таблица истинности для микросхемы драйвера (состояние выходов в зависимости от состояния входов):
IN1 | EN1 | Out1 (a) | Out2(b) | IN2 | EN2 | Out3(c) | Out4(d) |
Low | High | + | — | Low | High | + | — |
High | High | — | + | High | High | — | + |
X | Low | откл | откл | X | Low | откл | откл |
Теперь давайте нарисуем на диаграмме, какую форму должны иметь сигналы IN1, EN1, IN2, EN2 для одного полного цикла вращения (4 шага), т.е. чтобы на выходах появились последовательно все 4 комбинации подключения обмоток:
Если присмотреться к этой диаграмме (слева), то становится очевидно, что сигналы IN1 и IN2 можно сделать абсолютно одинаковыми, то есть на обе этих ноги можно подавать один и тот же сигнал. В этом случае наша диаграмма будет выглядеть так:
Итак, на последней диаграмме нарисовано, какие комбинации уровней сигналов должны быть на управляющих входах драйвера (EN1, EN2, IN1, IN2) для того, чтобы получить соответствующие комбинации подключения обмоток двигателя, а также стрелками указан порядок смены этих комбинаций для обеспечения вращения в нужную сторону.
Вот в общем-то и вся теория. Необходимые комбинации уровней на управляющих входах формируются контроллером (мы будем использовать PIC12F629).
R1..R2 = 1 кОм. Когда соответствующая кнопка не нажата — резистор подтягивает напряжение на входе контроллера к +5 В (высокий уровень). При нажатии на кнопку напряжение на входе подтягивается к земле (низкий уровень).
С1, С2 = 0,1 мкФ — керамические конденсаторы.
С3 = 470 мкФ х 16В — электролитический конденсатор.
Программа управления реализует следующий алгоритм: при нажатии кнопки КН1 двигатель поворачивается на один шаг в одну сторону, а при нажатии кнопки КН2 — на один шаг в другую сторону.
Собственно говоря, можно прикрутить сюда программный UART и реализовать управление от компьютера (передавать с компа скорость, количество шагов и направление вращения).
Схема драйвера для биполярные шаговые двигатели
Этот драйвер реализует полношаговый режим с одной включенной фазой и способен управлять двигателем с током до 0,5А.
Формирование управляющей последовательности осуществляется м/сх U1, U2. Сигналами на выводах 3, 14, 2 и 15 м/сх U2 обеспечивается попеременная коммутация фаз:
Ключи Q1-Q2, Q3-Q4, Q5-Q6, Q7-Q8 образуют полный H-мост, необходимый для переполюсовки выводов обмоток в биполярных двигателях . Диоды D1-D8 — защитные от выбросов напряжения при отключении обмотки. Управляющие импульсы могут подаваться непосредственно на вход C счетчика U1 (вывод 15) или на вход 13 элемента U3.4, что позволяет задействовать выключатель S1 — при его замыкании импульсы блокируются, двигатель останавливается, удерживая положение вала. Выключатель S2 управляет сменой направления вращения. На элементах U3.1-U3.3 собран генератор импульсов, которые могут подаваться на вход 13 элемента U3.4 для тестирования драйвера.
1 | Sense A | Между этими выводами и землей подключаются резисторы — датчики тока для контроля тока нагрузки. Если контроль тока не используется, они соединяются с землей. |
15 | Sense B | |
2 | Out 1 | Выходы моста A. |
3 | Out 2 | |
4 | Vs | Питание нагрузки. Между этим выводом и землей должен быть подключен низкоимпедансный конденсатор емкостью не менее 100 нФ. |
5 | In 1 | Входы управления мостом A. TTL совместимые уровни. |
7 | In 2 | |
6 | En A | Входы разрешения работы мостов. TTL совместимые уровни. Низкий уровень сигналов запрещает работу моста. |
11 | En B | |
8 | GND | Общий вывод. |
9 | Vss | Питание логической части микросхемы (+ 5 В). Между этим выводом и землей должен быть подключен низкоимпедансный конденсатор емкостью не менее 100 нФ. |
10 | In 3 | Входы управления мостом B. TTL совместимые уровни. |
12 | In 4 | |
13 | Out 3 | Выходы моста B. |
14 | Out 4 |
Предельно допустимые параметры L298N.
Обозначение | Параметр | Значение |
Vs | Напряжение питания | 50 В |
Vss | Напряжение питания логики | 7 В |
Vi, Ven | Напряжение логических входов | -0,3. 7 В |
Io | Выходной ток (для каждого канала)
| |
Vsens | Напряжение датчиков тока | -1. 2,3 В |
Ptot | Мощность рассеивания (температура корпуса 75°C) | 25 Вт |
Top | Рабочая температура кристалла | -25. 130 °C |
Tstg | Температура хранения | -40. 150 °C |
Параметры расчетов тепловых режимов.
Обозначение | Параметр | Значение |
Tth j-case | Тепловое сопротивление кристалл-корпус | 3 ºC/Вт |
Tth j-amb | Тепловое сопротивление кристалл-окружающая среда | 35 ºC/Вт |
Электрические характеристики драйвера L298N.
Обозначение | Параметр | Значение |
Vs | Напряжение питания (вывод 4) | Vih+2.5 . 46 В |
Vss | Питание логики | 4,5. 5 . 7 В |
Is | Потребляемый ток покоя (вывод 4)
| |
Iss | Потребляемый ток покоя (вывод 9)
| |
Vil | Входное напряжение низкого уровня (выводы 5, 7, 10, 12, 6, 11) | -0,3 . 1,5 В |
Vih | Входное напряжение высокого уровня (выводы 5, 7, 10, 12, 6, 11) | 2,3 . Vss В |
Iil | Входной ток низкого уровня (выводы 5, 7, 10, 12, 6, 11) | -10 мкА |
Iih | Входной ток высокого уровня (выводы 5, 7, 10, 12, 6, 11) | 30 . 100 мкА |
Vce sat (h) | Напряжение насыщения верхнего ключа
| |
Vce sat (l) | Напряжение насыщения нижнего ключа
| |
Vce sat | Общее падение напряжения на открытых ключах
| |
Vsens | Напряжение датчиков тока (выводы 1, 15) | -1 . 2 В |
Fc | Частота коммутаций | 25 . 40 кГц |
Схема подключения шагового двигателя к микроконтроллеру с помощью драйвера L298N.
Диаграмма работы этой схемы в полношаговом режиме выглядит так.
Если не используются разрешающие входы и датчики тока, схема выглядит так.
По функциям это аналог контроллера описанного в главе про униполярные двигатели, только для биполярного. Он также собран на PIC контроллере фирмы Microchip и управляет двумя биполярными шаговыми двигателями с током фаз до 2 А. Функциональные возможности и режимы управления двигателем те же.
К достоинствам управления шаговым двигателем в биполярном режиме следует отнести:
- крутящий момент примерно на 40 % больше по сравнению с униполярным режимом.
- можно подключать шаговые двигатели с любой конфигурацией обмоток.