Меню

Шаговый двигатель постоянного тока l9110s

Драйвер шагового двигателя. Тестируем микросхему L9110

Откуда «ножки» растут

В настоящее время стали доступны и приобрели популярность различные станки с программным управлением. Это лазерные и фрезерные резчики и гравёры. А так же 3D принтеры. Все эти станки имеют один общий узел — шаговый двигатель.

И этому двигателю нужен драйвер.

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

Существует некоторое количество решений драйверов от различных компаний. В нашей статье мы рассмотрим самое доступное решение драйвера L9110 и его аналог HG7881 Это решение часто используется в Arduino

Теория и практика

Я решил применить микросхему L9110 в своём проекте.

Довольно легко нагуглил datasheet. Прочитал. Всё предельно понятно. Характеристики, распиновка, таблица истинности… По всем параметрам драйвер, вроде бы подходит. Напряжение коммутации — 12 вольт, выходной ток 800 ма. — всего хватает.

А что на деле?

Не откладывая в «долгий ящик» я сделал плату, написал и запустил тестовую программу…
Первое, на что я обратил внимание в своём устройстве — то, что микросхема драйвера сильно греется. Внимание! НА ХОЛОСТОМ ХОДУ. Без нагрузки. Это что за чудеса схемотехники?
Может у меня микросхема бракованная?

Пришла в голову идея рассмотреть сей девайс поподробнее. И не один, а кучу.
Сказано — сделано.
Хорошо, что у меня была припасена панелька SO-8 и плата для моделирования.
Ну, и контроллер на базе STM32.

Собран стенд и произведены измерения.

Да, кстати, кроме непосредственно, силового узла в микросхеме заложена логика исключающее ИЛИ. В даташите это описано.

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

В результате измерений получилась табличка:

Рассмотрим строчки 2 и 3. Что мы здесь видим?

  1. Падение напряжения на выходных транзисторах, при наличии нагрузки, около полутора вольт, что при токе 0,33 ампера даёт 0,5 ватт на канал.
  2. На холостом ходу микросхема потребляет 0,05 А, что при напряжении 12 В даёт 0,6 ватт на канал.

Другими словами, независимо от нагрузки она потребляет около 0,5 Вт на канал. Теперь понятно, почему я об неё обжигал пальцы.

Сильный нагрев — это, конечно недостаток. Но может свою функцию микросхема выполняет хорошо? Тут пригодился недавно подаренный себе 4-х лучевой осциллограф приставка. Не ожидал, что мне так скоро потребуются все 4 луча. Для тестирования написал простенькую программку на stm32, который давно использую в различных проектах. Программа, просто, генерирует 2 прямоугольных сигналы с трёхкратной разницей частот.

Поскольку один раз увидеть лучше чем много раз прочитать — прикладываю развёртку сигналов управления.

Ничего особо сложного. Просто прямоугольные импульсы сдвинутые с разницей частоты в 3 раза.

Верхняя часть экрана — входные сигналы — нижняя — выходные.

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

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

Она пролила больше света на эту загадочную ситуацию. Оказывается, логика работы драйвера немного шире. Две единицы на входе — это торможение ( то есть на выходе оба сигнала должно быть низкого уровня.) А два нуля на входе — это «висящие» контакты. Разрыв.

Значит два нуля на входе должны «подвешивать» выходы. Тогда, поведение разряжающегося конденсатора вполне предсказуемо. Однако две единицы на входах — должны быть надёжным нулём на выходе. А фактически это не так.

Я мог бы списать этот дефект на «китайского производителя». Однако, я тестировал микросхему по честному выпаянную из ардуиновской платы. При чём — не одну микросхему. Из нескольких плат. То есть, вероятность брака сильно снижена.

Вывод

Область применения микросхем L9110 уже, чем задекларирована, да и КПД низковат.
Рассеяние 0,5-0,6 ватта на одном ключе — это многовато. Не случайно это решение самое дешёвое.(10 центов за микросхему. на алиэкспрессе).

В следующих статьях будут рассмотрены альтернативные драйвера шаговых двигателей.

Читайте также:  Номинальный ток предохранителя для трансформатора 160 ква

Источник

Как подключить электродвигатель к Arduino

Как известно, электродвигатели бывают трёх основных типов: коллекторные, шаговые и сервоприводы. В данной статье мы рассмотрим подключение коллекторного электродвигателя к Arduino с помощью драйвера двигателей на основе микросхемы L9110S или аналогичной.

Для проекта нам понадобятся:

  • коллекторный электродвигатель постоянного тока или аналогичный;
  • драйвер двигателя L9110S, или шилд на микросхеме L293D или аналогичный;
  • шаговый двигатель 28BYJ-48 с драйвером ULN2003 или аналогичный;
  • Arduino UNO или иная совместимая плата;
  • соединительные провода (например, вот такой набор);
  • макетная плата;
  • персональный компьютер со средой разработки Arduino IDE.

1 Что такое драйвер двигателей и для чего он нужен

Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.

Различные варианты исполнения драйверов двигателей Различные варианты исполнения драйверов двигателей

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

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

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

Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя – 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).

Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей

Должно получиться что-то подобное:

Двигатель подключён к драйверу двигателей и Arduino Двигатель подключён к драйверу двигателей и Arduino

3 Скетч для управления коллекторным двигателем

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

Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.

Подключимся с помощью любой терминалки к порту, передадим число «100» – двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.

Управление электромотором с помощью драйвера двигателей и Arduino Управление электромотором с помощью драйвера двигателей и Arduino

А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:

4 Управление шаговым двигателем с помощью Arduino

Шаговый двигатель позволяет вращать ротор на определённый угол. Это бывает полезно, когда необходимо задать положение какому-либо механизму или его узлу. Шагом двигателя называется минимальный угол, на который можно повернуть ротор двигателя. Угол поворота и направление движения задаются в управляющей программе. Существует большое разнообазие шаговых двигателей. Рассмотрим работу с ними на примере двигателя 28BYJ-48 с драйвером ULN2003.

Шаговый двигатель с контроллером Шаговый двигатель с контроллером —> Шаговый двигатель с контроллером Шаговый двигатель с контроллером

Характеристики двигателя 28BYJ-48:

Характеристика Значение
Количество фаз 4
Напряжение питания от 5 до 12 В
Число шагов 64
Размер шага 5,625°
Скорость вращения 15 об./сек
Крутящий момент 450 г/см

Модуль с микросхемой драйвера для управления шаговым двигателем выглядит так:

Модуль с драйвером ULN2003 Модуль с драйвером ULN2003

На входы IN1…IN4 подаются управляющие сигналы от Arduino. Используем любые 4 цифровых пина, например, D8…D11. На вход питания необходимо подать постоянное напряжение от 5 до 12 В. Двигателю желательно обеспечить отдельное питание. Но в данном случае, т.к. не планируется использовать двигатель на постоянной основе, можно подать питание и от Arduino. Перемычка «Вкл/выкл» просто разрывает «плюс» питания, подаваемого на драйвер. В «боевом» изделии сюда можно, например, коммутировать питание с помощью реле, когда это необходимо, чтобы снизить потребление всего изделия. Итак, схема подключения будет такой:

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

Соберём всё по схеме.

Подключение шагового двигателя 28BYJ-48 к Arduino Подключение шагового двигателя 28BYJ-48 к Arduino

Для Arduino «из коробки» существует готовая библиотека для управления шаговыми двигателями. Она называется Stepper. Можно посмотреть готовые примеры в среде разработки для Arduino: File Examples Stepper. Они позволяют управлять шаговым двигателем, изменяя скорость и направление движения, поворачивать ротор на заданный угол. Как говорится – бери и пользуйся. Но давайте попробуем разобраться с принципом работы шагового двигателя самостоятельно, не применяя никаких библиотек.

Двигатель 28BYJ-48 имеет 4 фазы. Это означает, что у него имеются 4 электромагнитные катушки, которые под действием электрического тока притягивают сердечник. Если напряжение подавать на катушки поочерёдно, это заставит сердечник вращаться. Рисунок иллюстрирует данный принцип.

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

Здесь на (1) напряжение подано на катушки A и D, на (2) – на A и B, (3) – B и С, (4) – C и D. Далее цикл повторяется. И таким образом ротор двигателя вращается по кругу.

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

Простейший скетч управления шаговым двигателем (разворачивается)

Как можно догадаться, задержка del определяет скорость вращения двигателя. Уменьшая или увеличивая её можно ускорять или замедлять двигатель.

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

Скетч управления шаговым двигателем (разворачивается)

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

Финальный скетч управления шаговым двигателем (разворачивается)

Вот теперь совсем другое дело! Мы можем управлять скоростью шагового двигателя, задавая задержку после каждой фазы. Мы можем менять направление движения ротора двигателя. И, наконец, мы умеем поворачивать ротор на некоторый угол. Осталось только определить, какое число необходимо передавать в функции поворота rotateClockwise() и rotateCounterClockwise(), чтобы ротор шагового двигателя 1 раз провернулся на 360° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.

Источник

L9110S Драйвер двигателя, 2 канала для Arduino

в корзину 0″><< quantity_added >>

С этим товаром берут

Motor Shield (2 канала)
Драйвер моторов на L298N

Общие сведения

Драйвер двигателя L9110S — с его помощью можно контролировать вращение 2-х независимых коллекторных моторов постоянного тока или одного 4-х проводного 2-х фазного шагового двигателя.

Характеристики

  • Входное напряжение: 2.5-12 В;
  • Допустимый ток на канал: 800 мА;
  • Максимальный кратковременный ток: 1500 мА;
  • Поддержка DC двигателей: 2 шт;
  • Поддержка шагового двигателя: 1 шт;
  • Поддержка прямого подключение к выходам контроллера Arduino;
  • Рабочая температура: 0-80°C;
  • LED подсветка, как индикатор питания;
  • Размеры: 30 x 24 x 14 мм;
  • Вес: 29 г;

Подключение

Для удобства подключения к Arduino воспользуйтесь Trema Shield, Trema Power Shield, Motor Shield или Trema Set Shield.

Драйвер двигателя L9110S имеет два интерфейса — для подключения питания микроконтроллера и управляемых устройств:

Интерфейс для подключения управляемых устройств:

С остоит из двух элементов: MOTOR A, MOTOR B;

Интерфейс для подключения питания и управляющих сигналов:

Имеет 6 контактов:

  • VCC — 5В;
  • GND — GND;
  • A — IA — выход 1 Мотора А;
  • A — IB — выход 2 Мотора А;
  • B — IA — выход 1 Мотора В;
  • B — IB — выход 2 Мотора В;

Подробнее о драйвере

Драйвер может работать в двух режимах:

  • Режим 1 — управление направлением вращения каждого двигателя по отдельности;
  • Режим 2 — управление скоростью вращения двигателей с помощью ШИМ;

Две микросхемы L9110S, установленные на плате, работают по принципу H-моста и используются для смены полярности и питания двигателя.

Источник



Драйвер шагового двигателя L9110S

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

Заказ производился в китайском интернет-магазине Алиэкспресс стоимостью до 40 рублей:

Магазин AliExpress

В Грузии товар был получен в течении 20 дней в стандартном пакете:

Пакет с заказом

Плата модуля была герметично запечатана в антистатический пакет и обвернута полиэтиленом с пупырышками:

Пакет с пупырышками

Модуль в антистатическом пакете

С одной стороны платы имеются штырьки для подачи питания и сигнала, а с противоположной стороны установлены клеммники для подключения двигателя(ей). Все контакты подписаны и будет очень легко подключиться к модулю:

  • A-1A, A-1B — входы для двигателя А;
  • B-1A, B-1B — входы для двигателя B;
  • На VCC подаётся напряжение питания;
  • Вывод GND — общий;
  • К клеммам «Motor A» и «Motor B» соответственно подключаются двигатели «А» и «B»

Плата модуля L9110S - вид на контакты

Кроме самих микросхем из радиоэлементов на модуле имеются:

  • светодиод индикации питания;
  • гасящий резистор для светодиода на 1 кОм;
  • четыре подтягивающих резистора на входах по 10 кОм;
  • два шунтирующих конденсатора на выходах по 0,1 мкФ;
  • два шунтирующих конденсатора по питанию на 10 и 0,1 мкФ.

Принципиальная схема модуля L9110S

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

Как уже говорилось модуль основан на двух одноименных микросхемах L9110S работающих независимо друг от друга:

Плата модуля L9110S - вид на микросхемы

Коротко рассмотрим документацию на эти микросхемы:

Микросхема совмещает в себе узел управления и силовой узел в виде Н-моста. В справочных данных говорится что у микросхемы низкий ток потребления в режиме покоя(2 мкА), широкий предел напряжения питания (2,5-12 В), постоянный отдаваемый в нагрузку ток до 800 мА (пиковой до 2 А), небольшое напряжение насыщения и совместимость с уровнями сигналов ТТЛ и КМОП. На выходе имеются диоды для защиты от бросков тока в случае с индуктивной нагрузкой. Рабочая температура от 0 до 80 °C. Микросхему можно использовать для двигателей детских игрушек, для шаговых двигателей или в переключателях полярности напряжения. Микросхема имеет восемь выводов, два из которых(5 и 8) общие, и подсоединяются к минусу питания, а на два других(2 и 3) подаётся плюс напряжения питания. Выводы 1 и 4 являются выходами, а выводы 6 и 7 соответствующими входами драйвера.

Представляю Вашему внимаю логику работы и зависимость выходных уровней драйвера от входных:

При подаче высокого уровня на вход «А» и при низком уровне на входе «B» на выходе «А» устанавливается высокий выходной уровень. И наоборот, при подаче высокого уровня на вход «B» и при низком уровне на входе «А» на выходе «B» устанавливается высокий выходной уровень. При сохранении низкого уровня или при подаче высокого уровня на оба входа на обеих выходах будет низкий уровень.

Представляю так же типовую схему включения из документации:

Весь модуль в собранном виде не больше длины спичинки и легко может уместится в небольшом пространстве:

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

Перейдем к проверке и для этого нам понадобится:

  1. блок питания небольшой мощности на 5 Вольт;
  2. разъёмы для подключения к штырькам модуля;
  3. маломощный коллекторный двигатель постоянного тока;
  4. две небольшие кнопки для подачи сигналов управления;
  5. два светодиода для индикации полярности напряжения на выходе;
  6. токоограничительный резистор для светодиодов на сопротивление 220 Ом;
  7. ну и собственно сам модуль разумеется

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

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

В справочных данных указаны значения при напряжении питания 9 В, но так как этот модуль в основном применяется в конструкциях с питанием от 5 В, то мы будем проверять с напряжением питания 5 В.

Собираем схему и подаём напряжение питания:

Тестовая схема подключения L9110S

Напряжение находится в районе 5 В:

Напряжение питания L9110S

Замеряем ток и видим что без входных сигналов в режиме покоя ток потребления 24 мА:

ток потребления L9110S в режиме покоя

Далее поочередным нажатием то одной, то другой кнопки мы подаем уровень логического «0» на входы модуля.
Нажимаем одну из кнопок, двигатель вращается в одном из направлений и светится зелёный светодиод:

Вращение двигателя в прямом направлении

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

Вращение двигателя в обратном направлении

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

одновременная подача низкого уровня на оба входа

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

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

Источник