Если уж
бесполезный ящик имеет право на жизнь, то эта милая и познавательная игрушка и подавно. Она не требует больших трудозатрат, освежает знания физики и математики, увеличивает чувство собственной важности конструктора, повышает его авторитет в глазах представителей противоположного пола и младшего поколения.
Прогресс в развитии микроэлектромеханических систем (MEMS) привел к тому, что к началу 10-х годов XXI века гироскопы и акселерометры уменьшились до размера булавочной головки и стоят в розницу пару долларов. Чем не преминули воспользоваться разнообразные гики, создавшие устройства с недостижимыми ранее характеристиками — висящие на одном месте как влитые квадрокоптеры, «чувствующие» свое перемещение в пространстве игровые контроллеры,
летящие точно в цель самодельные баллистические ракеты способные сохранять вертикальное положение транспортные средства типа Segway.
Последний в свое время произвел фурор и породил армию почитателей, которые возжелали построить если не его полный аналог, то хотя бы действующую модель.
Вот и я, насмотревшись роликов на Youtube по запросу «балансирующий робот», в один прекрасный день решил, что тоже хочу повторить подобную конструкцию. Для этого были куплены:
—
шасси для построения самодвижущихся роботов: акриловая пластина, два моторчика с червячными редукторами, надеваемые на оси редукторов колеса, батарейный отсек и сопутствующая мелочь;
—
модуль для Arduino с распаянным чипом MPU6050, представляющим из себя трехосевой гироскоп и трехосевой акселерометр;
—
коммутатор нагрузки типа «H-мост». Мощность для маленьких моторчиков явно избыточна, но пускай будет. Может когда придется применить для привода мощного шагового двигателя;
Для ссылок найдены аналогичные товары по минимальной цене у продавцов с хорошей репутацией. Оригинальные ссылки уже не актуальны.
Уже имелись в наличии:
— Arduino Nano были куплены с запасом еще в те времена, когда
вода была мокрее USB-UART преобразователи в них делались на FT232, а не на CH340;
— лишний понижающий преобразователь тоже, как мне кажется, есть у любого любителя электронных поделок.
Программная часть и немного теории.
Алгоритм балансирующего робота опирается на некоторое количество матана.
Данные с гироскопа и акселерометра получаются по шине I2C, разделяются на компоненты и поступают на вход фильтра Калмана. На выходе фильтра получаем данные о положении в пространстве, усредненные и очищенные от шума. В нашем случае нас интересует угол только в одной плоскости. Текущее положение угла передается в PID-алгоритм (пропорционально-интегрально-дифференциальный), который на основании текущего угла наклона и его динамики во времени принимает решение о скважности и полярности сигналов на электромоторы управления положением. Поскольку в нашем случае управлять направлением движения робота мы не планируем, сигналы на левый и правый электромотор подаются одинаковые.
Желающие досконально разобраться в математике процесса без проблем найдут поиском в сети статьи о фильтре Калмана и PID-регулировании.
В нашем же случае будем пользоваться готовыми библиотеками в качестве «черных ящиков», целиком полагаясь на то, что авторы библиотек свою работу сделали хорошо.
В этом и заключается главная особенность Arduno, за которую она любима нубами и ненавидима труъ-эмбеддерами: поделки можно собирать из программных модулей как из кирпичей, вообще не догадываясь об их внутреннем функционировании.
Код:
drive.google.com/open?id=0ByfpVoSE6ehYem4tVG45MW5kZ3M
В скетче собственно моего кода не более 20%. Все остальное честно скопировано из чужих работ. Копирайты потеряны, но оригиналы всегда можно нагуглить используя строки кода в качестве запросов.
Аппаратная часть.
Отрезаем нижнюю часть оргстекла, подогрев изгибаем ее на 90 градусов, и прикручиваем винтами с другой стороны. Это будет полка для «приборного отсека» робота.
Прикрепляем электромоторы к нижней части и припаиваем к ним провода.
Крепим подходящими винтами коммутатор нагрузки и подключаем к нему электромоторы.
Собираем на макетке управляющую часть.
Паяем «подсистему питания». Напряжений питания будет два: стабилизированные 5 вольт для питания логики и прямой выход с батареи для питания моторов.
Собираем все вместе.
Приклеиваем компоненты на полке на двухсторонний скотч. Выглядит брутальненько, как и полагается настоящему роботу.
Ну и самый волнующий вопрос: заработало ли устройство? Да, заработало практически сразу:
Конечно, по сравнению со «взрослыми» устройствами (с энкодерами, бесколлекторными моторами, продвинутыми алгоритмами и тщательным подбором коэффициентов) устойчивость оставляет желать лучшего, но для демонстрации возможностей сойдет.
более 10 лет назад собирали в институте таких работов, и у нас не было такой штуки как Motion Processing Unit и библиотек в интернетах.
Но автору всё равно зачёт! Взял и сделал!
Плюс за труды.
Кстати, можно пойти дальше, оставить одно колесо в центре, а балансировку в поперечной плоскости сделать с помощью двух рычагов с грузиками с разных сторон (на манер рук), которые поднимаются, чтобы сместить баланс влево-вправо. Тогда можно сделать отличного циркового робота ))
А про циркового робота всё же подумайте ))
Блин… а я может быть и сам подумаю. Идея прямо нравится. Вместо рук просто повесить по центру маятник с грузом, который будет отклоняться влево-вправо. Так даже лучше ))
А если сделать возможность отклонять маятник еще и вперед-назад, то можно будет создать управляемую игрушку. ПОшел заказывать компоненты ))
Движок один, на оба колеса сразу.
Аккумы у меня внизу получились,6050 на самом верху. Так и не поехал… При интесивном регулировании ардуина просто висла и мотор на полную врубался. Грешил на отсутствие помехоподавительного кондера на моторе, внешний ситуацию не спас. Так и не добил. Потом заказал аналоговые гирик и акселерометр, собрал, подключил и, все… Время свободное куда то испарилось…
SHENZHEN I/O
Здесь нужно уметь только соединить проводки и залить чужую прогу.
Как раз спаять это не главное, главное — понять как работает и настроить.
как придет домой и будет пить пиво. В раздумьях идет и пинает все, что под
ногу попадется. Пнул бутылку, она об камень и разбилась. Из нее вылетел джинн:
— Загадывай любое желание!
Мужик подумал-подумал:
— Хочу, чтобы в этой канистре пиво никогда не кончалось!
Джинн поколдовал и исчез.
А мужик четвертый год канистру открыть не может.
Шасси есть.
Электроника есть.
Инструкция теперь тоже есть.
Осталось кудато деть лень и я повторю эту конструкцию))))
Двигатели платформы имеют сопротивление 3.2 Ом.
При напряжении питания платформы порядка 6 Вольт (4 батарейки х 1.5 Вольт) получаем стартовый ток одного двигателя платформы — 1.8 Ампер.
L298N держит 4А суммарно (по 2А на канал), так что самое оно. Иначе бы драйверу плохело бы при стартах, а на обратном маятнике режим работы самый для драйвера тяжелый — приходиться постоянно дергаться туда-сюда.
У «народного» и более дешевого H-моста L293D — 1А на канал, этого маловато будет.
А как Вы логику питаете? Через Step-Down? Мне так и не удалось добиться устойчивой работы логики совместно с двигателями. Логика висла опять же на стартах/стопах двигателей.
UPD. А, сообразил. Вернее вспомнил. У мне Step-Down не получалось использовать, потому что это тварь двигатель в момент старта просаживает напряжения с батареек до уровня ниже 5 Вольт. А у Вас в качестве питания аккумы, по идее они легче отдают большие токи без просадки напряжения.
Ваш робот токи на двигателях или хотя бы напряжение питания в процессе работы не меряет? Было бы интересно на просадку посмотреть.
Ориентируетесь на мосты с полевиками aliexpress.com/item/DRV8833-2-Channel-DC-Motor-Driver-Module-Board-1-5A-3V-10V-H-Bridge/32752844339.html
А, нет, 1.5 А это на канал, и 2А в пике. Как раз то что надо.
Красава.
О, ему чего, защитные диоды внешние не нужны? Точно, красава…
Прошу еще учесть мизерные потерь энергии.
При питании от одного элемента lipo через L298N или L293D потери составят 30%-50%. Для отвода тепла на L298N и лепят такой радиатор.
После такого в небо тянет? Летающее крыло?
А вот шум при взлете, динамика, уффф класс.
Рулить не придется, все рули на скорости звука отпадут. Достаточно придать небольшое вращение и проект по прямой уйдет прямо в небо…
А вот собрать альтиметр и радио маяк придется :)
www.myrobot.ru/news/2008/09/20080910_1.php
Если уж хочется совсем без программирования, можно найти аналоговый акселерометр. А пропорциональную, дифференциальную и интегральную компоненты реализовать операционными усилителями и подстроечными резисторами. Уверен, что в первых ракетах так и было.
Заказал себе подобное шасси пару недель назад чуть дешевле, за 8.55 вот здесь, но оно походу чуть меньше обозреваемого… Жду когда посылка придет, и будем с сыном роботов мастерить))
Этот на шаговиках и ардуинке, умеет сам вставать:
www.youtube.com/watch?v=038e2j9nE3M
Этот — на шаговиках и малинке с камерой — распознаёт «дорожные знаки», ездит по линии:
www.youtube.com/watch?v=7ZKRFJymi3M
www.youtube.com/watch?v=O6XkH84JYjU
www.youtube.com/watch?v=3BJFxnap0AI
i2c — ноги A4, A5
10 и 11 нога — ШИМ есть. Но можно и другие выбрать.
foros.giltesa.com/otros/arduino/fc/docs/pinout/uno.jpg
Обожаю такие обзоры.