Управление шаговым двигателем. Простой в изготовлении контроллер шагового двигателя из старых деталей Драйвер шагового двигателя схема тры выводы

Недавно приобрел ARDUINO в Китае. Мыслей по изготовление различных устройств- море. Мигать светодиодом на плате очень быстро надоело, захотелось чего то более существенного. Конечно надо бы заказать набор но цена его несколько завышена и пришлось что то искать в интернете, что то придумывать самому. В итоге все равно заказал в том же Китае различные датчики, реле, индикаторы… Немного попозже пришел знаменитый индикатор 1602. С ним поучился работать, тоже довольно быстро освоился. Захотелось поуправлять шаговым двигателем от CD-DVD привода. Ждать с Востока посылку 1-2 месяца не захотелось и я решил попробовать сделать драйвер самостоятельно. Нашел вот такую схему включения биполярного шагового двигателя:

Микросхемы в нашей глуши я не нашел, или заказывать микросхемы в российских интернет-магазинах по стоимости 2-3 готовых драйверов за 1 микросхему. Микросхема представляет собой Н- мост из транзисторов. Кстати включать в мост надо или составные биполярные транзисторы (так называемые сборки Дарлингтона), или полевые транзисторы. Одиночным биполярным транзисторам нужна хорошая раскачка, которую контроллер дать не может, иначе получается очень высокое падение напряжение на транзисторе из за того что он открыться не может. Т.к. хороший товарищ занимается ремонтом компьютеров, то с полевиками проблем не возникло. Сначала хотел сделать на биполярниках- но получается в 2 раза больше транзисторов, что не совсем хорошо для габаритов драйвера, да и ток они выдержат гораздо меньший. Выпаяв около десятка полевых транзисторов и почитав на них даташиты я снова впал в уныние- в интернете есть схемы только на парах полевых транзисторов n- и p- типов. И ниодной схемы на транзисторах одного типа я просто не нашел. В компьютерах же используются транзисторы n- типа. Пришлось мудрить на макетной плате небольшой девайс на полевиках, попробовал управлять светодиодами, получилось и я решил собрать готовое устройство. Драйвер не нуждается в налаживании ибо налаживать здесь практически нечего. Единственная проблема возникла с программным обеспечением. Нашел даташит на похожий двигатель и по графикам работы выставил состояния выходов. После этого осталось только подобрать delay и все- устройство готово! Собственно схема замены микросхемы L293D.


Данные транзисторов даны просто так- в мультисиме никак не смог их изменить. Я использовал транзисторы P60N03LDG в корпусе ТО-252 . В ней все довольно просто: при поступлении напряжения на один из входов U1 или U2 открываются 2 транзистора в верхнем и нижнем плече, причем крест- накрест. Таким образом переключается полярность напряжения на двигателе. А чтобы не подавалось напряжение сразу на 2 входа (это вызовет КЗ цепи питания) и использовал схему включения L293D. При таком включении NPN-транзистор не позволяет открывать сразу все 4 транзистора Н-моста. Кстати 1 двигатель будет управляться по 2 выходам Arduino, что крайне важно для экономии выходов и входов микроконтроллера. Еще условие- минусовой провод транзисторных ключей обязательно должен быть соединен с минусовым выводом платы управления. Питание подается на плату управления от Arduino, на ключи- от внешнего БП. Это позволяет подключить достаточно мощные двигатели. Все зависит от характеристик транзисторов. Итак для одного драйвера вам нужно 8 полевых транзисторов (P60N03LDG или любые другие n-канальные), любые 2 SMD-биполярных транзистора NPN (у меня стоят с маркировкой t04), smd-резисторы типоразмера 0805, и 4 такие же перемычки того же размера (на них написано 000 или просто 0). Все эти детали можно найти на старых и негодных материнских платах. Обязательно проверьте детали перед установкой.


Плата драйвера Arduino

Выкладываю плату в формате Layout6. . Замечу что у вас должен получится именно такой вид- надписи должны быть читабельными а не перевернутыми, учитывайте это при печати платы, детали ведь будут установлены со стороны дорожек. Разъемы тоже выпаиваем из материнки феном, отрезаем сколько по надо количеству пинов и впаиваем в нашу плату- так гораздо удобнее и надежнее нежели чем паять провода в плату. Разберемся с назначением выводов: выводы Out1 и Out2- подключение обмоток шагового двигателя, In1,2- вход от Arduino, ±5V- питание управления от Arduino (сделал двойной разъем т.к. подключать питание можно шлейфом сразу к нескольким блокам), 2 перемычки располагаются на другой стороне платы, по ним подается напряжение на ключи. Размер платы- 43х33мм. Кто желает- может еще больше минимизировать.

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


Диаграмма работы шагового двигателя

Цифрами указаны номера шагов. Исходя из того что при переключении контроллером высокого уровня на низкий драйвер сам переключит нужные ключи, то пишем, например, состояния только для верхних графиков каждой обмотки. Первый шаг: первая обмотка- первый провод +(HIGH), другой автоматически переключится драйвером на минус (LOW), напоминаю что описываем по первому проводу каждой обмотки. Вторая обмотка: первый провод — (LOW), второй + (HIGH), второй провод переключится драйвером автоматически. Переходим к первому изменению графика. Это 2 шаг. Описываем состояние только первых проводов. 1 провод первой обмотки остался HIGH, 1 провод второй сменился с LOW на HIGH . Третий шаг- 1 провод первой обмотки сменился HIGH на LOW, 1 провод второй остался HIGH. Четвертый шаг: 1 провод первой обмотки остался LOW, 1 провод второй обмотки сменился с HIGH на LOW. Описывать можно с любого шага, главное сохранять последовательность. Чтобы двигатель вращался в другую сторону нужно просто сдвинуть в диаграмме значения любой обмотки на полцикла в любую сторону. Таким образом можно писать программное обеспечение для драйверов. Нужно лишь знать диаграмму и правильно описать ее состояние на выходные пины.

Теперь подключаем плату к Arduino, двигателю. Забрасываем такой скетч:

// подключаемся к 8,9 выводам arduino
int input1 = 8;
int input2 = 9;
int stepCount = 5; //задержка между шагами регулирует скорость двигателя

void setup()
{
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
}

void loop()
{
//1-ый шаг
digitalWrite(input1,LOW);
digitalWrite(input2,HIGH);
delay(stepCount);

//2-ой шаг
digitalWrite(input1,HIGH);
digitalWrite(input2,HIGH);
delay(stepCount);

//3-ий шаг
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
delay(stepCount);

digitalWrite(input1,LOW);
digitalWrite(input2,LOW);
delay(stepCount);

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

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

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

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

Типы электродвигателей, способы управления и возникающие сложности

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

Проводник с проходящим по нему током (рисунок 1) создает вокруг себя магнитное поле, интенсивность (магнитная индукция) которого пропорциональна количеству витков, в случае использования катушки (N), и величине проходящего по ней тока (I), где, В – вектор магнитной индукции, К – магнитная постоянная, N – число витков, I – сила тока.

Изменение направления тока влияет и на направление магнитного поля проводника.

При этом на помещенный во внешнее магнитное поле проводник с током действует сила Лоренца, вызывающая его вращательное перемещение. Направление вращения легко определяется с помощью известного правила правой руки для проводника с током в магнитном поле (рисунок 2). Сила (F), действующая на проводник в магнитном поле, равна произведению силы тока (I) в проводнике на вектор магнитной индукции поля (B) и длину проводника (L). F = LIB.

Коллекторные двигатели

Коллекторные двигатели постоянного тока (Brushed DC или BDC, по терминологии TI) сегодня относятся к одним из наиболее распространенных механизмов электромагнитного вращения.

В магнитном поле собранного из постоянных магнитов статора вращается многосекционный ротор с катушками, которые попарно и попеременно подключаются через коммутируемые коллекторные ламели на оси ротора (рисунок 3). Выбор пары активируемых катушек выполняется на основании закона Лоренца в соответствии с правилом Буравчика. Источник тока всегда подключен к катушкам, силовые линии магнитного поля которых смещены на угол, близкий к 90°, относительно магнитного поля статора.

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

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

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

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

Достоинства коллекторных двигателей:

  • малая стоимость;
  • простая система управления;
  • 2-обмоточные коллекторные двигатели, обладающие высоким крутящим моментом и способные работать на постоянном и переменном токе.

Особенности эксплуатации коллекторных двигателей:

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

Бесколлекторные двигатели

Несколько менее распространенными среди двигателей постоянного тока являются модели с бесщеточной конструкцией (BrushLess DC или BLDC), использующие ротор с постоянными магнитами, которые вращаются между электромагнитами статора (рисунок 4). Коммутация тока здесь выполняется электронным способом. Переключение обмоток электромагнитов статора заставляет магнитное поле ротора следовать за его полем.

Текущее положение ротора обычно контролируется энкодерами или датчиком на основе эффекта Холла, либо применяется технология с измерением напряжения противо-ЭДС на обмотках без использования в этом случае отдельного датчика положения ротора (SensorLess).

Коммутация тока обмоток статора выполняется с помощью электронных ключей (вентилей). Именно поэтому бесколлекторные двигатели BLDC часто называют «вентильными». Очередность подключения пары обмоток двигателя происходит в зависимости от текущего положения ротора.

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

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

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

В качестве датчиков скорости и положения ротора в BLDC могут использоваться датчики Холла, которые отличаются небольшой стоимостью, но также и достаточно невысоким разрешением. Повышенное разрешение обеспечивают вращающиеся трансформаторы (резольверы). Они отличаются высокой стоимостью и требуют использования ЦАП, так как выходной сигнал у них синусоидальный. Высоким разрешением, но пониженной надежностью, обладают оптические датчики. На рисунке 6 представлены выходные сигналы датчиков разного типа при вращении ротора двигателя.

Преимущества двигателей BLDC:

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

Особенности применения двигателей BLDC:

  • более сложная система управления с обратной связью по положению ротора;
  • пульсации крутящего момента.

Шаговые двигатели

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

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

В зависимости от конфигурации схемы подключения обмоток шаговые двигатели делятся на биполярные и униполярные. Биполярный двигатель имеет в каждой из двух фаз единую обмотку для обоих полюсов статора, которая для изменения направления магнитного поля должна переполюсовываться драйвером. Биполярный двигатель имеет две обмотки и, соответственно, четыре вывода. Для управления таким ШД требуется мостовой драйвер или полумостовая схема с 2-полярным питанием. При биполярном управлении одновременно работают две обмотки и крутящий момент примерно на 40% больше. На рисунке 7 представлена последовательность сигналов управления при вращении биполярного ШД.

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

Четырех обмоточные ШД могут использоваться как в биполярной, так и в униполярной конфигурации.

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

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

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

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

Достоинства шаговых двигателей:

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

Особенности применения шаговых двигателей:

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

Традиционные решения для управления электродвигателями

Современная прецизионная система управления электродвигателем постоянного тока включает в себя микроконтроллер для обработки данных и блок управления питанием обмоток двигателя, часто называемый драйвером. В состав драйвера входит логическая схема для преобразования кодированных посылок в цифровые управляющие сигналы, из которых в блоке Gate Driver формируются аналоговые сигналы для управления силовыми ключами на основе полевых транзисторов (FET). FET могут входить в состав драйвера или размещаться в отдельном блоке. Кроме того, в состав драйвера входят схемы защиты силовых цепей и цепи обратной связи для контроля работы двигателя.

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

Так, у интегрированного драйвера TI максимальная рабочая температура отдельных элементов на плате может достигать 193°С, а у предварительного драйвера этот показатель не превышает 37°С.

Одной из наиболее распространенных схем для коммутации обмоток двигателей является мост типа “H”. Название схемы связано с конфигурацией подключения, которая похожа на букву “H”. Эта электронная схема позволяет легко изменять направление тока в нагрузке и, соответственно, направление вращения ротора. Напряжение, прикладываемое к обмоткам через транзисторы моста, может быть как постоянным, так и модулированным с помощью ШИМ. H-мост предназначен, в первую очередь, для смены полярности питания двигателя – реверса (рисунок 12), но также позволяет тормозить вращение, коротко замыкая выводы обмоток (рисунок 13).

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

Использование управляющих сигналов с ШИМ позволяет уменьшить пульсации крутящего момента и обеспечить более плавное вращение ротора двигателя. В идеале частота ШИМ должна быть выше 20 кГц, чтобы избежать акустического шума. Но с увеличением частоты растут потери на транзисторах моста в процессе коммутации.

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

Для ускоренного затухания в обмотках электродвигателей возбуждаемого эффектом противо-ЭДС тока используют диоды в обратном включении, шунтирующие переходы «сток-исток» транзисторов, либо закорачивают обмотки через переходы «сток-исток» двух транзисторов, одновременно включенных в разных плечах моста. На рисунке 13 представлены три состояния моста: рабочее, быстрого торможения (Fast Decay) и медленного торможения (Slow Decay).

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

Решения для управления электродвигателями от TI

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

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

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

Драйверы TI для шаговых двигателей

Большой раздел решений TI для управления двигателями включает драйверы для ШД (рисунок 14), которые выпускаются как со встроенными силовыми ключами на основе FET, так и в виде предварительных драйверов, предоставляющих пользователю подбор необходимых силовых ключей. Всего в модельном ряду компании более 35 драйверов для ШД.

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

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

Для более плавного перемещения ротора в драйверах для ШД используется настраиваемый механизм сглаживания импульсов тока (режимы Slow, Fast, Mixed Decay). Система расчета микрошага может быть следующих типов:

  • встроенной в драйвер;
  • с использованием внешнего опорного сигнала.

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

Драйверы TI для BDC

Для управления – коллекторными электродвигателями постоянного тока – предназначено специальное семейство драйверов , ряд представителей которого изображен на рисунке 16. Они обеспечивает полную защиту от превышения напряжения и тока, короткого замыкания и перегрева. Благодаря возможностям интерфейса управления эти драйверы обеспечивают простую и эффективную эксплуатацию двигателей. Пользователи могут с помощью одного чипа управлять одним или несколькими двигателями c рабочим напряжением 1,8…60 В.

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

Спящий режим (Sleep) позволяет минимизировать потребление энергии в режиме простоя и обеспечивает ускоренную активизацию при запуске двигателя. Для управления скоростью вращения могут использоваться внешние сигналы ШИМ или сигналы PHASE/ENABLE для выбора направления вращения и включения ключей выходного моста.

Имеющий четыре выходных моста драйвер способен управлять двумя ШД или одним ШД и двумя BDC, или же четырьмя BDC, используя при этом управляющий интерфейс SPI.

На рисунке 17 представлена функциональная схема простого драйвера для управления одним коллекторным двигателем.

Драйверы TI для BLDC

Драйверы TI для бесколлекторных двигателей, или BLDC, могут включать интегрированный силовой мост или использовать внешние силовые транзисторы. Схема формирования 3-фазных сигналов управления также может быть внешней или встроенной.

Семейство драйверов для управления бесколлекторными электродвигателями включает модели c разным принципом управления и с различным крутящим моментом. Эти драйверы, обеспечивающие разные уровни шума при управлении BDLС, идеально подойдут для использования в промышленном оборудовании, автомобильных системах и другой технике. Чтобы гарантировать надежную эксплуатацию электродвигателей, драйверы обеспечивают всеобъемлющий набор защит от превышения тока, напряжения и температуры. На рисунке 18 представлены лишь некоторые из 3-фазных драйверов для BLDC в обширном и постоянно пополняющемся модельном ряду компании TI.

Для контроля текущего положения вращающегося ротора могут использоваться внешние датчики разных типов или схема управления с определением позиции ротора по величине противо-ЭДС (Back Electromotive Force, BEMF).

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

На рисунке 19 представлен работающий в широком диапазоне температур 40…125°C интеллектуальный драйвер для BLDC со встроенными силовыми ключами на полевых транзисторах, с сопротивлением открытого канала лишь 250 мОм. При диапазоне рабочих напряжений 8…28 В драйвер может обеспечивать номинальный ток 2 А и пиковый ток 3 А.

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

Встроенный интерфейс I2C обеспечивает диагностику и настройку, доступ к регистрам управления работой логической схемы и хранящимся в памяти EEPROM рабочим профилям драйвера.

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

Заключение

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

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

Рассмотрим драйвер электродвигателей на транзисторах и микросхеме 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.

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

Ниже представлена принципиальная схема драйвера шагового двигателя. Драйвер построен с использованием трех микросхем 4000 серии и четырех силовых MOSFET транзисторов.

Схема тактируется генератором прямоугольных импульсов, построенного на логических элементах 2И-НЕ с триггером Шмитта на выходе. Рабочая частота генератора определяется общим сопротивлением PR1 + R2 и емкостью конденсатора С1, и может быть изменена в широком диапазоне с помощью PR1.

Фрагмент схемы на элементах EXOR и J-K триггере создает счетчик по модулю 4, с тактами высокого уровня. Переключатель SB1 (JP1) предназначен для изменения направления работы счетчика, а, следовательно, для изменения направления вращения шагового двигателя. С помощью переключателя SB2 (JP2) можно запускать и останавливать двигатель.

Управление катушками 4-фазного шагового двигателя осуществляется с помощью четырех MOSFET транзисторов (VT1…VT4). Использование в данной схеме транзисторов высокой мощности типа BUZ11 — это решение, гарантирующее надлежащую работу двигателя высокой мощности.

Ниже показаны формы сигналов на разъеме Х2, к которому подключаются обмотки шагового двигателя.

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

Разъемы JP1 и JP2 имеют ту же функцию, что и нажатие кнопки SB1 и SB2, так что вы можете подключить к ним кнопки и вынести их за пределы платы.
Печатная плата разработана таким образом, что вы можете установить транзисторы на общий радиатор, предварительно изолировав их слюдяными или силиконовыми прокладками.

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

Следует, упомянуть о способе подключения питания и обмоток двигателя к плате драйвера. В случае питания схемы управления и двигателя тем же напряжением, которое находится в диапазоне от 5…15 В, и ток потребления не превышает 1 А, то необходимо установить перемычку JP3 и питание подать к разъему VDD.

Если параметры питания шагового двигателя не находится в пределах напряжения питания схемы драйвера, то необходимо снять перемычку JP3, и к разъему VDD подвести напряжение питания от 5…15 В, а к разъему X2 подать питание в соответствии с параметрами шагового двигателя.

(8,5 Kb, скачано: 1 486)

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

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

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


Алгоритмы управления шаговым двигателем

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

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

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

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

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

Подробнее смотрите со схемами здесь:

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

Силовая часть драйвера - это , задача которого преобразовать подаваемые на фазы импульсы тока в перемещения ротора: один импульс - один точный шаг или микрошаг.

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


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

Контроллер шагового двигателя

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

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

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

Возможности контроллеров

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

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

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

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

Для достижения более высокого вращающего момента применяют двойной импульс - в две соседние катушки подается одновременно по импульсу. И если для полного оборота нужно 48 шагов, то опять же нужно 48 таких двойных импульсов, каждый приведет к шагу в 7,5 градусов но с на 40% большим моментом нежели в режиме одиночных импульсов. Скомбинировав оба способа можно получить 96 импульсов разделив шаги - получится 3,75 градуса на шаг - это комбинированный режим управления (полушаговый).