Что нам понадобится? Для начала – колеса, возьмем от тренажера для пресса. Редуктор на 12 вольт и на 160 оборотов в минуту. Powerbank на 15000 миллиампер часов. Чтобы можно было управлять транспортным средством, то есть поворачивать направо или налево, ускоряться и замедляться, будем использовать модули, которые уже использовали при изготовления самодельной газонокосилки. Так можно будет регулировать обороты двигателя. Соответственно, 2 модуля, 2 двигателя, 2 повербанка.

Два комплекта работают по отдельности. Положим, добавляем оборотов правому двигателю, сигвей будет поворачивать налево. Тоже самое, но зеркально, при повороте направо. Если добавить оборотов одновременно двум моторам, средство будет ускоряться.

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

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

Вставляем заготовку. Сверлим отверстие и приклеиваем заготовку эпоксидной смолой. (Автор в конце ролика сделал поправку, читайте ниже).

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

Все модули управления будут установлены на руле. Нужно протянуть 8 кусков проводов от руля к редукторам. Чтобы сверху они не торчали, предварительно делаем сквозное отверстие в трубе и просовываем провода.

И теперь снова нужно все проклеить эпоксидной смолой и подождать 24 часа. Колеса как оказалось, деформировались, эпоксидка оказалась не очень надежным материалом. Разобрал редукторы, снял валы и на них нарезал резьбу. Также просверлил отверстия в деревянных втулках. Вставил металлические втулки и теперь это все выглядит намного надежнее. Колеса также можно будет вкручивать очень крепко. Пластиковая труба показалась не совсем надежной, внутрь нее вставлен для укрепления черенок от лопаты.

Ставим 2 модуля в панель. Нужно просверлить дырки в трубе под резисторы. Остается приклеить кнопки с помощью термоклея. Провести провода к модулю, редукторам, Power банкам. Прикрутить колеса.

Для тех, кто опасается неправильно подключить провода, на модулях все детально расписано.

Сигвей будет также иметь спидометр для велосипеда. Тестовый вариант самодельного сигвея готов. Давайте его протестируем.

Гироскутер внутри

Основные детали

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

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

Как устроен гироскутер?

Мини-сигвей устройство

Колеса

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

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

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

Корпус

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

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

Двигатели

После того как вы снимите крышку, по бокам ближе к колесу вы должны увидеть электродвигатель. Электродвигатели бывают разной мощности. Среднее значение среди всех мини-сигвеев является показатель 700 Ватт на оба колеса. Или по 350 Ватт на одно колесо. Дело в том, что электродвигатели у гироскутеров работают независимо друг от друга. Одно колесо может ехать с одной скоростью, а второе с другой, или они могут двигаться в разные стороны, одно назад, другое вперед. Таким образом эта система придает гироскутеру управляемости.

Он становится более чувствительным к поворотам на большой скорости. Также вы можете разворачиваться на места на 360 градусов. Чем выше мощность у двигателя, тем выше переносимый груз и тем выше скорость, но не всегда. Надо понимать, что чем выше масса нагрузки на платформу, тем ниже скорость и быстрее разряжается батарея. Поэтому гироскутеры с мощными двигателями стоят дороже.

Система балансировки

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

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

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

Нужно обязательно помнить, что во всех нынешних гироскутерах должны быть две вспомогательные платы для гироскопических датчиков и одна основная, где стоит процессор. В старых моделях может стоять и двухплатная система, но с осени 2015 года, в стандарт была внесено изменение и теперь все гироскутеры, мини-сигвеи делаются с 3-мя платами.

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

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

Батарея

Система питания гироскутера осуществляется от двух или более аккумуляторов. В стандартных недорогих моделях обычно ставят аккумулятор с мощностью 4400 мА/ч. Аккумулятор отвечает за работу всей системы в целом и обеспечения ее электроэнергией, поэтому батарея должна быть качественная и фирменная. Обычно используют аккумуляторы двух брендов - это Samsung и LG.

Также аккумуляторы различаются по классу. Есть низкоуровневые батареи классов 1С, 2С. Такие аккумуляторы обычно ставят на гироскутеры с 4.5 и 6.5 дюймовыми колесами. Все по той же причине, потому что эти гироскутеры предназначены для ровных дорог, ровному асфальту, мрамору или полу.

Гироскутеры с 8-ми дюймовыми колесами, обычно ставят аккумуляторы среднего класса типа 3С, это уже более надежная модель батареи. Она не будет отключаться при резкой остановке или при наезде на бордюр или в яму.

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

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

Другое

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

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

Вывод

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

Привет всем мозгочинам ! В моем новом мозгопроекте я буду создавать своими руками самобалансирующееся транспортное средство или «Сегвей». Для данного проекта нужны базовые знания в электронике и умение работать вручную. Все механические компоненты можно приобрести в сети Интернет или в местном магазине.

СЕГВЕЙ состоит из платформы, на которой стоят в вертикальном положении, и двух боковых электродвигателей, приводимых в действие с помощью аккумуляторов. Алгоритм контроллера управления обеспечивает устойчивое положение. Перемещение сегвея контролируется водителем путем наклона его туловища, и ручкой для выбора направления движения влево/вправо. Поэтому вам понадобятся дополнительные компоненты, такие как контроллер, привод двигателя и датчик ускорения/гироскоп. Механическая конструкция изготовлена из дерева, поскольку оно имеет легкий вес, электрически изолировано и легко поддается обработке. Теперь приступим к изготовлению сегвея!

Шаг 1: Основные характеристики проекта

В настоящем проекте требуется изготовить устройство со следующими характеристиками:

— Достаточная мощность и устойчивость для езды по улице, и даже по гравийной дорожке;
— 1 час непрерывной работы
— Общая стоимость до 500€ евро
— Возможность беспроводного управления
— Запись данных на SD-карту для выявления поломок

Шаг 2: Проектирование системы

Датчик наклона установлен горизонтально вдоль оси х, а вертикально вдоль оси у.

Шаг 5: Тестирование и настройка

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

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

Arduino Terminal может использоваться для отладки программного кода и проверки работоспособности. Например, нужно настроить усиление ПИД-регулятора, поскольку оно зависит от механических и электрических параметров двигателя.

Усиление настраивается по данной процедуре:
1. Параметр Kp предназначен для балансировки. Увеличивайте Kp, пока балансировка станет нестабильной, Ki и Kp остаются 0. Незначительно снизьте Kp для получения устойчивого состояния.
2. Параметр Ki предназначен для ускорения/снижения ускорения при наклоне. Увеличьте Ki для получения правильного ускорения, чтобы избежать падения при наклоне вперед, Kp остается 0. Теперь балансировка должна стать стабильной.
3. Параметр Kd используется для компенсации включения и возврата к устойчивому положению.

В программе Terminal, вы можете выполнять различные команды «?».
? – Помощь при выборе команд
p,i,d [целочисленное значение] — Установите/Получите усиление ПИД-регулятора, значение от 0 до 255
r [целочисленное значение] – принудительное увеличение скорости двигателя, значение от -127 до 127
v – версия программного обеспечения
С помощью команды «p» вы получаете доступ к параметру Kp. Команда «p 10» позволяет установить Kp до значения 10.

После подачи питания на Arduino выполняется инициализация датчиков и переход в состояние ожидания. При нажатии нажимной кнопки происходит передача управляющего сигнала в контроллер СЕГВЕЯ, находящегося в вертикальном положении, который готов для активации двигателей для перемещения вперед или назад в зависимости от первоначального положения. С этого момента кнопку нужно держать нажатой постоянно, в противном случае двигатели выключатся, и контроллер перейдет в состояние ожидания. После достижения вертикального положения, контроллер ожидает сигнал концевого выключателя нагрузки “Водитель на месте”, который обычно нажимают ногой, когда водитель находится на платформе. После этого запускается алгоритм балансировки и происходит активация двигателей вперед или назад для того, чтобы остаться в вертикальном положении. Наклон вперед создает поступательное движение вперед и наоборот. Нахождение в наклоненном положении приводит к ускорению движения. Наклон в противоположном направлении приводит к снижению скорости. Для перемещения влево и вправо используйте ручку.

Шаг 6: Демо

Смотрите ниже видео готового устройства и спасибо за внимание!

Китайский сигвей – фото внешнего вида

До недавнего времени я вообще не знал, как называется “ну, такая каталка на двух колёсах, ехать стоя”. Недавно узнал, что этот электросамокат на двух колесах называется Сегвей или Сигвей , по-английски – Segway . Кто до сих пор не понял, о чем речь – фото слева.

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

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

Слово “практически” меня всегда настораживает. Так и в этот раз.

Но обо всём по порядку.

Поломка сигвея

Моя история началась как раз с того, что человек на сигвее упал. Ехал на приличной скорости, и – носом в асфальт!

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

Странно, что контакты не пригорели и не слиплись намертво, впрочем, тогда бы выгорела проводка, т.к. при токе около 100 Ампер предусмотрено не было, а штатные предохранители остались целы.

Да, стоит сказать, что этот сигвей был дешевой подделкой, и куплен дней за десять до поломки. Всё было написано по китайски (насколько я разбираюсь в китайском), кроме “Warning!” Впрочем, о качестве сборки можно будет судить по фото.

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

Устройство сигвея. Разборка

Что мне конкретно понравилось – это колёса с солидными протекторами. То есть, предполагается, что этот самокат может использоваться в тяжелых условиях.

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

Руль прикручивается, его можно открутить при транспортировке:

Крепление руля. Вид спереди.

А вот вид сзади:

Предохранители и разъем зарядки

Видно два предохранителя по 50 А (схема сигвея будет чуть ниже), разъем заряда аккумулятора, над всем этим – “фары” в виде светодиодов на 12 В.

Верхняя панель. На ней – основные органы управления и индикации:

Верхняя панель сигвея

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

Три светодиода индицируют состояние сегвея: 1 – поворот влево, 2 – поворот вправо, 3 – горизонтальное положение (положение, в котором человек может становиться и начинать движение)

А что там свежего в группе ВК СамЭлектрик.ру ?

Подписывайся, и читай статью дальше:

Снимаем колёса.

Снято колесо

Сигвей со снятыми колесами

Снимаем переднюю панель.

Снимаем верхнюю крышку

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

Передняя панель сзади. Провода откинуты. Замок снят.

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

Переменный резистор наклона руля

Сопротивление – 10 кОм, линейная характеристика.

Так и хочется сказать – “потроха”

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

Электронная начинка сигвея

Теперь подробнее рассмотрим электронику сигвея.

Вот фото подключения платы управления.

Устройство крупнее и подключение платы

Силовые транзисторы – IRF4110:

Силовые транзисторы платы управления

Именно парочка этих транзисторов и сгорела. При этом эта пара замкнула на себя питание аккумулятора, образовав КЗ.

Электронная схема сигвея – общий вид

Рассмотрим элементы схемы подробнее.

Электронная схема сигвея – общий вид – другой ракурс

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

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

Микросхема IC2 – контроллер ATMEGA 32A. Это сердце сигвея, точнее, мозг. Тут заложено самое главное – программа, алгоритм работы. Именно эта программа управляет вращением колёс и не дает человеку упасть.

Если контроллер – мозг, то гироскоп – это органы чувств. Гироскоп – это маленькая микросхемка INVENSENCE MPU6050. Это замечательное устройство представляет собой трехканальный измеритель положения в пространстве (наклон по трем осям) и трехканальный измеритель ускорения. Если кто помнит из физики, ускорение – это скорость изменения скорости. Честно, не понимаю, как в этот чип можно впихнуть такие измерители. Я до сих пор знал электромеханические гироскопы, а акселерометры знал только электронные. Теперь узнал, что бывают и такие, и используются очень широко, в основном в мобильной и автомобильной электронике.

На последнем фото также видно две микросхемы буферов CD4001 (это 2И-НЕ). Это для развязки контроллера и остальной схемы. Далее сигнал управления поступает на драйвера IR2184S, которые подают напряжения на затворы силовых полевиков, фото которых я давал выше.

Блок питания XL7015 – преобразователь DC-DC, из плавающего постоянного напряжения около 48В он путем преобразований на частоте несколько килогерц выдает стабильное постоянное напряжение 15В. Далее – обычная КРЕНка 7805 выдает 5 Вольт. Желтая топорная перемычка была, я тут ни при чём. А вот сгоревшая дорожка вверху справа – это путь питания 0В на управление, её пришлось восстанавливать.

Слаботочные элементы схемы сигвея соединяются через кросс-плату:

На эту плату приходят сигналы: от потенциометра руля, от кнопок наличия человека, к светодиодам панели управления. И уходят провода на главную плату.

Вот двигателя с редукторами, на оси которых непосредственно насаживаются колёса. Добротно сделано, только никаких опознавательных знаков:

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

Аккумулятор тоже не содержит никаких надписей:

Аккумулятор 48В

Входят два провода для зарядки (потоньше) и два выходных провода.

Видите искореженные места? Аккумулятор вообще никак не закреплен, болтается в сигвее, и бьётся об острые края ребер жесткости.

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

Ещё примочка – преобразователь, также валялся на дне, замотан в плёнку. Поскольку светодиоды габаритных огней рассчитаны на напряжение 12 В, а аккумулятор – на 48 В, то используется преобразователь постоянного напряжения DC-DC 48-12 В:

Схема сибвея

Ремонт segway

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

Только в этом случае опять пострадает и чей-то нос.

Так что прогноз пессимистичный, покупайте только качественные вещи, особенно, если речь идёт о безопасности! Теперь понятно, почему на всех фото ездок на сигвее с надетым шлемом…

Езда на Segway

Езда на подобном оригинальном внедорожном сигвее (в спокойном режиме) показана на видео:

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

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

Сигвей от англ. Segway – двухколесное средство передвижения стоя, оснащенное электроприводом. Еще их называют гироскутерами или электрическими самокатами.

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

Чтобы сбалансировать робота, двигатели должны противодействовать падению робота. Это действие требует обратной связи и корректирующих элементов. Элемент обратной связи - , который обеспечивает как ускорение, так и вращение во всех трех осях (). Ардуино использует это, чтобы знать текущую ориентацию робота. Корректирующим элементом является комбинация двигателя и колеса.

В итоге должен получиться примерно такой друг:

Схема робота

Модуль драйвера двигателя L298N:

Мотор редуктора постоянного тока с колесом:

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

Завершенный вариант самостоятельно балансирующего робота можно посмотреть на рисунке выше. В верхней части находятся шесть Ni-Cd-батарей для питания печатной платы. В промежутках между моторами используется 9-вольтовая батарея для драйвера двигателя.

Теория

В теории управления, удерживая некоторую переменную (в данном случае позицию робота), требуется специальный контроллер, называемый ПИД (пропорциональная интегральная производная). Каждый из этих параметров имеет «прирост», обычно называемый Kp, Ki и Kd. PID обеспечивает коррекцию между желаемым значением (или входом) и фактическим значением (или выходом). Разница между входом и выходом называется «ошибкой».

ПИД-регулятор уменьшает погрешность до наименьшего возможного значения, постоянно регулируя выход. В нашем самобалансирующем роботе Arduino вход (который является желаемым наклоном в градусах) устанавливается программным обеспечением. MPU6050 считывает текущий наклон робота и подает его на алгоритм PID, который выполняет вычисления для управления двигателем и удерживает робота в вертикальном положении.

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

  1. Сделайте Kp, Ki и Kd равными нулю.
  2. Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
  3. Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
  4. Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.

Поведение робота можно посмотреть ниже на видео:

Код Ардуино самобалансирующего робота

Нам понадобилось четыре внешних библиотеки, для создания нашего робота. Библиотека PID упрощает вычисление значений P, I и D. Библиотека LMotorController используется для управления двумя двигателями с модулем L298N. Библиотека I2Cdev и библиотека MPU6050_6_Axis_MotionApps20 предназначены для чтения данных с MPU6050. Вы можете загрузить код, включая библиотеки в этом репозитории .

#include #include #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #define MIN_ABS_SPEED 20 MPU6050 mpu; // MPU control/status vars bool dmpReady = false; // set true if DMP init was successful uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU uint8_t devStatus; // return status after each device operation (0 = success, !0 = error) uint16_t packetSize; // expected DMP packet size (default is 42 bytes) uint16_t fifoCount; // count of all bytes currently in FIFO uint8_t fifoBuffer; // FIFO storage buffer // orientation/motion vars Quaternion q; // quaternion container VectorFloat gravity; // gravity vector float ypr; // yaw/pitch/roll container and gravity vector //PID double originalSetpoint = 173; double setpoint = originalSetpoint; double movingAngleOffset = 0.1; double input, output; //adjust these values to fit your own design double Kp = 50; double Kd = 1.4; double Ki = 60; PID pid(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT); double motorSpeedFactorLeft = 0.6; double motorSpeedFactorRight = 0.5; //MOTOR CONTROLLER int ENA = 5; int IN1 = 6; int IN2 = 7; int IN3 = 8; int IN4 = 9; int ENB = 10; LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4, motorSpeedFactorLeft, motorSpeedFactorRight); volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high void dmpDataReady() { mpuInterrupt = true; } void setup() { // join I2C bus (I2Cdev library doesn"t do this automatically) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz) #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif mpu.initialize(); devStatus = mpu.dmpInitialize(); // supply your own gyro offsets here, scaled for min sensitivity mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788); // 1688 factory default for my test chip // make sure it worked (returns 0 if so) if (devStatus == 0) { // turn on the DMP, now that it"s ready mpu.setDMPEnabled(true); // enable Arduino interrupt detection attachInterrupt(0, dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus(); // set our DMP Ready flag so the main loop() function knows it"s okay to use it dmpReady = true; // get expected DMP packet size for later comparison packetSize = mpu.dmpGetFIFOPacketSize(); //setup PID pid.SetMode(AUTOMATIC); pid.SetSampleTime(10); pid.SetOutputLimits(-255, 255); } else { // ERROR! // 1 = initial memory load failed // 2 = DMP configuration updates failed // (if it"s going to break, usually the code will be 1) Serial.print(F("DMP Initialization failed (code ")); Serial.print(devStatus); Serial.println(F(")")); } } void loop() { // if programming failed, don"t try to do anything if (!dmpReady) return; // wait for MPU interrupt or extra packet(s) available while (!mpuInterrupt && fifoCount < packetSize) { //no mpu data - performing PID calculations and output to motors pid.Compute(); motorController.move(output, MIN_ABS_SPEED); } // reset interrupt flag and get INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus(); // get current FIFO count fifoCount = mpu.getFIFOCount(); // check for overflow (this should never happen unless our code is too inefficient) if ((mpuIntStatus & 0x10) || fifoCount == 1024) { // reset so we can continue cleanly mpu.resetFIFO(); Serial.println(F("FIFO overflow!")); // otherwise, check for DMP data ready interrupt (this should happen frequently) } else if (mpuIntStatus & 0x02) { // wait for correct available data length, should be a VERY short wait while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); // read a packet from FIFO mpu.getFIFOBytes(fifoBuffer, packetSize); // track FIFO count here in case there is > 1 packet available // (this lets us immediately read more without waiting for an interrupt) fifoCount -= packetSize; mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&gravity, &q); mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); input = ypr * 180/M_PI + 180; } }

Значения Kp, Ki, Kd могут работать или не работать. Если они этого не делают, выполните шаги, описанные выше. Обратите внимание, что наклона в коде установлен на 173 градуса. Вы можете изменить это значение, если хотите, но обратите внимание, что это угол наклона, которым должен поддерживаться роботом. Кроме того, если ваши двигатели слишком быстры, вы можете отрегулировать значения motorSpeedFactorLeft и motorSpeedFactorRight.

На этом пока всё. До встречи.