Уроки arduino: основы управления двигателями роботов

Управление двигателями робота на основе микроконтроллера Arduino

Arduino – отличная платформа для робототехники. Микроконтроллер предлагает множество входов, выходов и легко разработать код для работы с ними.

Этот урок является первым из серии «Роботы Arduino» и мы начнем с движения робота – путем управления двумя двигателями постоянного тока. Спасибо за данный урок нашим друзьям из проекта darkbluebit.com.

Шаг 1: Список комплектующих

Нам понадобятся для создания первого робота некоторые комплектующие.

  • Комплект-шасси для создания робота (на фото выше) – можно купить отдельными деталями или в наборе
  • Драйвер-мост двигателя H-Br >Шаг 2: Шасси

Есть много шасси для роботов, мы купили на Amazon.com комплект шасси для автомобиля Smart Robot от Ardokit, потому что это очень простой и довольно дешевый вариант. Он поставляется с двумя колесами, управляемыми двумя двигателями постоянного тока (3 – 6 В).

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

Шаг 3: H-мост (H-Bridge)

Arduino может обеспечить только очень ограниченный ток непосредственно от выходных контактов – около 20 – 40 мА. Этого достаточно для светодиода, но нам нужен еще один способ питания двигателей.

Контроллер H-Bridge (H-мост) – это схема, используемая для управления скоростью и направлением двигателя. В этом случае нам нужен двойной H-мост (H-Bridge) для управления двумя из них. В цепи используется внешнее питание для обеспечения тока для двигателей. Батарейный блок 4x AA (держатель, входящий в комплект корпуса) предназначен только для этой цели – таким образом, источник питания Arduino (батарея 9 В) можно разделить для защиты нашей платы.

Мы выбрали MOSFET на основе TB6612FNG от Pololu, вы также можете купить почти то же самое от SparkFun (с другим цветом и распиновкой). Эти H-мосты способны управлять двигателями в диапазоне от 4,5 В до 13,5 В и обеспечивать непрерывный ток 1 А (с пиками 3 А).

Распиновка Pololu TB6612FNG и SparkFun TB6612FNG

Шаг 4: Обратное подавление EMF

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

Мы можем подавить это поведение, подключив диод как на схеме ниже:

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

Шаг 5: Цепь

Наше финальное подключение можно посмотреть на схеме ниже:

Шаг 6: Код

Номера выводов в приведенном ниже коде соответствуют схеме с SparkFun H-Bridge (см.выше), номера контактов в видео на последнем шаге отличаются друг от друга, поскольку там использовался Pololu H-Bridge.

Шаг 7: Итоговый результат

На видео ниже процесс по созданию данного урока и итоговый результат.

Спасибо, что прошли этот урок с нами до конца! Желаем вам отличных проектов и до встречи в ближайших уроках.

Робот на Ардуино и машинка на Bluetooth своими руками

Робот – машинка на Ардуино становятся одним из самым популярных инженерных проектов в школьной робототехнике. Именно с таких устройств, автономных или управляемых со смартфона и bluetooth, начинается путь в робототехнику “после Lego”. К счастью, сегодня можно без труда купить все необходимые компоненты и достаточно быстро создать своего первого робота для езды по линии или объезда препятствий. В этой статье вы найдете подробную видео инструкцию как сделать продвинутый автомобиль Arduino Car своими руками, с питанием, датчиками линии, расстояния и управлении через bluetooth.

Робот на ардуино своими руками

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

Робот машина на Ардуино

Вот список ключевых компонентов, которые обязательно встретятся в проекте.

Контроллер Ардуино

Куда уж без него, если мы говорим о проектах на этой платформе. Как правило, роботы машины делают на базе плат Arduino Uno и Nano. Mega будут слишком большие, Pro Mini сложнее подключать к компьютеру и соединять с остальными компонентами, а Leonardo требуют дополнительных навыков в программировании, они дороже и их основное преимущество (тесная интеграция с компьютером в качестве периферийного устройства) в данном случае не слишком востребована.

Есть еще вариант использования плат ESP8266 или ESP32, тогда в проекте появляется возможность управления машиной через WiFi. Но и сами платы и их программирование требует определенных навыков, в этой статье мы будем говорить преимущественно об Uno или Nano.

Конструкция, шасси и двигатели робота на Ардуино

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

Двигатель, шасси и колеса машинки на ардуино

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

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

Ардуино – достаточно ранимое устройство, не терпящее больших нагрузок по току. Соединяя его с “брутальными” мощными двигателями, не избежать беды. Поэтому для нормальной совместной работы нам нужно будет включить в схему робота компонент, отвечающий за управление двигателями – подающий и отключающий ток на их обмотки. Речь идет о микросхеме или готовом модуле, которые называют драйвером двигателя. На нашем сайте есть статьи, посвященные драйверам, построенным на схеме H-моста. Если вы покупаете готовые шасси, то обязательно предусмотрите возможность размещения на них подходящего драйвера.

Красивый корпус

Как правило, вся конструкция автомобиля строится вокруг его шасси. Если посмотреть примеры готовых проектов, то они часто выглядят как “провода на колесиках” – внешний вид их изобилует пучками соединительных проводов, ведущих от восседающего на троне контроллера Ардуино к драйверам, моторам и датчикам. Между тем, красивый и функциональный корпус не только вызывает правильные эстетические чувства и помогает выделить вашу модель от остальных. Хороший корпус может превратить игрушку в реальное устройство, помогает привить навыки конструирования и промышленного дизайна, что важно для инженеров любого возраста.

Питание робота

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

Питание робота на Ардуино

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

  • Обычные батарейки AA. Тут нужно понимать, что платы Arduino Uno, Nano и большинство двигателей, используемых в Ардуино-робототехнике, требуют напряжения в диапазоне 6-9 вольт. Поэтому придется собрать вместе последовательно не менее 4 батареек на 1,5 В, причем сами батарейки должны быть хорошего качества и обеспечивать работу с достаточно большим током. Например, большинство солевых батареек этим критериям не удовлетворяют. Батарейки AAA при создании ардуино-машинок практически не используются из-за своей пониженной емкости (хотя могут использоваться в миниатюрных моделях, где размер имеет первостепенное значение).
  • Аккумулятор AA. Здесь возникает еще большее ограничение по напряжению и току. Большинство аккумуляторов выдают напряжение 1,2 вольт, поэтому их требуется больше для “собирания” нужных нам 6-9 вольт. Несомненным плюсом является возможность перезарядки.
  • Литиевые аккумуляторы 18650. Это уже “серьезная артиллерия”, позволяющая получить большое время автономной работы, возможность подзарядки и приемлемые характеристики по току и напряжению. Рабочее напряжение для таких элементов питания – 3,7 В, что позволяет собирать готовую схему питания всего из двух элементов.
  • Другие источники питания. Сюда можно включить как более мощные и габаритные никель-металлгидридные, кадмиевые аккумуляторы, так и многочисленные литий-ионные “плоские” варианты, используемые в дронах, смартфонах или другой портативной цифровой технике.

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

Где купить платформу и запчасти

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

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Робот на основе Arduino. Часть I – управление двигателями

Arduino – настолько распространенная и простая плата, что сложно не сделать на ее основе какого-нибудь незамысловатого робота. Например, такого:

Сегодня мы рассмотрим связь с драйвером TB6612FNG и управление двигателем с помощью этого драйвера.

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

Двигатели Mabuchi FA-130RA-18100

Двигатели, которые использовались для построения вышеприведенного робота, называются FA-130RA-18100. Это компактные игрушечные моторы. Они могут потреблять около 0.1 – 0.2 А на холостых оборотах. В реальной работе их токопотребление может составить 0.5 А. Если вы боитесь, что ваше приложение будет потреблять больше тока, то следует предусматривать какую-нибудь защиту от превышения тока, например, можно поставить предохранитель или организовать в микроконтроллере обратную связь по току.

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

Контроллер TB6612FNG является недорогим и легко монтируемым на плату решением. Некоторые компании продают этот контроллер уже в виде готового модуля, например, Pololu TB6612FNG Motor Driver Carrier. Он может стоить около $5.

Основные характеристики драйвера:

  • Два независимых канала двунаправленного управления двигателем

  • Диапазон логического напряжения 2.7 – 5.5 В

  • Диапазон напряжения питания двигателя 2.5 – 13.5 В

  • Непрерывный выходной ток 1 А, максимум на канал 3 А; можно соединять каналы, чтобы удвоить выходной ток.

Соединение TB6612FNG с микроконтроллером, источником питания и двигателями

• GND – земля микроконтроллера
• VCC – питание от микроконтроллера (2.7-5.5 В)
• AO1 – выход к контакту (-) двигателя A
• AO2 – выход к контакту (+) двигателя A
• BO2 – выход к контакту (+) двигателя B
• BO1 – выход к контакту (-) двигателя B
• VMOT – положительная полярность источника питания двигателя
• GND – отрицательная полярность источника питания двигателя

• PWMA – на ШИМ-вывод микроконтроллера
• AIN2 – на цифровой вывод микроконтроллера
• AIN1 – на цифровой вывод микроконтроллера
• STBY – на цифровой вывод микроконтроллера или соединить с питанием
• BIN1 – на цифровой вывод микроконтроллера
• BIN2 – на цифровой вывод микроконтроллера
• PWMB – на ШИМ-вывод микроконтроллера
• GND – земля микроконтроллера

Итак, как нам этим управлять?

Во-первых, ничего работать не станет, если вывод STBY не будет в высоком логическом состоянии. Его можно «навечно» подтянуть к питанию, или управлять им с помощью микроконтроллера.

Если вы хотите, чтобы двигатель A крутился по часовой стрелке, установите AIN1 в лог. «1», AIN2 в лог. «0», PWMA >0. Для вращения против часовой стрелки AIN1 в лог. «0», AIN2 в лог. «1», PWMA >0. Если вы не хотите регулировать скорость с помощью ШИМ (PWM), то можете выводы PWMA и PWMB соединить с питанием. В случае с Arduino это будет эквивалентно AnalogWrite(5,255);. В случае управления скоростью с помощью ШИМ нужно озаботиться минимальной шириной импульса, при которой будет обеспечиваться минимальная скорость. Низкие значения ШИМ могут привести также к прерывистой работе двигателя. В данном случае минимальное значение ШИМ, при котором двигатель бесперебойно вращался на минимальных оборотах, составило 35. В целом, это значение зависит от выбранного источника питания двигателя, мощности двигателя и веса робота.

Теперь, когда вы можете контролировать направление и скорость вращения каждого двигателя, вы можете легко управлять роботом. Равномерное вращение двигателей A и B приведет к движению робота по прямой. При этом для организации ровного движения робота могут потребоваться эксперименты со значениями ШИМ. Так, например, для одного мотора может потребоваться значение 255, а для другого 249. Вращая только один двигатель можно осуществлять повороты.

Транзистор

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

В цепи обязательно нужно поставить защитный диод, например 1N4001 или 1N4007. Этот диод не даст сгореть транзистору и контроллеру в момент остановки двигателя, когда ЭДС самоиндукции создаст на обмотках скачок напряжения.

В этой схеме можно использовать NPN транзистор КТ850А с током коллектор-эмиттер 2 Ампера. Мотор F130, который мы используем в этом уроке, при пуске может потреблять ток до 1 А, так что транзистор должен иметь некоторый запас по току.

Полевой транзистор

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

Вывод SIG можно подключить напрямую к любому цифровому выводу Ардуино. Использованный в этой схеме IRF540 имеет внушительный запас по току на канале сток-исток — 30 Ампер. Это значит, что по такой схеме можно управлять куда более мощными моторами.

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

Источники:

http://arduinomaster.ru/uroki-arduino/robot-mashinka-avtomobil-arduino/

http://digitrode.ru/articles/121-robot-na-osnove-arduino-chast-i-upravlenie-dvigatelyami.html

http://robotclass.ru/tutorials/arduino-dc-motor-driver/2/

http://coptersworld.ru/kvadrokopter-wltoys-q212-spaceship/

Ссылка на основную публикацию