Драйверы L293D, L298, TB6612 – H-мост управления двигателем. Драйвер двигателя


Драйверы двигателя L298N, L293D и Arduino Motor Shield

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

Драйвер двигателя в проектах ардуино

Для чего нужен драйвер двигателя?

Как известно, плата ардуино имеет существенные ограничения по силе тока присоединенной к ней нагрузки. Для платы это 800 mA, а для каждого отдельного вывода — и того меньше, 40mA. Мы не можем подключить напрямую к Arduino Uno, Mega или Nano даже самый маленький двигатель постоянного тока. Любой из этих двигателей в момент запуска или остановки создаст пиковые броски тока,  превышающие этот предел.

Как же тогда подключить двигатель к ардуино? Есть несколько вариантов действий:

Использовать реле. Мы включаем двигатель в отдельную электрическую сеть, никак не связанную с платой Arduino. Реле по команде ардуино замыкает или размыкает контакты, тем самым включает или выключает ток. Соответственно, двигатель включается или выключается. Главным преимуществом этой схемы является ее простота и возможность использовать  Главным недостатком данной схемы является то, что мы не можем управлять скоростью и направлением вращения.

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

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

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

Микросхема или плата расширения Motor Shield

Motor Shield – плата расширения для Ардуино, которая обеспечивает работу двигателей постоянного тока и шаговых двигателей. Самыми популярными платами Motor Shield являются схемы на базе чипов L298N и L293D, которые могут управлять несколькими двигателями. На плате установлен комплект сквозных колодок Ардуино Rev3, позволяющие устанавливать другие платы расширения. Также на плате имеется возможность выбора источника напряжения — Motor Shield может питаться как от Ардуино, так и от внешнего источника. На плате имеется светодиод, который показывает, работает ли устройство. Все это делает использование драйвера очень простым и надежным — не нужно самим изобретать велосипеды и решать уже кем-то решенные проблемы. В этой статье мы будем говорить именно о шилдах.

Принцип действия H-моста

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

Схема моста изображена на рисунке. Q1…Q4 0 полевые, биполярные или  IGBT транзисторы. Последние используются в высоковольтных сетях. Биполярные транзисторы практически не используются, они могут присутствовать в маломощных схемах. Для больших токов берут полевые транзисторы с изолированным затвором. Ключи не должны быть замкнуты вместе одновременно, чтобы не произошло короткого замыкания источника. Диоды D1…D4 ограничительные, обычно используются диоды Шоттки.

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

Q1 Q2 Q3 Q4 Состояние
1 0 0 1 Поворот мотора вправо
0 1 1 0 Поворот мотора влево
0 0 0 0 Свободное вращение
0 1 0 1 Торможение
1 0 1 0 Торможение
1 1 0 0 Короткое замыкание
0 0 1 1 Короткое замыкание

 

Драйвер двигателя L298N

Модуль используется для управления шаговыми двигателями с напряжением от 5 до 35 В.  При помощи одной платы L298N можно управлять сразу двумя двигателями. Наибольшая нагрузка, которую обеспечивает микросхема, достигает 2 А на каждый двигатель. Если подключить двигатели параллельно, это значение можно увеличить до 4 А.

Плата выглядит следующим образом:

Arduino Motor shield

Распиновка микросхемы L298N:

  • Vcc – используется для подключения внешнего питания;
  • 5В;
  • Земля GND;
  • IN1, IN2, IN3, IN4 – используется для плавного управления скоростью вращения мотора;
  • OUT1, OUT2 – используется для выхода с первого двигателя;
  • OUT3, OUT4 – используется для выхода со второго двигателя;
  • S1 – переключает питание схемы: от внешнего источника или от внутреннего преобразователя;
  • ENABLE A, B – требуются для раздельного управления каналами. Используются в двух режимах – активный, при котором каналами управляет микроконтроллер и имеется возможность изменения скорости вращения, и пассивный, в котором невозможно управлять скоростью двигателей (установлено максимальное значение).

Arduino Motor shield

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

Драйвер двигателя L293D

L293D – является самой простой микросхемой для работы с двигателями. L293D обладает двумя H-моста, которые позволяют управлять двумя двигателями. Рабочее напряжение микросхемы – 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2 А.

В схеме имеется 16 выходов. Распиновка:

  • +V – питание на 5 В;
  • +Vmotor – напряжение питания для мотором до 36 В;
  • 0V – земля;
  • En1, En2 –включают и выключают H-мосты;
  • In1, In2 – управляют первым H-мостом;
  • Out1, Out2 – подключение первого H-моста;
  • In3, In4 – управляют вторым H-мостом;
  • Out3, Out4 – подключение второго H-моста.

Arduino Motor shield

Для подключения к микроконтроллеру Arduino Uno нужно соединить выходы In1 на L293D и 7 пин на Ардуино, In2 – 8, In3 – 2, In4 – 3, En1 – 6, En2 – 5, V — 5V, Vmotor – 5 V, 0V – GND. Пример подключения одного двигателя к Ардуино показан на рисунке.

Arduino Motor shield

Драйвер двигателя на микросхеме HG7881

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

Arduino Motor shield

Плата содержит 2 схемы L9110S, работающие как H-мост.

Характеристики драйвера HG7881:
  • 4-контактное подключение;
  • Питание для двигателей от 2,5 В до 12 В;
  • Потребляемый ток менее 800 мА;
  • Малые габариты, небольшой вес.
Распиновка:
  • GND – земля;
  • Vcc — напряжение питания 2,5В – 12В;
  • A-IA – вход A(IA) для двигателя A;
  • A-IB – вход B (IB) для двигателя A;
  • B-IA – вход A(IA) для двигателя B;
  • B-IB — вход B (IB) для двигателя B.

В зависимости от поданного сигнала на выходах IA и IB будет разное состояние для двигателей. Возможные варианты для одного из моторов приведены в таблице.

IA IB Состояние мотора
0 0 Остановка
1 0 Двигается вперед
0 1 Двигается назад
1 1 Отключение

 

Подключение одного двигателя к Ардуино изображено на рисунке.

Arduino Motor shield

Сравнение модулей

Модуль L293D подает максимальный ток в 1,2А, в то время как на L298N можно добиться максимального тока в 4 А. Также L293D обладает меньшим КПД и быстро греется во время работы. При этом L293D является самой распространенной платой и стоит недорого.  Плата HG7881 отличается от L293D и L298N тем, что с ее помощью можно управлять только направлением вращения, скорость менять она не может. HG7881 – самый дешевый и самый малогабаритный модуль.

Подключение L298N к Arduino

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

Нужно присоединить источник питания. + подключается к пину 4 на плате L298N, минус (GND) – к 5 пину. Затем нужно соединить выходы с L298N и пины на Ардуино, причем некоторые из них должны поддерживать ШИМ-модуляцию. На плате Ардуино они обозначены ~. Выходы с L298N IN1, IN2, IN3 и IN4 подключить к D7, D6, D5 и D4 на Ардуино соответственно. Подключение всех остальных контактов представлено на схеме.

Arduino Motor shield

Направление вращения задается с помощью сигналов HIGH и LOW на каждый канал. Двигатели начнут вращаться, только когда на 7 пине для первого мотора и на 12 пине для второго на L298N будет сигнал HIGH. Подача LOW останавливает вращение. Чтобы управлять скоростью, используются ШИМ-сигналы.

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

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

arduinomaster.ru

Драйверы L293D, L298, TB6612 – H-мост управления двигателем

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

drajvery-l293d-l298-tb6612-h-most-upravleniya-dvigatelem-1В двигателях постоянного тока, чтобы изменить направление вращения достаточно поменять полярность питания, то есть, проще говоря, поменять плюс с минусом. Из-за этого ток начинает течь в обратном направлении, что приводит к изменению магнитного потока внутри двигателя, в результате чего вал двигателя вращается в обратную сторону. Анимация ниже показывает, по какому принципу работает H-мост:

drajvery-l293d-l298-tb6612-h-most-upravleniya-dvigatelem-2H-мост управления двигателем

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

H-мост на транзисторах

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

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

фото L293D

Это простой драйвер электродвигателя, содержащий в себе два H-моста, имеет возможность управления двигателем путем ШИМ.

распиновка L293D

Назначения выводов драйвера L293D:

  • 1,2 EN, 3,4 EN – служат для управления сигналом ШИМ.
  • 1А, 2А, 3А, 4А – вход управления направлением вращения электродвигателя.
  • 1Y, 2Y, 3Y, 4Y – выходы питающие двигатель.
  • Vcc1 – вывод питания логики контроллера +5В
  • Vcc2 – вывод для питания двигателей от +4.5В до +36В.

То как происходит управление L293D показано в таблице ниже:

drajvery-l293d-l298-tb6612-h-most-upravleniya-dvigatelem-6

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

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

Технические характеристики L293D:

  • Напряжение питания : +5В.
  • Напряжение питания двигателей: от +4.5 в до +36В.
  • Выходной ток: 600мА.
  • Максимальный выходной ток (в импульсе) 1,2А.
  • Рабочая температура от 0°C до 70°C.

Другой популярной микросхемой является L298. Она значительно мощнее, чем описанная ранее L293D. Микросхема L298 так же имеет в своем составе два H-моста и также поддерживает ШИМ.

L298 фото

Назначение выводов L298 очень похоже на L293D. Здесь так же есть два входа управления, входы EN и выходы на двигатель. Vss - это питание микросхемы, а Vs - это питание для двигателей.

распиновка L298Есть так же и различие, а именно выводы CURRENT SENSING, которые служат для измерения тока потребления двигателей. Эти выводы следует подключить к массе питания через небольшой резистор, примерно 0,5 Ом.Ниже приведена схема подключения L298:

схема L298

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

Технические характеристики L298:

  • Напряжение питания :+5В.
  • Напряжение питания двигателей: до +46В.
  • Максимальный ток, потребляемый двигателями: 4A.

Следующая микросхема H-моста – эта TB6612, новый драйвер с очень хорошими характеристиками, набирающий все большую популярность.

TB6612 блок схема

Вы можете заметить, что все эти драйверы электродвигателей одинаковы в управлении, но в TB6612 выходы спарены, из-за большой мощности.Максимальное напряжение питания TB6612 составляет 15В, а максимальный ток 1,2 А. При этом максимальный импульсный ток составляет 3,2A.

www.joyta.ru

Драйверы двигателей | Академия робототехники

Эта крошечная плата облегчит использование двухканального драйвера моторов Toshiba DRV8833, который может независимо управлять двумя электромоторами постоянного тока или одним биполярным шаговым мотором. Диапазон напряжений 4,5 — 13,5 В и непрерывный ток нагрузки 1 А (пиковый 3 А) на каждый канал обеспечивает этот великолепный драйвер для маломощных моторов.

Описание:TB6612FNG (308k pdf) великолепный двухканальный драйвер моторов, который идеально подходит для сопряжения микроконтроллера с двумя маленькими электродвигателями постоянного тока, такими как Gekko MR-12, или использовать для управления одним биполярным шаговым мотором. Основанные на MOSFET H-мостах намного более эффективны, чем основанные на BJT H-мостах которые используются в более старых драйверах, таких как L298N и LB1836M Sanyo, которые предоставляют больше тока моторам и меньше на питание логики (LB1836M иногда более предпочтительнее для действительно низковольтных приложений чем TB6612FNG). Эта небольшая плата дает Вам прямой доступ ко всем функциям TB6612FNG и еще дополнительно конденсаторы источника питания и защиту от переполюсовки питания на моторах (примечание: нет защиты от переполюсовки питания модуля).

В этом модуле контакты питания сделаны на одной стороне платы, а контакты управления сделаны на другой. Все вводы управления и имеют внутреннюю подтяжку к земле. У каждого из двух моторных каналов есть два контакта управления направлением и контакт регулировки скорости, на который поступает сигнал ШИМ с частотой до 100 кГц. Для того чтобы вернуть драйвер из дежурного режима на контакт STBY должен поступить сигнал высокого уровня.

У моторного драйвера TB6612FNG используемого на данной плате есть оценка пикового тока нагрузки 3 А на канал. Пиковые оценки для быстрых переходов (например при запуске мотора) и оценка непрерывного тока нагрузки 1 А зависит от различных условий, такие как окружающая температура. Фактический ток, который Вы можете обеспечить, будет зависеть от того, как хорошо Вы можете сохранить драйвер моторов холодным. Печатная плата разработана так, чтобы отводить тепло из микросхемы драйвера моторов, но производительность может быть улучшена, если добавить теплоотвод.

Для более совершенного управления мотором, основанного на этом драйвере, пожалуйста присмотритесь к контроллеру моторов Pololu Qik 2s9v1. Для управления роботом, основанного на этом драйвере, пожалуйста присмотритесь к контроллеру робота Pololu Baby Orangutan B-328, Pololu Orangutan SV-328, Pololu Orangutan SVP-1284 или роботу Pololu 3pi, где TB6612FNG подключен к программируемому пользователем микроконтроллеру AVR.

Спецификация:

  • Напряжение моторов (VMOT): 4,5 — 13,5 В
  • Напряжение логики (VCC): 2,7 — 5,5 В
  • Выходной максимальный ток: 3 А на каждый канал
  • Выходной непрерывный ток: 1 А на каждый канал (2 канала могут быть соединены параллельно для получения 1 канала 2 А)
  • Максимальная частота ШИМ: 100 кГц
  • Встроенная тепловая защита
  • Фильтрующие конденсаторы на обеих линиях питания
  • Схема защиты от переполюсовки питания на моторах

Практическое определение мощности рассеивания:В технической документации TB6612FNG рекомендованный максимальный ток равен 3 А на канал двигателя. Пиковая номинальная мощность для быстрых переходных процессов (например, когда двигатель стартует) и непрерывная номинальная мощность 1 А зависит от различных условий, таких как температура окружающей среды. Фактический ток, который вы можете подать на драйвер, будет зависеть от охлаждения двигателей. В печатной плате предусмотрен отвод тепла из микросхемы, но дополнительный радиатор никогда не помешает.

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

В комплект входят:

Две вилки штыревые прямые 1×8 шаг 2,54 мм или одна вилка штыревая прямая 1×16 шаг 2,54, которую можно разделить пополам. Вы можете припаять разъёмы прямо к плате и использовать со стандартными макетными и монтажными платами с расстоянием между выводами 2,54 мм, либо припаять провода прямо на плату для более компактной конструкции.

Данный перевод является собственностью интернет-магазина РОБОТОТЕХНИКА

Документация и другая информация:

Замечания по применению: Использование драйвера моторов на роботе Pololu 3pi и контроллерах робота Pololu Orangutan (Печатаемый PDF)Подробная информация о драйверах моторов робота Pololu 3pi, контроллеров робота Pololu Orangutan SV-328 и Baby Orangutan B-328, в том числе точные таблицы и примеры кода..

Файлы для скачивания:

Спецификация TB6612FNG (308k pdf)Техническое описание микросхемы Toshiba TB6612FNG — драйвер моторов.

Принципиальная схема драйвера моторов двухканального Pololu на TB6612FNG (156k pdf)Печатаемая принципиальная схема драйвера моторов двухканального Pololu на TB6612FNG.

Как использовать драйвер двигателя TB6612FNG с Arduino для чайниковЭто руководство объясняет, как управлять драйвером моторов двухканальным Pololu на TB6612FNG с помощью Arduino.

mirrobo.ru

Что такое драйвер шагового двигателя?

Драйвер шагового двигателя - электронное устройство, которое заставляет шаговый двигатель "шагать" по сигналам управления. Стандартом де-факто в области управления ШД являются сигналы STEP/DIR/ENABLE. STEP это сигнал шага, DIR это сигнал направления вращения, ENABLE это сигнал включения драйвера.

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

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

К драйверу ШД подключается источник питания, сам ШД (его обмотки) и сигналы управления. Стандартом по сигналам управления является управление сигналами STEP/DIR или CW/CCW и сигнал ENABLE.

Протокол STEP/DIR:

Сигнал STEP — Тактирующий сигнал, сигнал шага. Один импульс приводит к повороту ротора ШД на один шаг (не физический шаг ШД, а шаг выставленный на драйвере — 1:1, 1:8, 1:16 и т.д.). Обычно драйвер отрабатывает шаг по переднему или заднему фронту импульса.

Сигнал DIR — Потенциальный сигнал, сигнал направления. Логическая единица — ШД вращается по часовой стрелке, ноль — ШД вращается против часовой стрелки, или наоборот. Инвертировать сигнал DIR обычно можно либо из программы управления или поменять местами подключение фаз ШД в разъеме подключения в драйвере.

Протокол CW/CCW:

Сигнал CW — Тактирующий сигнал, сигнал шага. Один импульс приводит к повороту ротора ШД на один шаг (не физический шаг ШД, а шаг выставленный на драйвере — 1:1, 1:8, 1:16 и т. д.) по часовой стрелке. Обычно драйвер отрабатывает шаг по переднему или заднему фронту импульса.

Сигнал CW — Тактирующий сигнал, сигнал шага. Один импульс приводит к повороту ротора ШД на один шаг (не физический шаг ШД, а шаг выставленный на драйвере — 1:1, 1:8, 1:16 и т. д.) против часовой стрелки. Обычно драйвер отрабатывает шаг по переднему или заднему фронту импульса.

Сигнал ENABLE — Потенциальный сигнал, сигнал включения/выключения драйвера. Обычно логика работы такая: логическая единица (подано 5В на вход) — драйвер ШД выключен и обмотки ШД обесточены, ноль (ничего не подано или 0В на вход) — драйвер ШД включен и обмотки ШД запитаны.

Драйверы ШД могут иметь дополнительные функции:

• Контроль перегрузок по току.

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

• Контроль переполюсовки при подключении сигналов управления и питающих напряжений.

• Режим автоматического снижения тока обмотки при простое (отсутствии сигнала STEP) для снижения нагрева ШД и потребляемого тока (режим AUTO-SLEEP).

• Автоматический компенсатор среднечастотного резонанса ШД. Резонанс обычно проявляется в диапазоне 6-12 об/сек, ШД начинает гудеть и ротор останавливается. Начало и сила резонанса сильно зависит от параметров ШД и его механической нагрузки. Автоматический компенсатор среднечастотного резонанса позволяет полностью исключить резонирование ШД и сделать его вращение равномерным и устойчивым во всем диапазоне частот.

• Схему изменения формы фазовых токов с увеличением частоты (морфинг, переход из режима микрошага в режим шага при увеличении частоты). ШД способен отдать заявленный в ТХ момент только в режиме полного шага, поэтому в обычном драйвере ШД без морфинга при использовании микрошага ШД работает на 70% от максимальной мощности. Драйвер ШД с морфингом позволяет получить от ШД максимальную отдачу по моменту во всем диапазоне частот.

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

purelogic.ru

Двухканальный драйвер двигателя HG7881 (L9110S)

/*

  HG7881_Motor_Driver_Example - Arduino sketch

  

  This example shows how to drive a motor with using HG7881 (L9110) Dual

  Channel Motor Driver Module.  For simplicity, this example shows how to

  drive a single motor.  Both channels work the same way.

  

  This example is meant to illustrate how to operate the motor driver

  and is not intended to be elegant, efficient or useful.

  

  Connections:

  

    Arduino digital output D10 to motor driver input B-IA.

    Arduino digital output D11 to motor driver input B-IB.

    Motor driver VCC to operating voltage 5V.

    Motor driver GND to common ground.

    Motor driver MOTOR B screw terminals to a small motor.

*/

// wired connections

#define HG7881_B_IA 10 // D10 --> Motor B Input A --> MOTOR B +

#define HG7881_B_IB 11 // D11 --> Motor B Input B --> MOTOR B -

 

// functional connections

#define MOTOR_B_PWM HG7881_B_IA // Motor B PWM Speed

#define MOTOR_B_DIR HG7881_B_IB // Motor B Direction

// the actual values for "fast" and "slow" depend on the motor

#define PWM_SLOW 100  // arbitrary slow speed PWM duty cycle

#define PWM_FAST 200 // arbitrary fast speed PWM duty cycle

#define DIR_DELAY 1000 // brief delay for abrupt motor changes

void setup()

{

  Serial.begin( 9600 );

  pinMode( MOTOR_B_DIR, OUTPUT );

  pinMode( MOTOR_B_PWM, OUTPUT );

  digitalWrite( MOTOR_B_DIR, LOW );

  digitalWrite( MOTOR_B_PWM, LOW );

}

void loop()

{

  boolean isValidInput;

  // draw a menu on the serial port

  Serial.println( "-----------------------------" );

  Serial.println( "MENU:" );

  Serial.println( "1) Fast forward" );

  Serial.println( "2) Forward" );

  Serial.println( "3) Soft stop (coast)" );

  Serial.println( "4) Reverse" );

  Serial.println( "5) Fast reverse" );

  Serial.println( "6) Hard stop (brake)" );

  Serial.println( "-----------------------------" );

  do

  {

    byte c;

    // get the next character from the serial port

    Serial.print( "?" );

    while( !Serial.available() )

      ; // LOOP...

    c = Serial.read();

    // execute the menu option based on the character recieved

    switch( c )

    {

      case '1': // 1) Fast forward

        Serial.println( "Fast forward..." );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

        analogWrite( MOTOR_B_PWM, 255-PWM_FAST ); // PWM speed = fast

        isValidInput = true;

        break;      

        

      case '2': // 2) Forward      

        Serial.println( "Forward..." );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

        analogWrite( MOTOR_B_PWM, 255-PWM_SLOW ); // PWM speed = slow

        isValidInput = true;

        break;      

        

      case '3': // 3) Soft stop (preferred)

        Serial.println( "Soft stop (coast)..." );

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        isValidInput = true;

        break;      

      case '4': // 4) Reverse

        Serial.println( "Fast forward..." );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

        analogWrite( MOTOR_B_PWM, PWM_SLOW ); // PWM speed = slow

        isValidInput = true;

        break;      

        

      case '5': // 5) Fast reverse

        Serial.println( "Fast forward..." );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse      

        analogWrite( MOTOR_B_PWM, PWM_FAST ); // PWM speed = fast

        isValidInput = true;

        break;

        

      case '6': // 6) Hard stop (use with caution)

        Serial.println( "Hard stop (brake)..." );

        digitalWrite( MOTOR_B_DIR, HIGH );

        digitalWrite( MOTOR_B_PWM, HIGH );

        isValidInput = true;

        break;      

        

      default:

        // wrong character! display the menu again!

        isValidInput = false;

        break;

    }

  } while( isValidInput == true );

  // repeat the main loop and redraw the menu...

}

arduino-project.net

Схема простого драйвера для униполярного шагового двигателя

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

sxema-prostogo-drajvera-dlya-unipolyarnogo-shagovogo-dvigatelya-min

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

схема драйвера для униполярного шагового двигателя

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

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

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

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

sxema-prostogo-drajvera-dlya-unipolyarnogo-shagovogo-dvigatelya-2

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

sxema-prostogo-drajvera-dlya-unipolyarnogo-shagovogo-dvigatelya-3

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

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

sxema-prostogo-drajvera-dlya-unipolyarnogo-shagovogo-dvigatelya-4

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

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

Рисунок печатной платы (8,5 Kb, скачано: 875)

www.joyta.ru


Смотрите также