Как работает драйвер l293d
Шаговые двигатели нашли широкое применение в современной промышленности и самоделках. Их используют там, где необходимо обеспечить точность позиционирования механических узлов, не прибегая к помощи обратной связи и точным измерениям.
Сегодня хочу поговорить об особой разновидности шаговых моторов — миниатюрные шаговые двигатели, которые применяются в конструкциях оптических систем. Мы подробно рассмотрим их устройство и способы управления такими крошечными моторчиками.
Шаговый двигатель — бесколлекторный (бесщёточный) электрический двигатель с несколькими обмотками (фазами), расположенными на статоре и магнитами (часто постоянными) на роторе. Подавая напряжения на обмотки статора, мы можем фиксировать положение ротора, а подавая напряжение на обмотки последовательно можно получить перемещение ротора из одного положения в другое (шаг), причём этот шаг имеет фиксированную угловую величину.
Мы не будем останавливаться на рассмотрении каждого типа шагового двигателя. Об этом в сети написано довольно много и хорошо, например здесь.
Хочу поговорить об особой разновидности шаговых моторов — миниатюрные шаговые двигатели, которые применяются в конструкциях оптических систем. Такие малыши имеются в свободной продаже. Но в сети, особенно в русскоязычной, очень мало информации по таким моторчикам. Потому, когда мне потребовалось использовать их в своём проекте, пришлось изрядно поискать информации и провести пару экспериментов.
Результатами своих поисков и экспериментами я поделюсь в этой статье.
Мы рассмотрим вопросы управления такими маленькими моторчиками, а именно:
- драйвер L293D + микроконтроллер ATtiny44;
- драйвер TMC2208 + микроконтроллер ATtiny44;
- микроконтроллер ATtiny44 (без драйвера).
Знакомство
Сначала немного посмотрим на внешний вид нашего героя:
Он действительно очень маленький! Согласно умной книжке Петренко С.Ф.
«Пьезоэлектрические двигатели в приборостроении», меньших размеров электромагнитные моторчики создать в принципе невозможно… то есть возможно, но с уменьшением диаметра проволоки, из которой изготавливают обмотки, всё больше энергии рассеивается в виде тепла в окружающую среду, что приводит к уменьшению КПД моторчика и делает их использование нерациональным.
Из примечательного, можно отметить, что его вал очень короткий и имеет специальную проточку для установки шестерни или рычага.
Отчётливо видны две обмотки, которые даже покрыты изоляцией разного цвета. Значит, наш моторчик относится, скорее всего, к классу биполярных шаговых двигателей.
Посмотрим как он устроен:
Считаю, наше знакомство с этими моторчиками будет не полным, если мы не посмотрим, что же у него внутри. Ведь всегда интересно заглянуть внутрь механизма! Разве нет?
Собственно, ничего необычного мы не увидели. Ротор намагничен. Подшипников нигде не наблюдается, всё на втулках. Задняя втулка запрессована в корпус двигателя. Передняя ничем не закреплена. Интересно, что корпус двигателя собирался точечной сваркой. Так что переднюю крышку корпуса пришлось спиливать.
Теперь перейдём к вопросу подключения и его электрическим характеристикам.
Убедимся, что он биполярный, прозвонив обмотки. Действительно биполярный, всё как на картинке выше. Сопротивление обмоток около 26Ом, хотя продавец указал 14Ом.
В описании сказано, что напряжение питания 5В. Хотя мы то с вами знаем, что для шагового двигателя важен ток, который будут потреблять его обмотки.
Пробуем подключить.
Эксперимент №1. L293D + ATtiny44
Как мы знаем, для управления биполярным шаговым двигателем необходимо не просто прикладывать напряжения к двум обмоткам в нужной последовательности, но и изменять направление тока в этих обмотках, причём делать это независимо друг от друга. Для этого на каждую обмотку нужен собственный Н-мост. Чтобы не городить его из транзисторов, был взят готовый в лице микросхемы L293D. Ещё одно её преимущество — у микросхемы имеются специальные выводы Enable1 и Enable2, который включают и выключают каждый мост. Их можно использовать чтобы подавать ШИМ сигнал, тем самым, возможно контролировать напряжения питания каждого моста. Зачем это может понадобиться, мы увидим дальше.
Кроме того, L293D может коммутировать напряжения до 36В и выдавать до 1,2А на каждый канал, чего вполне должно хватить для питания обмоток нашего моторчика.
Управляющие входы L293D подключены к выходам OC0A и OC0B, что позволит в будущем подавать на них ШИМ сигнал.
Прошивать контроллер будем через внутрисхемный программатор (на схеме не указан).
Вот как выглядит собранная схема на макетной плате:
И вот так расположен наш подопытный:
Теперь можно приступать к экспериментам.
Рассчитаем ток, который будет течь через обмотки двигателя при подключении их к напряжению 5В:
I=U/R = 5В/26Ом = 190мА
Совсем небольшой. Интересно как долго он сможет держать такой ток и не перегреться.
Включим в цепь одной из обмоток амперметр и вольтметр, и проведём замеры соответствующих величин при подачи питания на эту обмотку через драйвер.
При падении напряжения на обмотке 2.56В амперметр показывает ток 150мА, причём хорошо заметно, как начинает падать величина силы тока в процессе нагревания обмоток. Надо отметить, что не так уж и сильно он греется.
Убедившись, что напряжение 5В для моторчика опасности не представляет, попробуем покрутить им в разные стороны. И вот теперь пару слов мы скажем про режимы работы шагового двигателя.
Об этом довольно хорошо сказано здесь.
Не будем повторяться, но вспомним, что шаговый двигатель может работать в трёх режимах:
- Полношаговый однофазный это когда одновременно напряжение подаётся только на одну фазу двигателя, ротор делает шаг, затем текущая фаза выключается и включается следующая.
- Полношаговый двухфазный это когда напряжение подаётся одновременно на две фазы мотора, при этом, ротор притягивается одновременно к двум обмоткам, что создаёт больший крутящий момент.
- Микрошаговый режим в этом случае реализуется тот же принцип, что и на полношаговом двухфазном, то есть работают одновременно две обмотки, но напряжение (и как следствие ток) распределяется между ними неравномерно. Фактически, это означает, что мы можем поставить моторчик в неограниченное количество положений (на практике, разумеется, такого сделать нельзя). Увеличивается точность позиционирования.
Исходный код программы выглядит следующим образом:
Полношаговый режим. Одна фаза
Двигатель делает 16 шагов на один оборот. Причём шаги для двух фаз имеют не одинаковую угловую величину. Не знаю с чем это связано. Может конструкция двигателя такая?
Посмотрим на максимальную частоту шагов, которую он может обеспечить в таком режиме, не пропуская их.
Минимальная задержка между шагами 2мс, значит 500 шагов/секунду. Неплохо, это 31 об/сек = 1850 об/мин.
Полношаговый режим. Две фазы
Обратите внимание, что в этом случае шаги получаются ровнее, они одинаковы по величине (во всяком случае, более одинаковы, чем в предыдущем случае).
Естественно, в этом случае под напряжением находятся одновременно две обмотки и теплоотдача возрастает. Двигатель уже через несколько секунд нагревается достаточно сильно, потому эксперимент я прекратил.
Что с максимальной частотой шагов? 500 шагов/секунду; 31 об/сек = 1875 об/мин.
Надо сказать, что для шагового двигателя он довольно шустрый. Это связано с малым количеством магнитных полюсов на роторе.
Эксперимент №2. TMC2208 + ATtiny44
TMC2208 — название микросхемы-драйвера для управления биполярными шаговыми двигателями, аналогично называется модуль на её основе, который выпускается для установки в самодельные (и не только) 3D принтеры и имеет унифицированное расположение выводов.
Много и доходчиво сказано про этот модуль вот здесь.
В интернете много написано про то, как установить его в свой 3D принтер, но нас интересует как подключить модуль к микроконтроллеру, потому давайте разбираться.
Характеристики микросхемы впечатляют (только впечатлительных людей):
- напряжение питания логической части: 3-5В;
- напряжение питания двигателя 5.5-36В;
- пиковый ток 2А;
- настройка максимального тока двигателя;
- поддержка интерфейса UART как для управления, так и для конфигурирования внутренних регистров;
- автоматическое отключение питания;
- поддержка микрошагового режима управления двигателем вплоть до 1/16 шага.
Управлять ей очень просто, по сути нужно всего два пина микроконтроллера. Один подключаем к DIR — указываем направление вращения двигателя, другой подключаем к STEP — при подаче импульса микросхема производит необходимые манипуляции с токами и напряжениями на обмотках двигателя и тот делает один шаг.
Схема подключения будет выглядеть так:
Дополнительно я использовал пин EN, чтобы отключать моторчик и длительное время не держать обмотки под напряжением.
Перед тем как всё запустить нужно произвести предварительную настройку модуля. Во-первых, выставить желаемый режим микрошага. Во-вторых, выставить желаемый максимальный ток двигателя.
С микрошагом всё просто. За это отвечают пины MS1 и MS2.
Отмечу, что микросхема не скачкообразно меняет напряжение, а делает это «плавно», но так как микросхема цифровая, то на выходе у нас не гладкий сигнал, а сигнал с маленьким шагом, если верить документации, то каждый шаг она разбивает на 256 микрошагов. Сделано это для увеличения плавности хода, снижения шумов от двигателя и по идее не должно позволять конструкции, к которой он прикручен, входить в резонанс. Короче, всё для того, чтобы 3D принтер работал тише.
Чтобы выставить ток двигателя необходимо измерить напряжения на контакте Vref, который указан на рисунке. Изменить значение напряжения можно при помощи потенциометра, установленного рядом с контактом. Напряжение на контакте будет пропорционально току двигателя, и зависимость будет иметь следующий вид:
Нашему моторчику нужно примерно 150мА, потому Vref = 0,216В. Устанавливаем…
Подразумевается, что увеличение тока микросхема обеспечивает за счёт увеличения напряжения на обмотке. Потому, нужно позаботиться о том, чтобы этого напряжения хватило. Но, полагаю, для того маленького моторчика должно хватить и 5В.
Протестируем работу моторчика с различными режимами микрошага и посмотрим что получится (пауза между микрошагами 10мс):
Можно заметить, что движения моторчика стали более плавными (по сравнению с предыдущим экспериментом), однако характерные 16 шагов всё равно наблюдаются довольно чётко. Что же… видимо это черта шаговых двигателей с ротором из постоянных магнитов.
Ещё необходимо отметить, что моторчик в этом режиме нагревается почти также сильно, как в полношаговом режиме с двумя фазами. Оно и понятно, обмотки постоянно находятся под напряжением, непрерывно происходит выделение тепла.
Полагаю, для таких моторчиков использование такого драйвера, да и вообще режимов микрошага не очень целесообразно.
Эксперимент №3. ATtiny44-драйвер
Вернёмся ненадолго к первому эксперименту и вспомним, что входы EN1 и EN2 микросхемы драйвера подключены к пинам OC0A и OC0B микроконтроллера. Это значит, что мы можем подать туда ШИМ сигнал, генерируемый при помощи таймера TIMER0 и таким образом изменять напряжение, прикладываемое к обмоткам двигателя и соответственно регулировать ток, который будет протекать через них.
Согласно даташиту на микроконтроллер ATtiny44 максимальный ток, который может выдать один пин составляет всего 40мА. Причём не указано для какого вида тока (пульсирующего или постоянного) эта характеристика. Просто она есть и она вот такая…
Надо сказать, что я более 7 лет знаком с микроконтроллерами фирмы ATMEL. И ни разу у меня не возникло желания проверить эту строчку из даташита.
Возможно, производитель просто подстраховывается и на самом деле он может выдать больше, а может это действительно максимум, что может выдать один пин.
Мы это выясним. Но сначала нужно выяснить при каком минимальном токе моторчик вообще способен вращаться.
Используя схему из первого эксперимента, подгоняем значение тока через обмотки равное 40мА. Запускаем в полношаговом режиме с двумя фазами (так как будет выше крутящий момент):
Отлично! При 40мА двигатель успешно запустился! Был также выявлено минимальное значение тока обмоток, необходимое для устойчивой работы мотора, и равно оно 30мА.
Разумеется, крутящий момент будет значительно ниже, но для нас важен сам факт того, что удалось запустить моторчик с таким маленьким энергопотреблением.
Схема подключения шагового двигателя к микроконтроллеру будет следующей:
Поскольку каждый пин микроконтроллера работает как полумост (может коммутировать вывод микросхемы либо на Vcc, либо на GND), то для управления биполярным шаговым мотором нам понадобиться 4 пина микроконтроллера.
Немного поясню как работает эта программа. Это модифицированный код из первого эксперимента. Как я говорил выше, будет использован 8 битный TIMER0 для генерирования ШИМ сигнала на выходах OC0A и OC0B. Таймер настраивается в режим FastPWM с предделителем на 8 (частота сигнала при 8МГц тактового генератора микроконтроллера составляет 3906Гц).
Чтобы изменять полярности сигналов на обмотках происходит переключение пина микроконтроллера от Vcc к GND изменением соответствующего бита в регистре PORTx и изменением коэффициента заполнения ШИМ путём записи значений в регистры OCR0A и OCR0B (значения подбирались экспериментально).
Курс схемотехники, прослушанный на первом курсе института подсказывает, что мультиметр показывает среднеквадратическое значение напряжения и тока в двигателе.
Шаговый двигатель вращается от пинов микроконтроллера без драйверов!
Но здесь мы не выходим за пределы возможностей микроконтроллера, по крайней мере, если верить тому, что пишут в документации. В таком режиме микроконтроллер и моторчик могут работать долго. Действительно, эксперимент длился 20 минут. За это время не наблюдалось ни пропуска шагов, ни сброса контроллера, ни перегрева (ни у двигателя, ни у контроллера).
Отбросим все предосторожности
Уберём из эксперимента ШИМ и будем напрямую управлять пинами микроконтроллера при помощи регистров PORTx. Посмотрим что будет с микроконтроллером после этого.
Работает… с максимальным током в 51мА… Что же… неожиданно, похоже это и есть предельный ток, который может отдать один пин микроконтроллера? Если я ошибаюсь, поправьте меня.
В любом случае, ролик с ютуба не обманул. Действительно можно управлять этим моторчиком без всяких драйверов.
Выводы
Мы подробно изучили миниатюрные биполярные шаговые моторчики, их конструкцию и способы управления ими, для использования в собственных приложениях.
1. Миниатюрный биполярный шаговый мотор с ротором из постоянных магнитов действительно миниатюрный.
Его основные особенности:
- малое количество магнитных полюсов, как следствие, малое количество шагов (у моего, напомню, всего 16);
- относительно большая скорость вращения (следствие из предыдущего пункта), в эксперименте удалось достичь 1875 об/мин;
- неудовлетворительно работает в микрошаговых режимах (не удерживается промежуточное положение ротора);
3. Использование специализированного драйвера TMC2208 является спорным вопросом, так как микрошаговый режим не поддерживается самим двигателем, хотя переходы между шагами выполняются более плавно.
4. Возможно подключение шагового двигателя непосредственно к портам микроконтроллера. Но это только в рамках эксперимента, так как крутящий момент в данном случае совсем незначителен, да и малый ток не позволяет совершать шаги с большой скоростью.
В следующий раз расскажу, для чего именно нам потребовались такие маленькие шаговые моторчики.
ДРАЙВЕР ДВИГАТЕЛЕЙ L293D
Для управления двигателями робота необходимо устройство, которое бы преобразовывало управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей.
Существует достаточно много самых различных схем для управления электродвигателями. Они различаются как мощностью, так и элементной базой, на основе которой они выполнены.
Мы остановимся на самом простом драйвере управления двигателями, выполненном в виде полностью готовой к работе микросхемы. Эта микросхема называется L293D и является одной из самых распространенных микросхем, предназначенных для этой цели.
L293D содержит сразу два драйвера для управления электродвигателями небольшой мощности (четыре независимых канала, объединенных в две пары). Имеет две пары входов для управляющих сигналов и две пары выходов для подключения электромоторов. Кроме того, у L293D есть два входа для включения каждого из драйверов. Эти входы используются для управления скоростью вращения электромоторов с помощью широтно модулированного сигнала (ШИМ).
L293D обеспечивает разделение электропитания для микросхемы и для управляемых ею двигателей, что позволяет подключить электродвигатели с большим напряжением питания, чем у микросхемы. Разделение электропитания микросхем и электродвигателей может быть также необходимо для уменьшения помех, вызванных бросками напряжения, связанными с работой моторов.
Принцип работы каждого из драйверов, входящих в состав микросхемы, идентичен, поэтому рассмотрим принцип работы одного из них.
К выходам OUTPUT1 и OUTPUT2 подключим электромотор MOTOR1.
На вход ENABLE1, включающий драйвер, подадим сигнал (соединим с положительным полюсом источника питания +5V). Если при этом на входы INPUT1 и INPUT2 не подаются сигналы, то мотор вращаться не будет.
Если вход INPUT1 соединить с положительным полюсом источника питания, а вход INPUT2 - с отрицательным, то мотор начнет вращаться.
Теперь попробуем соединить вход INPUT1 с отрицательным полюсом источника питания, а вход INPUT2 - с положительным. Мотор начнет вращаться в другую сторону.
Попробуем подать сигналы одного уровня сразу на оба управляющих входа INPUT1 и INPUT2 (соединить оба входа с положительным полюсом источника питания или с отрицательным) - мотор вращаться не будет.
Если мы уберем сигнал с входа ENABLE1, то при любых вариантах наличия сигналов на входах INPUT1 и INPUT2 мотор вращаться не будет.
Представить лучше принцип работы драйвера двигателя можно, рассмотрев следующую таблицу:
Теперь рассмотрим назначение выводов микросхемы L293D.
- напряжение питания двигателей (Vs) - 4,5. 36V
- напряжение питания микросхемы (Vss) - 5V
- допустимый ток нагрузки - 600mA (на каждый канал)
- пиковый (максимальный) ток на выходе - 1,2A (на каждый канал)
- логический "0" входного напряжения - до 1,5V
- логическая "1" входного напряжения - 2,3. 7V
- скорость переключений до 5 kHz.
- защита от перегрева
Примечание:
Об особенностях L293DNE - аналога микросхемы L293D - см. врезку в статье "Как сделать простейшего робота".
От усилителя тока к драйверу L293.
В прошлой части статьи мы ознакомились со схемой усилителя тока и описали его работу. Если внимательней рассмотреть такой двухтактный усилитель тока, то можно заметить, что его выход оказывается как бы подключён то к плюсу источника питания, то к минусу, в зависимости от уровня входного напряжения. То есть усилитель тока работает как переключатель, как электронный ключ! В таком случае так и говорят: "усилитель работает в ключевом режиме".
Теперь, чтобы легче понять логику работы L293, заменим её внутреннюю схему на условные блоки в виде электронных ключей или переключателей (Анимация 1-а). Если на таком ключе управляющий сигнал имеет низкий уровень напряжения ( "0" ), то ключ находятся в одном положении, а если высокий уровень ( "1" ) - то в другом положении.
Внутри микросхемы управляющие сигналы таких электронных ключей соединены определённым образом между собой или выведены наружу к ножкам микросхемы. А чтобы электронный ключ находился в каком то определённом положении, его управляющий электрод может быть притянут к GND (Анимация 1-б) или подтянут к напряжению питания Vs (Анимация 1-в). Резистор в таком случае имеет сопротивление в несколько десятков килоОм и расположен внутри самой микросхемы.
Соединив два электронных ключа (переключатель и замыкатель) как показано на анимации 2, получим часть внутренней схемы L293. На этой анимации показана зависимость состояния ротора мотора от входных сигналов INPUT и ENABLE:
Поняв принцип построения схем на основе электронных ключей, будет нетрудно разобраться и в схеме на рис. 1. Там изображена внутренняя структура L293 с использованием блоков электронных ключей. Такое упрощение позволяет легче понять взаимосвязи сигналов. Следует напомнить, что в нашем случае все управляющие ножки L293 подтянуты через внутренние резисторы к Vss, то есть к плюсу питания логической части микросхемы.
Рис. 1. Структура L293 на электронных ключах.
Для примера проследим цепь от входа "INPUT2" до выхода "OUTPUT2".
До тех пор, пока на ножке INPUT2 присутствует сигнал высокого уровня, электронный ключ К3 будет находиться в указанном на схеме положении. В таком положении К3 может пропускать через себя ток "силового" источника Vs. Этот ток будет течь и через замкнутый ключ К4, но только если на ножке ENABLE1,2 будет высокий уровень. Таким образом ножка микросхемы OUTPUT2 оказывается как бы подключённой к положительному полюсу питания Vs. Если теперь на вход INPUT2 подать низкий уровень, то ключ К3 переключится в противоположное положение и ножка OUTPUT2 через ключи К4 и К3 окажется замкнутой на GND. По схеме нетрудно проследить, что при подаче низкого уровня напряжения на ножку ENABLE1,2 то оба ключа К2 и К4 одновременно перейдут в разомкнутое состояние. При разомкнутых ключах К2 и К4 выходные ножки OUTPUT1 и OUTPUT2 будут отключены от всей схемы, то есть будут "висеть в воздухе" и не зависеть от сигналов на ножках INPUT1 и/или INPUT2.
Аналогично устроены и остальные каналы усилителей тока микросхемы L293. Но нужно помнить, что управление всех четырёх усилителей тока разделено попарно ножками ENABLE1,2 и ENABLE3,4.
Почти так устроены все представители семейства микросхем L293. Отличия могут быть в корпусном исполнении, электрических характеристиках, наличием дополнительных ножек или внутренних элементов (защитных диодов).
Вот краткий перечень типов L293 с указанием основных отличий:
Как видите, об отличиях L293 можно судить непосредственно по буквенному индексу в обозначении. А более точно можно прочесть в даташите на конкретную микросхему. И всегда лучше брать даташит именно фирмы-производителя имеющейся L293, для этого можно свериться с логотипом фирмы на корпусе микросхемы (изображения логотипов).
Все представители L293 имеют так называемую "тепловую защиту". Если температура корпуса микросхемы превышает границу около 70°C, то эта защита отключает все выходные ножки OUTPUT1 .. OUTPUT4, тем самым предотвращая дальнейший нагрев в случае перегрузки. Но помните, от короткого замыкания ножек OUTPUT1 - OUTPUT4 на GND или Vs она не спасает!
Кстати, отечественная электропромышленность (например НТЦ СИТ в Брянске) тоже выпускает аналоги микросхем L293, так KP1128KT3 является аналогом L293B, а KP1128KT4 - аналогом L293D. Причём отечественные аналоги могут быть несколько дешевле зарубежных, не уступая им по электрическим параметрам.
Эксперименты с мотором.
Коллекторный моторчик постоянного тока - наиболее увлекательный в экспериментах тип нагрузки, ведь моторчик изменяет направление вращения при изменении полярности проходящего тока! Поэтому и далее мы будем использовать моторчики для объяснений.
Рис. 2. Мотор на GND.
Если моторчик подпаять одним выводом к одному полюсу питания, например к минусу - GND (Рис. 2), то для вращения ему ещё потребуется "плюс" питания. Именно этот второй вывод моторчика мы будем включать и выключать с помощью одного из усилителей тока из микросхемы L293. Тогда что бы вал моторчика начал вращаться, на вход усилителя необходимо подать высокий уровень напряжения, "1". Не забываем при этом подать разрешающий сигнал на соответствующий вход ENABLE (тут не показан).
Рис. 3. Мотор на Vs.
Теперь подключим моторчик одним выводом к плюсу питания, а вторым к выводу OUTPUT (Рис. 3). Теперь для вращения моторчика второй вывод необходимо включать на "минус". Это включение мы будем производить подачей низкого уровня напряжения "0" на вход INPUT. И опять не забываем подать "1" на нужный вход ENABLE.
Внимательно посмотрим на оба рисунка 2 и 3: для вращения моторчика в одном случае нам необходимо подать высокий уровень ("1"), в другом случае - низкий уровень ("0"). То есть независимо от исходного сигнала мы можем решить, в каком случае включать мотор.
В этих двух схемах моторчик будет крутиться только в одну сторону. А как же нам заставить его вращаться то в одну, то в другую сторону, ведь для этого нужно менять его выводы местами?!
В таких случаях применяют мостовую схему включения драйверов:
Рис. 4. Мостовая схема включения.
Почему такая схема называется мостовой - видно из картинки (Рис. 4), моторчик включён между двумя выходами двух драйверов, как между берегами рек. Для такой схемы есть более распространённый термин - "Н-мост".
Включив моторчик по такой схеме, можно управлять направлением его вращения, подавая разные комбинации на входы INPUT1 и INPUT2.
Теперь вспомним, что выходы OUTPUT1 и OUTPUT2 могут быть полностью отключены подачей сигнала "0" на вход ENABLE1,2. Значит ножкой ENABLE1,2, можно просто включать и выключать моторчик, независимо от сигналов на ножках INPUT1 и INPUT2. А если включать и выключать очень быстро, то моторчик будет вращаться с разной скоростью, в зависимости от времени "включено" и "выключено". Так мы получим управление скоростью вращения моторчика: подавая ШИМ-сигнал на ножку ENABLE1,2. А такой ШИМ-сигнал можно формировать, например, с помощью микроконтроллера.
На рис. 5 изображена схема подключения двух моторов к L293D, которая позволяет задавать не только направление вращения моторов (то есть возможность "реверса"), но и управлять их скоростью вращения с помощью ШИМ.
Рис. 5. Полнофункциональное управление двумя моторами (направление и скорость).
Используя схему по рис. 5 можно управлять и шаговым мотором. Для этого на место моторчиков подключаются две обмотки шагового мотора. Подавая соответствующие сигналы на ножки INPUT1, INPUT2, INPUT3, INPUT4 заставляют вращаться ротор шаговика.
L293 = Драйвер. Электрические характеристики L293.
Открыв даташит на микросхему L293 в первых же строках можно встретить название "драйвер" (в даташитах отечественных микросхем применяется слово "коммутатор").
Обычно говорят, что L293 - это "драйвер моторов", но это не совсем точно. Микросхема L293 может использоваться и с любым другим потребителями: реле, электромагнитами, мощными светодиодами, лампами, или даже как предусилительное устройство для более мощных транзисторов. То есть L293 - это "универсальный драйвер", а что к ней подключить зависит от фантазии мастера.
Не смотря на то, что все электрические параметры микросхемы L293 описаны в даташитах, приведём основные из них ещё раз и с небольшими пояснениями.
Первым делом опишем напряжения питания, подаваемое на ножки Vs и Vss.
Напряжение на ножке Vss используется для питания внутренней логики микросхемы L293. Этим напряжением питаются все усилители тока, логические элементы и блок термозащиты микросхемы L293. Напряжение Vss может находиться в пределах от 4,5 до 7 Вольт (см. Рис 6). Нужно при этом помнить, что сигналы на всех управляющих ножках (INPUT, ENABLE) не должны превышать напряжения питания логической части Vss!
Рис. 6. Схема подачи питания к L293.
На ножку Vs подаётся питание, которое будет подводиться к подключённой нагрузке, это так называемое "силовое", или "тяговое" питание. Уровень этого напряжения Vs всегда всегда должен быть больше или равен напряжению Vss: Vs >= Vss , то есть нельзя допускать, что бы "силовое" напряжение было меньше чем "логическое"!
Подача питания на выводы Vs и Vss может осуществляться и от одного источника. В этом случае питание будет общее для логической части и силовой.
Ток потребления нагрузки от любого выхода (OUTPUT1 - OUTPUT4) может быть максимум 600 миллиампер. Допускается импульсный ток в 1 Ампер на длительность не более 100 микросекунд и паузой между импульсами 200 мкс.
Рис. 7. PDIP-корпус.
Очень часто забывают учитывать максимальную рассеиваемую мощность микросхем. Напомним, допустимая рассеиваемая мощность L293 в корпусе PDIP-16 (рис. 7) - около 2 Ватт. То есть уже на стадии проектирования конструкции с L293 необходимо следить, что бы общая мощность, потребляемая подключённой нагрузкой, не превышала двух Ватт! Общая потребляемая мощность описывается формулой:
Подставив в эту формулу напряжение питания силовой части (Vs) и токи подключённых нагрузок к каждому выходу, то получим формулу для вычисления общей мощности:
Превышение общей мощности даже немного выше 2-ух Ватт ведёт к перегреву L293! Для лучшего охлаждения микросхемы иногда используют небольшой радиатор, прикреплённый к корпусу микросхемы. Так же небольшим радиатором может служить полоска медной фольги печатной платы. Но эти меры позволяют лишь незначительно разгрузить температурный режим микросхемы. Иногда для увеличения мощности включают две L293 параллельно. В любом случае, если расчётная мощность превышает 3 Ватта, то лучше выбрать другую микросхему драйвера, например L298.
ТРЮКИ С ДРАЙВЕРОМ МОТОРОВ L293D,
или
КАК СДЕЛАТЬ ПРОСТЕЙШЕГО РОБОТА С ПОИСКОВЫМ ПОВЕДЕНИЕМ
Статья "Трюки с драйвером двигателей L293D, или Как сделать простейшего робота с поисковым поведением" является продолжением статьи "Как сделать простейшего робота". В этой статье мы рассмотрим, как подключить двигатели к микросхеме L293D таким образом, чтобы реализовать простейшее поисковое поведение. Наш робот на одной микросхеме будет не просто следовать на свет, а при отсутствии света замирать до тех пор, пока на него снова не упадет свет, но будет пытаться искать источник света, поворачиваясь в его поиске, или следовать по границе освещенного пространства. Кроме того, мы рассмотрим, как сделать робота, следующего по линии, с одним датчиком без использования дополнительных микросхем.
Для того, чтобы собрать робота своими руками, нам понадобится только одна микросхема — драйвер двигателей L293D, фототранзистор, резистор с номиналом 22 КОм и два электромотора. Вместо L293D можно будет также использовать микросхему L293DNE.
Варианты подключения электромоторов
Итак, рассмотрим несколько схем, иллюстрирующих подключение электродвигателей к L293D.
Попробуем подключить электромотор одним выводом к OUTPUT1, а другим выводом к "земле" (минусу питания). Если мы подадим на INPUT1 сигнал низкого уровня (0), подключив его к минусу питания, ток через электромотор не пойдет и мотор вращаться не будет. Если же мы подадим на INPUT1 сигнал высокого уровня (1), подключив его к плюсу питания, то мотор будет вращаться.
Теперь подключим мотор выводу OUTPUT1 и к положительному полюсу источника питания. Если мы подадим на INPUT1 сигнал низкого уровня (0), подключив его к минусу питания, мотор будет вращаться. Если же мы подадим на INPUT1 сигнал высокого уровня (1), подключив его к плюсу питания, то мотор вращаться не будет.
Рассмотрим еще одну иллюстрацию. Подключим к L293D еще один мотор и подсоединим выводы моторов к разным полюсам источника питания: подключим первый мотор к отрицательному полюсу питания, а второй — к положительному. Соединим входы INPUT1 и INPUT4 так, как это показано на следующей схеме, и подадим на них сигнал низкого уровня (0). Первый мотор вращаться не будет, а второй будет вращаться.
Подав на входы сигнал высокого уровня (1), мы получим прямо противоположную картину: первый мотор будет вращаться, а второй не будет вращаться.
Таким образом, мы получили схему, в которой моторы ведут себя противоположным образом в зависимости от подаваемого на вход сигнала. Эта схема будет основой для наших дальнейших экспериментов.
Способы усиления сигнала от датчика
L293D имеет четыре канала управления, по сути, являющимися усилителями сигнала, которые могут быть изображены в виде треугольников. Треугольниками на схемах обычно обозначаются усилители. У каждого такого канала усиления есть вход INPUT и выход OUTPUT. Подробнее о том, что находится внутри L293D, можно прочитать в статье nest'а "От усилителя тока к драйверу L293".
Изображение каналов L293D в виде треугольников позволит сделать нашу схему более простой и понятной. Подключим к её входу фототранзистор, подтянутый к "земле" резистором. Резистор необходим для того, чтобы при отсутствии тока высокого уровня от фототранзистора на входе схемы присутствовал небольшой сигнал низкого уровня.
При реализации такой схемы мы легко убедимся, что тока, поступающего от фототранзистора, будет явно недостаточно, чтобы "раскачать" сразу два канала усиления L293D. Попробуем усилить сигнал от датчика с помощью еще одного канала усиления так, как показано на следующей схеме.
Получившаяся схема робота будет работать уже гораздо лучше. Усиленный сигнал от фототранзистора, поступающий на следующие каналы усиления, даст возможность стабильно работать даже моторчикам с достаточно высоким током потребления. Но у микросхемы драйвера моторов остается еще один неиспользованный канал усиления, который мы также можем пустить в дело. Подключим его в параллель с каналом, усиливающим ток от фототранзистора. Такое решение позволит полностью реализовать потенциал схемы и получить высокую отдачу на электромоторах.
Алгоритм робота с поисковым поведением
Попробуем рассмотреть алгоритм работы нашего нового робота.
Когда на фототранзистор будет падать свет, правый мотор будет вращаться, а левый мотор стоять. Робот будет поворачиваться налево. Когда фототранзистор не будет освещен, то правый мотор будет стоять, а левый — вращаться. Робот будет поворачиваться направо.
Таким образом, поставив робота возле источника света, мы будем наблюдать следующую ситуацию. Робот будет поворачиваться в поиске света, а когда "увидит" свет, то начнет двигаться к нему, делая небольшие повороты из стороны в сторону. Если мы направим фототранзистор немного вверх и поставим робота в освещенный от окна участок пола, то робот в поисках света будет следовать по границе освещенного пространства, иногда поворачиваясь, если потеряет свет из виду. Дойдя до конца освещенного участка, робот будет делать крутой разворот, снова возвращаясь к патрулированию освещенного места.
Схема робота
Для того, чтобы сделать робота своими руками, можно воспользоваться полной схемой, приведенной ниже, на которой показано подключение микросхемы L293D. В схеме робота может быть также использована микросхема драйвера двигателей L293DNE.
Микросхема L293D имеет гистерезис, поэтому в схеме рекомендуется использовать электромоторы с током потребления без нагрузки до 100 мА и напряжением питания до 5 В.
Если добавить роботу яркий светодиод так, как показано на схеме ниже, и расположить его так, как показано на рисунке в самом начале статьи, то можно получить робота, реагирующего на поднесенную к нему руку или полоску светлой бумаги. Чтобы робот бежал за полоской бумаги, надо держать её немного скашивая в левую сторону от датчика. Если же расположить светодиод и фототранзистор, направив их вниз, то можно получить робота, следующего по линии. Алгоритм его работы будет полностью идентичен описанному в статье "Простой робот с логической микросхемой".
Настройка чувствительности робота осуществляется подбором номинала резистора R1, который может лежать в диапазоне 4,7 — 33 КОм. Чем сопротивление R1 будет меньше, тем чувствительность робота будет ниже, а чем оно будет больше, тем чувствительность будет выше.
В заключение
Описанные роботы используют систему управления, основанную на простом однотактном автомате. Данная система базируется на мгновенных прямых стимул-ответных реакциях, что позволяет отнести этих роботов к классу BEAM-роботов. Конструкции роботов могут быть легко повторены начинающими, не требуют программирования или сложной настройки и являются простыми примерами увлекательных экспериментов в области робототехники. Дополнительную информацию можно найти на страничке о простейших роботах своими руками.
Драйвер двигателя выполняет крайне важную роль в проектах ардуино, использующих двигатели постоянного тока или шаговые двигатели. 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-моста
Принцип работы драйвера двигателя основан на принципе работы 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 А.
Плата выглядит следующим образом:
Распиновка микросхемы L298N:
- Vcc – используется для подключения внешнего питания;
- 5В;
- Земля GND;
- IN1, IN2, IN3, IN4 – используется для плавного управления скоростью вращения мотора;
- OUT1, OUT2 – используется для выхода с первого двигателя;
- OUT3, OUT4 – используется для выхода со второго двигателя;
- S1 – переключает питание схемы: от внешнего источника или от внутреннего преобразователя;
- ENABLE A, B – требуются для раздельного управления каналами. Используются в двух режимах – активный, при котором каналами управляет микроконтроллер и имеется возможность изменения скорости вращения, и пассивный, в котором невозможно управлять скоростью двигателей (установлено максимальное значение).
При подключении двух двигателей, нужно проверить, чтобы у них была одинаковая полярность. Если полярность разная, то при задании направления движения они будут вращаться в противоположные стороны.
Драйвер двигателя 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 Uno нужно соединить выходы In1 на L293D и 7 пин на Ардуино, In2 – 8, In3 – 2, In4 – 3, En1 – 6, En2 – 5, V – 5V, Vmotor – 5 V, 0V – GND. Пример подключения одного двигателя к Ардуино показан на рисунке.
Драйвер двигателя на микросхеме HG7881
HG7881 – двухканальный драйвер, к которому можно подключить 2 двигателя или четырехпроводной двухфазный шаговый двигатель. Устройство часто используется из-за своей невысокой стоимости. Драйвер используется только для изменения направления вращения, менять скорость он не может.
Плата содержит 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 | Отключение |
Подключение одного двигателя к Ардуино изображено на рисунке.
Сравнение модулей
Модуль 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 на Ардуино соответственно. Подключение всех остальных контактов представлено на схеме.
Направление вращения задается с помощью сигналов HIGH и LOW на каждый канал. Двигатели начнут вращаться, только когда на 7 пине для первого мотора и на 12 пине для второго на L298N будет сигнал HIGH. Подача LOW останавливает вращение. Чтобы управлять скоростью, используются ШИМ-сигналы.
Для управления шаговым двигателем в Arduino IDE существует стандартная библиотека Stepper library. Чтобы проверить работоспособность собранной схемы, можно загрузить тестовый пример stepper_oneRevolution. При правильной сборке вал двигателя начнет вращаться.
При работе с моторами Ардуино может периодически перезагружаться. Это возникает из-за того, что двигателям требуются большие токи при старте и в момент торможения. Для решения этой проблемы в плату встроены конденсаторы, диоды и другие схемы. Также для этих целей на шидле имеется раздельное питание.
Читайте также: