Как сделать сегвей своими руками. Сегвей своими руками Сбор механических деталей


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

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

Материалы:


-Беспроводной модуль управления XBee.
-микроконтроллер Arduino
-аккумуляторы
-датчик InvenSense MPU-6050 на модуле “GY-521”,
-деревянные бруски
-кнопка
-два колеса
и прочее, указанное в статье и на фотографиях.

Шаг первый: Определение требуемых характеристик и проектирование системы.

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

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

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


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


Выбор микроконтроллера для управления системами Сегвея разнообразен, автор система Arduino наиболее предпочтительна из-за своих ценовых категорий. Подойдут такие контроллеры как Arduino Uno, Arduino Nano или можно взять ATmega 328 для использования в качестве отдельного чипа.

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

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

За счет датчика InvenSense MPU-6050 на модуле “GY-521”, обрабатывающего ускорение и несущего в себе функции гироскопа, измеряются параметры наклона. Датчик был расположен на двух отдельных платах расширения. По шине l2c поддерживается связь с микроконтроллером Arduino. Причем датчик наклона с адресом 0x68 был запрограммирован таким образом, чтобы выполнять опрос каждый 20 мс и обеспечивать прерывание микроконтроллера Arduino. Другой датчик имеет адрес 0x69 и он подтянут прямо к Arduino.

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

Шаг второй: Создание корпуса гироскутера и установка основных элементов.


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

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

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

Шаг третий: Электрическая схема.



Согласно приведенной схеме была осуществлена вся провода в корпусе Сегвея. Так же в соответствии с таблицей приведенной ниже были подключены все выводы микроконтроллера Arduino к мостовой схеме управления двигателем, а так же к датчикам балансировки.


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



Шаг четвертый: Тестирование и настройка устройства.


После проведения предыдущих этапов, автор получил модель Сегвея для тестирования.

При проведении тестирования важно принять во внимание такие факторы как безопасность зоны тестирования, а так же защитная экипировка в виде защитных щитков и шлема для водителя.

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

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

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

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

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

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

Колеса

По бокам идут два колеса. Обычно гироскутеры бывают 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: Демо

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

Неужели такое сложное устройство, как сигвей, можно сделать самому? Оказывается, можно. Если приложить достаточно усердия и воспользоваться специальными знаниями. Что и сделал молодой инженер по имени Petter Forsberg, окончивший шведский технологический университет Чалмерса по специальности "Автоматизация и мехатроника".

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

Механика

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

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

Основа платформы - неподвижная ось, на которой должны вращаться оба колеса. Ось крепится тремя алюминиевыми блоками, которые фиксируются с помощью 5мм установочных винтов.

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

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

Для питания используются два свинцовых аккумулятора 12V 12Ah, которые применяются для моторов на 24V.

Электроника

Все печатные платы были изготовлены специально для этой разработки. Главная плата берет на себя вычисления, собирает данные от датчиков, таких как гироскоп (ADXRS614), акселерометр (ADXL203) и подстроечный потенциометр, на основании чего способна определить в каком направлении вы хотите повернуть.

Основной процессор AVR ATmega168. Соединение с ноутбуком производится по Bluetooth с использованием RN-41. Два H-моста преобразуют сигналы управления от основной платы на усилие для двигателей. Каждый H-мост имеет ATmega168, связь между платами осуществляется через UART. Вся электроника работает на отдельной батарее (LiPo 7.4V 900mAh).

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

Программное обеспечение

Программное обеспечение микроконтроллера в основном состоит из фильтра для гироскопа и акселерометра и цикла PD управления. Для теста были взяты два фильтра: Kalman и Complemenatry. Оказалось, что производительность их была очень похожа, но для Complemenatry фильтра требуется меньше вычислений, поэтому именно он был выбран для использования. Также были написаны приложения на Java, чтобы можно было видеть все значения датчиков и сигналов управления, состояния батареи и т.д.

Техническая сторона создания сегвея своими руками на этом видео:

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

Сигвей от англ. 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.

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

 
Статьи по теме:
Житийная литература «Сказание о Борисе и Глебе»
В XIX веке жанр жития переживал упадок. Казалось, что за двести лет на русской земле, прежде столь щедрой на подвижников, молчальников, святителей, юродивых, перевелись святые. За время существования Священного Синода, с 1721 по 1917 год, коронация в Росс
Что такое проектно-сметная документация
Капитальный ремонт объекта капитального строительства – одновременная разработка рабочего проекта и сметы, чертежи и расчеты производятся после утверждения проектного задания. состав:Раздел 5. "Сведения об инженерном оборудовании, о сетях инженерно – те
Волошин Александр Стальевич
Председатель советов директоров ОАО "Уралкалий" и ОАО "Первая грузовая компания"Председатель советов директоров ОАО "Уралкалий" (с сентября 2010 года), ОАО "Первая грузовая компания" (с февраля 2012 года). Ранее - председатель совета директоров РАО "ЕЭС Р
Аншлюс австрии - презентация
13 марта 1938 года Австрия была присоединена к Германии. Для Гитлера аншлюс не только создал плацдарм для наступления на Чехословакию, но и стал личной местью Родине за непризнание в молодые годы.Блеф в Берхтесгадене Разбитая после Первой мировой войны Ав