Ардуино самобалансирующий робот своими руками

Собираем балансирующего робота на шаговых моторах

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

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

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

Но мне хотелось большего, что-бы он свободно ездил и при этом делал это плавно и грациозно. Я проводил вечера пробуя различные механики на роботе с коллекторными редукторными моторами. Кое-что получалось, но не было идеала, не было стабильности. Впрочем что говорить, посмотрите ролики про этих роботов начиная со сборки:

Начинаю использовать шаговики

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

Я посоветовался с теми, кто уже пробовал делать подобных роботов, но брать чужие механики за основу не стал. Меня заводила именно идея конструирования и моделирования ПО для робота самотсоятельно.

Надеясь сэкономить на шаговых моторах я приобрел пару довольно хороших но маломощных моторов, их я использовал в статье ранее. Смоделил и распечатал пару колес, и смоделировал и вырезал из фанеры корпус:

Первоначальные схемы робота я привожу:

В дальнейшем моторы были заменены на более мощные NEMA 17 (17hs4401) с номинальным током 1.7А и резистивным сопротивлением обмоток 1.8Ом . У старых двигателей номинальный ток был неизвестен, а вот сопротивление обмоток было около 26 Ом, что непозволяло мотору развивать достаточную мощность.

Собственно чего стесняться, приведу ролик про сборку данного робота:

№ пунктаНазваниеКоличество1

1

2

2

3

4

4

2

5

1

6

1

7

1

8

2

9

2

10

2

11

по потребности

12

1

13

2

14

2

15

1

16

4

Корпус (я смоделировал его и выфрезеровал из 3мм фанеры), но можно сделать из пластиковых линеек
бокс аккумуляторный (стандартный подпружиненый, по 2шт аккумулятора в бокс)
аккумумляторы 18650 литиевый 3.7В (соединены последовательно), желательно высокого качества
драйвер шаговых моторов DRV8825, потребуется установить радиатор, я установил его с обратной стороны на плату (на рассеивающую метализацию)
выключатель (должен держать импульсные токи до 4 ампер)
гироcкоп-акселерометр MPU-6050 (берегитесь подделки)
стабилизатор напряжения 5В  (7805),  (питание BT-приемопередатчика), данный стабилизатор позволил оставлять HC-05 без напряжения, при подключении робота к компьютеру по USB.
конденсаторы  электролиты 16в 200мкф (требуются на вход и выход стабилизатора 7805 5в)
конденсаторы электролиты 25в 2000мкф (на входы питания шаговых драйверов — по инструкции подключения)
конденсаторы керамика 104 100нф (везде где только можно) на питание гироскопа, arduino, HC-05 (убираем высокачастотные помехи)
провода силовые и сигнальные (толстые и тонкие)
Bluetooth-приемопередатчик HC-05/HC-06 (через него рулим роботом)
шаговые моторы NEMA 17 (17hs4401)
 Колеса капролоновые 77мм диаметр (самофрезерованные)
Arduino NANO (не лучший вариант — лучше Mega или ESP8266), но что было под рукой
Диод на цепь питания Arduino NANO. Подцепил их последовательно для снижения питания от 4 последовательно соединенных 18650 (напряжение может достигать 18в), а каждый диод гасит немного на себе. Кроме того при программирование напряжение не наводится на силовые цепи робота

Математические выкладки

Программные листинги

Источник: http://zizibot.ru/articles/electronics/balancing-robot-on-step-motors/

Arduino Nano. А ты построил собственного балансирующего робота?

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

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

шасси для построения самодвижущихся роботов: акриловая пластина, два моторчика с червячными редукторами, надеваемые на оси редукторов колеса, батарейный отсек и сопутствующая мелочь;

— модуль для Arduino с распаянным чипом MPU6050, представляющим из себя трехосевой гироскоп и трехосевой акселерометр;

— коммутатор нагрузки типа «H-мост». Мощность для маленьких моторчиков явно избыточна, но пускай будет. Может когда придется применить для привода мощного шагового двигателя;

Для ссылок найдены аналогичные товары по минимальной цене у продавцов с хорошей репутацией. Оригинальные ссылки уже не актуальны.

Уже имелись в наличии:

— Arduino Nano были куплены с запасом еще в те времена, когда вода была мокрее USB-UART преобразователи в них делались на FT232, а не на CH340;

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

Программная часть и немного теории.

Алгоритм балансирующего робота опирается на некоторое количество матана.

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

Текущее положение угла передается в PID-алгоритм (пропорционально-интегрально-дифференциальный), который на основании текущего угла наклона и его динамики во времени принимает решение о скважности и полярности сигналов на электромоторы управления положением.

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

Желающие досконально разобраться в математике процесса без проблем найдут поиском в сети статьи о фильтре Калмана и PID-регулировании. В нашем же случае будем пользоваться готовыми библиотеками в качестве «черных ящиков», целиком полагаясь на то, что авторы библиотек свою работу сделали хорошо.

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

Источник: https://ongroup.ru/arduino_nano_a_ty_postroil_sobstvennogo_balansiruyuschego_robota.html

Как сделать робота на ардуино

Теперь нам нужно запрограммировать нашу Arduino UNO, чтобы сбалансировать робота. Здесь происходит вся магия; концепция, стоящая за ней, проста.

Мы должны проверить, наклоняется ли бот к передней или к задней части с помощью MPU6050, а затем, если он наклоняется к передней части, мы должны вращать колеса в прямом направлении, и если он наклоняется к задней части, мы должны вращать колеса в обратном направлении.

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

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

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

Таким образом, мы должны объединить оба и получить значение шага рыскания и крена нашего робота, из которого мы будем использовать только значение рыскания.

Теперь у нас есть библиотеки, добавленные в нашу среду разработки Arduino. Давайте начнем программирование для нашего Self-балансирующего робота.

Как и всегда, полный код для проекта приведен в конце этой страницы, здесь я просто объясняю наиболее важные фрагменты кода.

Ранее сообщалось, что код построен поверх примера кода MPU6050, мы просто собираемся оптимизировать код для нашей цели и добавить PID и технологию управления для нашего самобалансирующегося робота.

Сначала мы включаем библиотеки, которые необходимы для работы этой программы. Они включают встроенную библиотеку I2C, библиотеку PID и библиотеку MPU6050, которые мы только что загрузили.

Затем мы объявляем переменные, которые необходимы для получения данных от датчика MPU6050. Мы читаем как значения гравитационного вектора, так и значения кватерниона, а затем вычисляем значение угла и угла поворота бота. Конечный результат будет иметь массив float ypr [3].

Далее идет очень важный сегмент кода, и именно здесь вы будете тратить много времени на настройку нужного набора значений. Если ваш робот построен с очень хорошим центром тяжести, а компоненты симметрично расположены (что в большинстве случаев нет), тогда значение вашего уставки будет равно 180.

Просто подключите ваш бот к серийному монитору Arduino и наклоните его до положения балансировки, прочитайте значение, отображаемое на последовательном мониторе, и это ваше заданное значение. Значение Kp, Kd и Ki должно быть настроено в соответствии с вашим ботом.

Никакие два одинаковых бота не будут иметь одинаковых значений Kp, Kd и Ki, поэтому от него не уйти.

В следующей строке мы инициализируем алгоритм PID, передавая входные переменные input, output, set point, Kp, Ki и Kd. Из них мы уже установили значения заданного значения Kp, Ki и Kd в приведенном выше фрагменте кода.

Значение входа будет текущим значением рыскания, которое считывается с датчика MPU6050, а значением выхода будет значение, которое рассчитывается по алгоритму PID.

Таким образом, в основном алгоритм PID даст нам выходное значение, которое должно использоваться для коррекции значения Input, чтобы оно было близко к заданной точке.

Внутри функции void setup мы инициализируем MPU6050, настроив DMP (Digital Motion Processor). Это поможет нам объединить данные акселерометра с данными гироскопа и обеспечить надежное значение Yaw, Pitch and Roll. Мы не будем углубляться в это, так как это будет далеко за пределами темы.

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

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

Мы также должны инициализировать контакты PWM Digital, которые мы используем для подключения наших двигателей. В нашем случае это D6, D9, D10 и D11. Таким образом, мы инициализируем эти контакты, поскольку выходные выводы делают их LOW по умолчанию.

Внутри основной функции цикла мы проверяем, готовы ли данные из MPU6050 для чтения. Если да, то мы используем его для вычисления значения PID, а затем отображаем входное и выходное значение PID на последовательном мониторе, чтобы проверить, как реагирует PID. Затем, основываясь на значении вывода, мы решаем, должен ли бот двигаться вперед или назад или стоять на месте.

Поскольку мы предполагаем, что MPU6050 вернет 180, когда бот будет вертикально. Мы получим положительные значения коррекции, когда бот падает вперед, и мы получим значения отрицательными, если бот падает назад. Поэтому мы проверяем это условие и вызываем соответствующие функции для перемещения бота вперед или назад.

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

Если эти незначительные корректировки работают, и все еще, если бот падает, мы увеличиваем скорость двигателя. Значение того, как быстро вращаются колеса, будет определяться алгоритмом PI.

Заметим, что для функции Reverse мы умножили значение вывода с -1, чтобы мы могли преобразовать отрицательное значение в положительное.

Источник: https://geekhouse.tech/how-to-make-arduino-robot/

Что купить вместо Arduino Starter Kit: обзор готовых ардуино-роботов

Обычно знакомство с ардуино-совместимыми платами начинается с набора Arduino Starter Kit, но можно идти по пути обратного инжиниринга и купить готового робота. В сегодняшнем обзоре 5 образовательных моделей.

Чтобы начать изучение Arduino самостоятельно можно купить набор Arduino Starter Kit и воспользоваться онлайн-уроками для начинающих.

В такой набор входит плата Arduino UNO и другие электронные компоненты: светодиоды, резисторы, сервопривод, двигатель, кнопку, жидкокристаллический экран, пьезоэлемент, датчики и прочее. Стартовые комплекты выпускаются разными производителями, состав может быть разным.

Любой вариант подойдет для первого знакомства. Очень удобны для освоения и при этом дешево стоят наборы производства Maker Studio:

Вы можете ознакомится с нашим подробным обзором, как выбрать и купить Arduino начинающему.

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

Такие роботы состоят из элементов корпуса, платы, датчиков и других компонентов. В разобранном виде — это тоже своеобразный стартовый набор. Стоимость готовых роботов часто сопоставима с ценой на наборы Arduino Starter Kit.

Робот-автомобиль, управляемый по Bluetooth

В предыдущий обзор готовых Arduino-роботов был включен 4WD-автомобиль. 2WD-модификация дешевле. Такая машинка, управляемая по bluetooth, стоит $59. Производство Maker Studio.

2WD робот-машинка с управлением по Bluetooth. Фото Aliexpress.

Фото робота-машинки в разобранном виде:

2WD робот-машинка с управлением по Bluetooth в разобранном виде. Фото Aliexpress.

В наборе есть все для сборки корпуса, включая отвертку, колеса, зарядное устройство для аккумуляторов, электронные компоненты: плата аналог Arduino UNO, плата прототипирования, драйвер моторов, ультразвуковой дальномер, датчик линии, Bluetooth-модуль.

Гусеничный робот (танк)

Классический ардуино-робот на гусеничном шасси компании Dagu Electronics идеально подходит для любого небольшого робототехнического проекта. Ардуино-танк поставляется в 4 различных конфигурациях.

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

В наборе кроме деталей корпуса,кронштейнов и гусениц: плата-аналог Arduino, ультразвуковой датчик расстояния, датчик Холла.

Робот-танк Dagu. Фото Aliexpress.

Видео с этим роботом:

Робот-танк Dagu можно купить на Aliexpess за $160.

Шестиногий робот-паук

Этот робот-гексапод производства Dagu Electronics имеет 12 степеней свободы.  Шасси простое, сделано дешево, насколько это только возможно.

Управление может осуществляться, например, при помощи пульта дистанционного управления от телевизора. Основа корпуса выполнена из акрилового листа. Для управления ногами используются 12 сервоприводов.

Обратите внимание, что плата c контроллером, изображенная на фотографии, не входит в комплект. Ее нужно покупать отдельно.

Можно использовать различные платы, но производитель рекомендует специализированный контроллер DAGU-паук (ATMEGA 1280 16 мГц). Его стоимость $65.

Робот-гексапод Dagu. Фото Aliexpress.

Видео:

Шестиногого робота-паука можно купить на Aliexpress за 150 долларов.

Робот рука-манипулятор

Роботизированная рука — автоматизированное механическое устройство, в настоящее время наиболее широкий применяемое в различных областях: промышленное производство, конвейеры, лечение, развлекательные услуги, военная разведка, космос и т.д. Этот алюминиевый манипулятор имеет 6 степеней свободы. Коготь позволяет захватывать предметы. Для управления используется плата-аналог Arduino.

Роботизированная рука-манипулятор. Фото Aliexpress.

Роботизированная рука может быть установлена стационарно или на шасси (не включено в комплект). Если закрепить манипулятор на шасси, получится такой робот:

Робот шасси с рукой-манипулятором. Фото Aliexpress.

Видео:

Стоимость роботизированной руки на Aliexpress $218.

BalanBot — балансирующий робот

Балансирующий ардуино-робот — интересная образовательная игрушка. Что подарить ребенку? Возможно, BalanBot производства Maker Studio — отличная идея.

Балансирующий arduino-робот. Фото Aliexpress.

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

Балансирующий arduino-робот в разобранном виде. Фото indiegogo.com.

Помимо деталей корпуса, двигателей, платы аналога Arduino Uno R3 в набор  входит специализированная плата расширения (шилд). Шилд содержит модуль MPU6050 — 3-х осевой гироскоп и 3-х осевой акселерометр, а также драйвер L298P — для подключения моторов.

Видео:

Дополнительно можно приобрести Bluetooth-модуль и модуль Wi Fi. Это позволит управлять роботом со смартфона. Производитель придерживается принципов Open Source, предоставляет исходный код и приложение для мобильных устройств.

Балансирующий робот стоит $129 на Aliexpress.

Готовый робот или каркас для робота

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

Где еще купить готовых роботов

В обзоре мы выбрали наиболее дешевых и интересных на наш взгляд готовых Arduino-роботов из китайских интернет-магазинов. Если нет времени ждать посылку из Китая — большой выбор готовых роботов в интернет-магазинах Амперка. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Список рекомендованных магазинов здесь.

Возможно вас также заинтересуют наши обзоры проектов на Arduino:

Обучение Arduino

Не знаете, с чего начать изучение Arduino? Подумайте, что вам ближе — сборка собственных простых моделей и постепенное их усложнение или знакомство с более сложными, но готовыми решениями?

Учебный курс “Arduino для начинающих”: главная страница.

Посты по урокам:

Все посты сайта “Занимательная робототехника” по тегу Arduino.

Список рекомендованных магазинов.

Все цены приведены на дату публикации поста.

Источник: http://edurobots.ru/2015/04/chto-kupit-kupit-vmesto-arduino-starter-kit-obzor-gotovyx-arduino-robotov/

Сигвей своими руками

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

Вот его рассказ.

В нашем самодельном сигвее в качестве рамы шасси выступает рифленый алюминиевый лист размерами 500х360х7 мм, к которому крепятся моторы. Такая ширина была выбрана, чтобы можно было свободно проехать через стандартный дверной проем.

Рама будущего робота

В качестве двигателей были использованы 2 DC мотора MY1020Z  500Вт, 24 В, 12,6 Нм. Конкретно в данном проекте использовались моторы из Германии, но, разумеется, их можно заказать в Китае по гораздо более низким ценам. 

Мотор с втулкой для крепления колеса

На картинке внизу показан алюминиевый лист с готовыми отверстиями для крепления моторов диаметром 8 мм. Моторы крепятся потайными болтами. Для надежности соединения рекомендуется использовать контргайку или локтайт — жидкий фиксатор резьбовых соединений.

Двигатель, закрепленный на раме

Потайной болт

Затем по центру рамы закрепили конструкцию, состоящую из двух корпусных узлов и стальной водопроводной трубы диаметром ½ дюйма и длиной 300 мм со специальным креплением.

Узел управления поворотами робота в сборе

С одной стороны трубы с помощью эпоксидного клея крепится 10 кОм потенциометр для распознавания положения рулевой тяги. С другой стороны потенциометр закрепляется с помощью алюминиевого кронштейна на основании.

Закрепление потенциометра для рулевого механизма

С другой стороны к трубе приваривается угловое соединение (угол 90°). В проекте используются обычные стальные водопроводные трубы диаметром ½ дюйма, которые можно купить в любом строительном магазине. 

Угловое соединение

К угловому соединению крепится Т — образная конструкция длиной 105 см, которая будет выполнять роль руля. Для большего удобств ручки обматываются изолентой.
Для центровки рулевого механизма использовались пружины от старой стиральной машины, прикрепленные с одной стороны к основанию и с другой сторроны к трубе с помощью хомутов.

Закрепление рулевого механизма с помощью пружин

На руле также предусмотрена кнопка безопасности, соединенная с драйверами моторов. Ее необходимо удерживать во время движения.

Кнопка безопасности

Для крепления колес была специально изготовлена втулка колеса. Обратите внимание, что на втулке есть выступающая часть, которая одевается на вал двигателя. Это сделано для того, чтобы под нагрузкой не повредились шестерни моторов.

Втулка для крепления колеса к двигателю

Главным элементом основной платы является Arduino Pro Mini 16 МГц с питанием 5 В. Она считывает данные об угле наклона с 3-осевого акселерометра и гироскопа модуля MPU-6050 на частоте 500 Гц, которые затем обрабатываются с помощью фильтра Калмана.

К микроконтроллеру также подключен Bluetooth SPP модуль, который передает на Android устройство информацию с помощью специального приложения.

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

Диод D1 показывает, что микроконтроллер не сможет послать сигнал на контакт сброса во время работы драйвера мотора.

Кроме того, один вход online casino используется для сохранения значений измерения напряжения батареек.

Один выход используется как инверсный усилитель для усиления сигнала от потенциометра, соединенного с рулевым механизмом. Потенциометр 10 кОм нужен для того, чтобы изменять напряжение на выходе до показания примерно 2,5 В.

Ниже дана картинка готовой печатной платы и принципиальной схемы. Обратите внимание, что MPU-6050 крепится на двойную клейкую ленту для уменьшения вибраций. Полное описание печатной платы можно посмотреть здесь:

https://github.com/Lauszus/BalancingRobotFullSize/tree/master/PCB

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

Заготовка для основной платы

Плата управления в сборе

Принципиальная схема основной платы

Для управления двумя моторами необходимы два драйвера двигателя высокой мощности. В данном проекте использовали Pololu High-Power Motor Driver 24В/23A. Каждый драйвер рассчитан на постоянный ток 23 А без теплоотвода.

Создатели робота присоединили к драйверам теплоотвод для того, чтобы убедиться, что они выдержат такой ток, т. к. пиковое значение тока для мотора согласно спецификации составляет 26,7 А.

В таком варианте драйвера даже не нагреваются.

Драйвер двигателя вид спреди

Драйвер двигателя вид сзади

Для управления моторами просто применили ШИМ-сигнал (PWMН), направление вращение валов двигателей контролируем с помощью DIR пина. Это позволяет Вам легко управлять направлением вращения двигателей только посредством двух пинов. Обратите внимание, что PWML не используется в окончательной установке.

Кроме того, драйвер мотора имеет два “Индикатора ошибки” помеченных как FF1 и FF2. Они будут иметь значение high, в случае неисправности. Мотор драйвер может быть сброшен посредством перевода RESET пина в значение low. Это происходит если  deadman кнопка, закрепленная на руле, не будет отпущена.

Питание робота осуществляется посредством установки трех 6S LiPo 3000mAh, которые при параллельном подключении обладают общей емкостью 9000 mAh.

Соединенные в параллель три аккумулятора

Поскольку данная аккумуляторная сборка выдает 25.2V (4.2V на одну банку), для питания Ардуино пришлось использовать DC-DC преобразователь на основе модуля LM2596 для обеспечения напряжения питания контроллера на уровне 8 В.

На финальном этапе сборки вся скоммутированная электроника была помещена в пластиковый корпус в нижней части нашего робота

Установка электроники в корпус

В итоге вот что получилось.

Полноразмерный балансирующий робот после сборки

Что касается программного кода, то он был подготовлен на основе кода Balanduino (https://github.com/tkjelectronics/Balanduino), который в свою очередь напсан на C/C с использованием библиотек и функций Ардуино платформы. 

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

Блок-схема программного алгоритма

 Источник: http://blog.tkjelectronics.dk/category/tkjelectronics/

Источник: http://RoboReview.ru/samodelkin/sigvey-svoimi-rukami.html

Балансирующий робот на 555-ом таймере

Вы пробовали когда-нибудь сделать балансирующего робота? Ну, то есть такого, который на двух колесах стоит и не падает? Наверное, сразу на ум приходят всякие гироскопы, датчики ускорений, микроконтроллеры… А все гораздо проще!

На видео вы увидите подробную инструкцию о том, как сделать такого робота на самом примитивном таймере 555. Правда, он одноколесный, но, по-моему, это дела не меняет, даже наоборот, добавить второе колесо будет интереснее.

Далее я приведу свой собственный вольный перевод того, о чем автор рассказывает по-английски на видео (а так же пишет в своем блоге), добавив немого от себя лично.

Это попытка сделать простейшего в мире балансирующего робота, что бы повторить его смог каждый.

Робот не содержит дорогих или дефицитных элементов: главное в нем — это микросхема аналогового таймера 555 и сервомашинка, переделанная так, чтобы ее вал вращался без ограничений. О том, как сделать такую переделку, не один раз рассказывалось, и вы сможете легко найти эту информацию самостоятельно в сети при помощи поиска. Схема робота приведена на рисунке.

Собственно говоря, робот есть ничто иное, как двунаправленный PID-управляемый электропривод, правда, интегрирующая составляющая регулятора не используется (т.е. на самом деле это PD-привод).

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

Цепочка RpCd — это ни что иное, как пропорционально (Rp) дифференциальное (Cd) звено регулятора. Если вы смотрели видео внимательно, вы видели осциллограммы сигналов с резисторов и после этого звена.

Резистор Rt служит для начальной установки такой скважности ШИМ-сигнала, вырабатываемого таймером, при котором сервомашинка почти неподвижна (на видео процесс подстройки имеется). В общем, это и все, что можно сказать о схеме — она на самом деле проста до безобразия.

Если робот наклоняется, то освещенность фоторезисторов меняется, один становится менее освещен, чем второй, в результате уровень напряжения в точке из соединения (т.е.

на входе регулятора) меняется, что в конечном итоге приводт к тому, что меняется скважность импульсов ШИМ на выходе таймера, и сервомашинка начинает вращаться.

Так как сервомашинки неплохо воспринимают ШИМ-сигнал в широком диапазоне частот (обычно от 20 до 100 Гц), то само значение частоты ШИМ в данной конструкции не играет принципиальной роли.

Так как на оси сервы сидит колесо, робот приходит в движение и смещает центр масс так, что наклон компенсируется. Движение продолжается до тех пор, пока оба резистора снова не будут освещены одинаково.

Автор не пожалел времени, и сделал даже вариант вообще на двух биполярных транзисторах! Но по-моему, это уже слишком просто, чтобы быть интересным.

Я думаю, что материалы американских патентов, которые автор изучал, будут не очень интересны тем, кто рискнет повторить эту конструкцию, поэтому не даю ссылок на это. Зато повторяю предупреждение автора, что устойчивость робота зависит от параметров входной цепочки RpCd, подобрать которые вам придется самостоятельно.

Оригинал заметки автора вы можете найти по .

Источник: https://simple-devices.ru/news/11-wow/36-simple-balancing-robot

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