Двигатель постоянного тока (глава 2): Н-мост и интегральные схемы
Сайт https://openclassrooms.com/fr/courses/2778161-programmez-vos-premiers-montages-avec-arduino/3285355-le-moteur-a-courant-continu-partie-2-le-pont-en-h-et-les-circuits-integres
SEkorp: продолжение и окончание. Однако, обратимся к трактату профессора.
В предыдущей главе вы узнали, как подключить двигатель с помощью управляющих транзисторов для защиты Arduino. Вы также видели, как управлять скоростью двигателя с помощью пинов ШИМ (PWM).
Но в любом случае двигатель будет вращаться только в одном направлении.
Цель этой главы – показать, как можно вращать двигатель в обоих направлениях (продолжая, конечно, управлять его скоростью) через Н-мост («аш-мост», но ни в коем случае ни «эн-мост» и ни«хэ-мост»!).
Затем вы увидите, как легко реализовать то же самое благодаря интегральным схемам, которые разработали специалисты по электронике.
Наконец, мы создадим программу, которая позволяет управлять двигателями двух вентиляторов, в зависимости от окружающей среды (один управляется кнопкой, другой – потенциометром).
Н-мост
Наш двигатель (предыдущая глава) может вращаться быстрее или медленнее, но только в одном направлении. Для изменения направления его нужно чисто механически переподключить. Но это же не удобно делать каждый раз! Что следует сделать, чтобы упростить процесс?
Вот небольшая схема, с которой можно начать:
Она называется Н-мост. Понятно, что такое название возникло в связи с формой (или видом) электрической цепи вокруг двигателя.
Эта схема позволяет решить некоторые наши проблемы. Но следует всё же иметь в виду и некоторые возможные ошибки.
Принцип
Переключатели работают попарно: A связан с D, B связан с С. В схеме, приведенной выше, ничего не происходит, потому что все переключатели разомкнуты, и ток в цепи не протекает. Двигатель остановлен.
Теперь давайте посмотрим, что происходит, когда замыкаются A и D (на рисунке слева), или – B и C (рисунок справа):
Итак, вы видите:
-->
на рисунке слева – выключателиАи D замкнуты. Ток через двигатель течёт слева направо. Двигатель вращается.
-->
на рисунке справа – выключатели B и C замкнуты. Ток через двигатель течёт справа налево.Двигатель вращается в обратном направлении!
Можно также замкнуть A и C (на рисунке слева) или B и D (на рисунке справа). В таком случае двигатель вращается по инерции и генерирует ток. Этот ток может быть использован в схеме H-моста как электромагнитный тормоз, что позволяет контролировать время работы двигателя, не давая ему свободного хода.
Если замкнуть все выключатели, то, как вы понимаете, произойдёт короткое замыкание . Если питание от батареи – она разрядится очень быстро. Если питание от платы Arduino, онавыйдет из строя - сгорит. Вы поняли, что нельзя одновременно замыкать все выключатели!
К счастью, в предыдущей главе мы выяснили, что Arduino может управлять транзисторами, которые могут коммутировать силовую цепь!
Но мы также знаем, надо их защитить от обратного напряжения! Вот схема, где в нужное место установлены диоды для защиты транзисторов:
Н-мост с транзисторами N-P-N, диодамидля подключения к Arduino. Это примерная схема и для её практической реализации необходимо внести некоторые дополнения.
SEkorp: схема на биполярных транзисторах(применяются N-P-N иP-N-P)
Схема на MOSFET’ах:(применяются с N-каналом иP-каналом)
На реле:
Я не проверял работу этих схем. Они приведены для иллюстрации. Однако вернёмся к трактату профессора.
Схемы с двойным Н-мостом
Не вам первым я сообщаю, что 4 контакта – это слишком много для управления одним двигателем постоянного тока. Поэтому, чтобы облегчить нам жизнь, в удивительном мире электроники появился новый чип. Электронный чип – это микросхема (и наоборот), т. е. какой-то небольшой ящик, который содержит миниатюрные компоненты, соединённые между собой с целью удовлетворения той или иной функции. Как и с транзисторами, только ссылка на Datasheet данного чипа будет в состоянии сказать вам, какова его роль и как он подключается!
В нашем случае, есть чипы, которые служат в качестве Н-моста. Это их функция. Мы даже обнаружим, что наши ожидания позволяет удовлетворить чип, именуемый L293D.
Существует L293 и L293D. D – значит диоды, которые защищают транзисторы. L293 не содержит диоды.
Мы будем использовать L293D, потому что это позволяет нам решить проблемы защиты встроенных в чип транзисторов.
Вот datasheet на эту микросхему. Документ называется «Quadruplehalf-H driver», что можно перевести как «Четырехместный полу-Н драйвер». Таким образом, это двойной H-мост. Тогда почему это имя Quadru? Просто потому, что с этой схемы, вы можете управлять либо 2-мя двигателями в обоих направлениях двигателя, либо 4-мя двигателями в одном направлении.
Фото микросхемы L293D:
SEkorp: вот фото микросхемы на фоне линейки
Однако вернёмся к трактату профессора.
Схема подключения:
Вы должны заметить, что микросхема всегда имеет знак для ориентации. Выводы пронумерованы именно так и никак иначе!
Назначение выводов:
-
Входы ENABLE1 и ENABLE2 отвечают за включение каждого из драйверов, входящих в состав микросхемы.
-
Входы INPUT1 и INPUT2 управляют двигателем, подключенным к выходам OUTPUT1 и OUTPUT2.
-
Входы INPUT3 и INPUT4 управляют двигателем, подключенным к выходам OUTPUT3 и OUTPUT4.
-
Контакт Vs соединяют с положительным полюсом источника электропитания двигателей или просто с положительным полюсом питания, если питание схемы и двигателей единое. Проще говоря, этот контакт отвечает за питание электродвигателей.
-
Контакт Vss соединяют с положительным полюсом источника питания. Этот контакт обеспечивает питание самой микросхемы.
-
Четыре контакта GND соединяют с "землей" (общим проводом или отрицательным полюсом источника питания). Кроме того, с помощью этих контактов обычно обеспечивают теплоотвод от микросхемы, поэтому их лучше всего распаивать на достаточно широкую контактную площадку.
SEkorp: в Datasheet’е показано, как и какой теплоотвод подсоединять к микросхеме. Кстати:
Характеристики микросхемы L293D
-
Напряжение питания двигателей (Vs) - 4,5...36V
-
напряжение питания микросхемы (Vss) - 5V
-
допустимый ток нагрузки - 600mA (на каждый канал)
-
пиковый (максимальный) ток на выходе - 1,2A (на каждый канал)
-
логический "0" входного напряжения - до 1,5V
-
логическая "1" входного напряжения - 2,3...7V
-
скорость переключений до 5 kHz.
-
защита от перегрева
Однако вернёмся к трактату профессора.
Вот другая цветнаясхема, которая позволяет нагляднее представить подключения:
Вы, наверное, заметили на схеме из Datasheet, что можно подключить либо один двигатель в двух направлениях, либо два двигателя в одном направлении:
Диоды размещать вокруг двигателей не нужно.
Вот, наконец, пример на макете:
Подключение к Arduino L293D, 2-х двигателей постоянного ТОКА, батареи 9В.
Этот монтаж является достаточно сложным. Найдите хотя бы разноцветные кабели, это важно.
Команды двигателя сверху – на pin 12 и 8. Привод ШИМ на pin 11.
Команды двигателя снизу - на pin2 и 4. Привод ШИМ на pin5.
Есть микросхема для управления большими токами, которая работает по тому же принципу: L298. Если вы поняли работу L293D, то с L298 у вас не будет проблем.
Хорошо, теперь посмотрим программирование с этой небольшой обломок мечты... (SEkorp: меня так тронула этот "ОБЛОМОК", что я решил оставить фразу в первозданном варианте автоперевода)
Запрограммируйте два двигатели постоянного ТОКА с микросхемой L293D
Теперь, когда вы смогли подключить двигатели, чип L293D, батарейку к плате Arduino, вы сможете вращать вперед и/или назад два двигателя с разной скоростью. Это уже здорово!!
Я вам сказал раньше, что половина L293D управляет одним двигателем. Поэтому необходимо продумать как можно лучше, какой pin-код команды для какого мотора использовать! Самый простой способ – это дать соответствующее имя переменной. Например:
Преимущество переменных в том, что если вы решаете задать другой pin-код в переменной, это не меняет программу.
Теперь давайте посмотрим таблицу, которая показывает поведение двигателя постоянного ТОКА (Moteur1 или Moteur2) в зависимости от состояния его выводов:
Выводы находятся в режиме OUTPUT и активируются с помощью команды:
с etat, которая принимает значение 1 (HIGH) или 0 (LOW).
Что касается управления ШИМ, я вам напоминаю, что используется команда:
с valeur в диапазоне от 0 (stop) и 255 (max).
Наконец, я советую вам использовать функции, чтобы лучше организовать вашу программу. В самом деле, в зависимости от того, что вы хотите получить, последовательность команд может стать сложная в loop() .
Вы не видите, как это сделать? Давайте посмотрим на это вместе в следующем разделе!
Тишина... Двигатели постоянного тока... Это работает!
Вот программа, которая будет управлять каждым двигателем, благодаря функции, которую можно будет назвать actionMoteur. Эта функция будет принимать 3 аргумента:
-
Соответствующий привод: двигатель 1 или 2.
-
Направление вращения: 1 или -1 (в обратном направлении). Любое другое целое число, остановит двигатель.
-
Процент мощности: между 0% и 100%.
Функция actionMoteur затем будет анализировать эти аргументы, чтобы отправить правильную информацию от пинов, подсоединенных к L293D.
Связь с монитором не является обязательной, но она позволяет проверить работу программы. И вот программа управления двигателя с функцией actionMoteur :
Строка if (sens==-1 || sens==1) означает: если (sens равно -1 или если sensравно 1). Знак || в программировании – это логический оператор.
Таким образом, с помощью этих логических операторов вы можете проверить несколько условий:
|| означает «или» (or в английском языке)
! означает «нет/не» (not в английском языке)
&& означает «и» (and в английском языке).
Двигатели и взаимодействия
Как мы увидим в главе, посвященной автономному роботу, датчики состояния окружающей среды часто помогают управлять двигателями в функции. У нас, пока что имеются кнопка (опустил, поднял) и потенциометр (позиции вращения со значением между 0 и 1 024).
Что мы можем себе позволить с таким оборудованием? Почти ничего. Например, просто вентилятор. Или нет, два вентилятора. У одного скорость будем проконтролировать кнопкой, у другого – через потенциометр.
На рисунке макета соединений, где L293D вид сверху:
-
Двигатель 1, управляемый pin12, 8 и 11 для ШИМ ;Д
-
вигатель 2, управляемый pin2, 4 и 5 для ШИМ.
-
Регулятор будет связан с аналоговым pin аналоговый А0.
-
Кнопка будет подключен к pin 7 Arduino в режиме INPUT_PULLUP
Для этой программы, вам не обязательно использовать настоящие вентиляторы с вашими двигателями. Но это хороший опыт, так как механическая часть, и создание действующей модели занимает значительную долю в робототехнике.
Пояснения к программе, созданной ранее, с некоторыми нюансами:
Первый двигатель должен быть связан с кнопкой:
-
начала до остановки,
-
поддержка = 25% скорости,
-
другой поддержки = 50% скорости,
-
другой поддержки = 75% скорости,
-
другой поддержки=100% скорости,
-
другой поддержки = остановка вентилятора.
Второй двигатель должен контролироваться регулятором:
-
потенциометр в центре = двигатель остановлен,
-
потенциометр вправо = двигатель ускоряется пропорционально в одном направлении,
-
потенциометр влево = двигатель ускоряется пропорционально в другую сторону.
Вы можете создавать новые функции, чтобы удовлетворить ваши потребности и добиться успеха в этом упражнении. Как обычно, имеется не только один путь решения задачи.
Сложность будет в считывание положения потенциометра и преобразование его в число и скорость.
Вывод на сериал монитор может помочь вам проверить программу.
Сериал монитор – это средство общения с Arduino, и хороший способ для отладки программы (чтение значений, состояние пинов...). Строки, используемые в качестве теста при разработке программы, затем могут быть поставлены в комментарии или вообще удалены, когда программа завершена.
Например, производство вентиляторов...
Если вы еще не знакомы с изготовлением роботов или других объектов, вы можете начать просто. В случае вентиляторов, вы можете вырезать прямоугольники из картона для обуви. Затем возьмите пробку (типа от бутылки вина), и вставьте в неё импровизированные лопасти (3 вполне достаточно). Затем сажаете эту конструкцию на ось двигателя (сильный клей), и этого хватит на данный момент.
Поставьте ваш двигатель на край стола (или на стопку книг) и закрепите с помощью скотча. Конечно, такая конструкция не является очень сложной, и не будет иметь долгий срок службы. Но это хорошее начало, если у вас нет идей, чтобы сделать свой более-менее приличный вентилятор!
Запомните то, что делает все богатство сообщества пользователей Arduino : их творчество! Каждый найдет, в зависимости от его проектов, идеи для разработки своих моделей и платформ. И здесь редко всё получается с первого раза!
Я думаю, что я всё сказал.
Пример программы final...
Вот код, который я предлагаю. Ваш, безусловно, будет отличается, потому что есть множество способов решения данной задачи!
Думаю, что этого вполне достаточно для 2-х двигателей... и за столь короткое время!
Несколько слов в конце этого краткого вводного курса по программированию с платой Arduino.
Теперь вы знаете, как создавать всевозможные электронные приспособления и управлять ими с помощью платы Arduino. Вспомним о ваших достижениях за это время:
-
Компоненты, которые вы научились подключать: светодиоды, кнопки, потенциометры, двигатели и серводвигатели. Кроме того, созданы программы, чтобы заставить мигать светодиоды, запрограммировать цифровой кубик, чтобы привести в движение двигатель...
-
Программы, которые вы создали, чтобы управлять этимикомпонентами, содержат:
циклы, условия, функции, тексты, константы и переменные, которые хорошо понятны, если сопровождаются ясными комментариями;
типичные функции Arduino, их константы и некоторые библиотеки;
сериал монитор IDE Arduino для отображения информации на экране компьютера.
Остается, конечно, очень многое узнать ещё. Это причина, по которой более продвинутый вольётся в ближайшее время в ряды тех, кто стремится к самосовершенствованию. В то же время, я предоставляю вам приложение, которое делает этот курс очень полезным дополнением для использования различных датчиков, совместимых с Arduino!
До свидания!
SEkorp, 13 апрель 2019г.
НАЗАД на страницу РАДИОардуино |