Ардуино нано управление мотором

Плавное управление мотором с Arduino

ОБНОВЛЕНИЯ

ТЕОРИЯ

Решил я сделать библиотеку для управления обычным щёточным мотором с энкодером, которая позволила бы управлять им как шаговым (с либой AccelStepper) с поддержкой ускорения и ограничения максимальной скорости. Библиотека полностью наследует все инструменты по работе с мотором из GyverMotor. Основной метод библиотеки tick() принимает текущее положение вала мотора (сигнал с потенциометра или энкодера) и позволяет:

  • Сделать полноценный сервопривод из моторчика с редуктором и резистором на валу
  • Поддерживать скорость вращения моторчика под переменной нагрузкой (шпиндель станка)
  • Из моторчика с энкодером позволяет получить аналог шагового мотора с возможностью повернуть вал на нужное количество оборотов (градусов) с плавным ускорением и ограничением максимальной скорости

БИБЛИОТЕКА

AccelMotor v1.3

Ардуино нано управление мотором

Библиотека для расширенного управления и стабилизации мотора с энкодером

  • Наследует все фишки из библиотеки GyverMotor (поддержка разных драйверов и режимов)
  • Режим поддержания скорости с обратной связью
  • Режим поворота на заданный угол с обратной связью
  • Настраиваемые коэффициенты PID регулятора
  • Ограничение ускорения и скорости
  • Библиотека принимает любой тип обратной связи: энкодер, потенциометр, и т.д.
  • Поддержка мотор-редукторов, настройка передаточного отношения энкодера
  • Регулятор учитывает “мёртвую зону” мотора
  • Все функции работают в градусах и “тиках” энкодера

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Arduino.ru

Управление 4 dc моторами на Arduino Nano

Всем доброго времени суток! После долгого ожидания мне пришёл мотор шилд из китая:http://s.aliexpress.com/IzA3ArUN

Данный шилд рассчитан на подключение 4-х dc моторов. Уважаемые господа поделитесь пожалуйста опытом как правильно подключить этот шилд к Arduino Nano? И где можно найти примеры скетчей по Управлению моторами через этот шилд? Спасибо.

По ключевым словам «l298n arduino» поисковики много чего выдают, а то, что у Вас сдвоенный шилд, принципиального значения не имеет.

Посмотрел схемы подключения на 2-х моторные мотор шилды l298n, но схема подключения отличается от моего шилда. Подскажите пожалуйста, на моей плате имеются три контакта (Vin, Gnd, +5v) на какие из них подавать питание? Также рядом с контактами Vin и Gnd находится джампер off/on, для чего он нужен и в каком положении должен находится?

Метод аналогии и эта http://zelectro.cc/Motor_shield_L298N_Arduino статья Вам поможет. Третья и четвёртая картинки с объяснениями.

Спасибо за информацию! Статья помогла, разобрался.

Запитал L298N от 7.2 v Ni-Cd аккумулятора, после 5-10 минут непрерывной езды L298N сильно греется и соответственно значительно падает производительность моторов, они практически перестают крутиться. Спустя определенное время, после того, как схема остывает, производительность моторов восстанавливается. Подскажите плиз что обычно делают в таких случаях и какие есть достойные альтернативы L298N?

Схему подключения, скетч управления — в студию. Мой ХШ отдан на СТО на замену масла.

Схему подключения, скетч управления — в студию. Мой ХШ отдан на СТО на замену масла.

Заранее извиняюсь, хорошую схему нарисовать все равно не смогу, по этому опишу словами.

Драйвер моторов — Arduino Nano (для управления скоростью моторов я не использую ШИМ, в целях экономии пинов на ардуине, по этому все ШИМ контакты на драйвере L298N соединены с VCC джамперами, собственно джамперы оставлены на том же месте где они стояли изначально когда драйвер приехал из китая. Моторы подключены соответственно к выходам Motor1+,Motor1-. Motor4+,Motor4-):

Arduino Nano — 3dr telemetry:

Скетч управления:

Ардуино нано управление мотором

Ардуино нано управление мотором

А где «вторая половина» описания схемы? В смысле какие моторы и как включены ..

А где «вторая половина» описания схемы? В смысле какие моторы и как включены ..

Motor1(+) — плюсовая клемма моторчика 1

Motor1(-) — минусовая клемма моторчика 1

Motor2(+) — плюсовая клемма моторчика 2

Motor2(-) — минусовая клемма моторчика 2

Motor3(+) — плюсовая клемма моторчика 3

Motor3(-) — минусовая клемма моторчика 3

Motor4(+) — плюсовая клемма моторчика 4

Motor4(-) — минусовая клемма моторчика 4

Мотор- редукторы 6v, шли в комплекте с шасси: http://s.aliexpress.com/IbmYbmYn

Ардуино нано управление мотором

Замечательно. Только у ваших моторов нет параметров «скока они жрут» на вашем питании. Проверяйте потребление моторов под нагрузкой. Нагрузку можете создать пальцами удерживая колеса. Если жрут больше 2А, то не удивительно что шилд греется. По виду этих моторов ничего сказать нельзя, надо мерить. Их бывает самых разных — просто вагон.

Кстати, блокировочные конденсаторы параллельно клеммам мотора — стоят? Если нет, то ставьте керамику на примерно 100нФ..

Ардуино нано управление мотором

Да и программу желательно так выполнить

Замечательно. Только у ваших моторов нет параметров «скока они жрут» на вашем питании. Проверяйте потребление моторов под нагрузкой. Нагрузку можете создать пальцами удерживая колеса. Если жрут больше 2А, то не удивительно что шилд греется. По виду этих моторов ничего сказать нельзя, надо мерить. Их бывает самых разных — просто вагон.

Кстати, блокировочные конденсаторы параллельно клеммам мотора — стоят? Если нет, то ставьте керамику на примерно 100нФ..

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

Замерил сегодня силу тока моторчика , вот результат, если я правильно понимаю, то жрут они очень мало.

без нагрузки и под нагрузкой:

Ардуино нано управление мотором

Ардуино нано управление мотором

Жрут действительно немного, от такого L298N не греется от слова «совсем». Мои даже со снятыми радиаторами от такого не греются.

Блокировочные конденсаторы да, ставят обязательно керамечиские от одной щетки мотора до другой. Их же ещё зовут «искрогасящими». Вполне достаточно одного конденсатора на мотор. Емкость 50-200нф, по идее лучше больше чем меньше, но не критично. В свое время ставил от 10нф до 1.0мкф .. после 50-100нф особой разницы нет, кроме резонансного значения емкости (индивидуально от мотора к мотору). Резонансный кондер у меня сожрал шетки мотора примерно за 10 часов работы .. не знаю, может мне так повезло, случай — единичный.

Напряжение пробоя надо смотреть не хуже на 3*U питания мотора. Я предпочитаю ставить (есть запас ещё) старую СССР-овскую керамику, зная что она вся на 50в — хватает точно. Еще надо посмотреть, есть ли блокирующие диоды на вашем шилде. Посмотрите сколько их стоит на одиночном L298N и есть ли такие на вашем. Дело в том, что в момент смены полярности или при ШИМ управлении мотором (регулировка «скорости», на самом деле мощности) с катушек мотора можете лететь нехилая ЭДС в генераторном режиме .. но, судя по вашей программе Вы не используете управление скоростью мотора через ШИМ (подают на вход EN этого драйвера).

Можно ставить блокирующие кондеры в кол-ве 3шт: между щетками + с каждой щетки на корпус мотора. Видел и такое, но чем это лучше — не знаю. По идее, якорь изолирован от корпуса мотора.

Да и ещё. Управление направлением вращения. Если Вы часто дергаете ноги направлений INx, то старайтесь вперед управлять той ногой, которую ВЫключаете, делать небольшую задержку в 5-10микросекунд и только потом Включать требуемую ногу в программе. Подбирая задержку можно полностью избежать сквозных токов через драйвер при переключении направлений, когда первый транзистор ещё не успел закрыться физически, а второй уже начал открываться. В этом разе ток течет через драйвер мимо двигла, поэтому его и зовут «сквозняком». Часто именно он греет шилд.

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

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

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

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

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

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

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

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

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

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

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

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

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

Ардуино нано управление мотором

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

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

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

Q1Q2Q3Q4Состояние
11Поворот мотора вправо
11Поворот мотора влево
Свободное вращение
11Торможение
11Торможение
11Короткое замыкание
11Короткое замыкание

Драйвер двигателя 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 будет разное состояние для двигателей. Возможные варианты для одного из моторов приведены в таблице.

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

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

Ардуино нано управление мотором

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

Модуль 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. При правильной сборке вал двигателя начнет вращаться.

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

Источник