Понедельник, 30 июля 2018 11:20

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

Оцените материал
(1 Голосовать)

Приветствуем!

Более 3х лет назад я начал создание с домашнего Сегвея (segway). Хотя он все еще не совсем закончен (мне нужно заменить 250Вт Мотор на модель 500Вт), мои дети уже могут ездить на нём.

 

Шаг 1: Что потребуется.

Рама Сегвея
Колёса грязевые
Электро двигатель
Аккумулятор
Электро двигатель
Стойка

1. Колеса В моем случае я использую размер шин 12 1/2 х 2.75 , обычно используемых для мини мотациклов по грязи - Ebay или Aliexpress

2. Батарея батареи: я использую два 12V / 12Ah свинцовых аккумуляторов, чтобы получить 24V для двигателей Вы можете использовать литиевые батареи 18650 Lithium-ion Battery Pack 12.6V 12000mAh

3. Двигатели: В настоящий момент две шутки по 24 В / 250 Вт, но я рекомендую использовать двигатели мощностью 500 Вт 500W24V/36V/48V UNITEMOTOR

4. Что бы собрать ось, я обратился к местному сварщику, который использовал некоторые из моих запчастей для велосипеда.

5. Драйверы двигателя - https://www.dimensionengineering.com/products/sabertooth2x60

6. Гироскоп + Акселерометр - MPU-6050

 

Шаг 2: Драйвер Мотора.

Sabertooth2x60
h-bridge

Сначала я попробовал собрать самодельный полноприводный мост. Чтобы управлять им, я использовал аналоговый выход (pwm) Ардуино. Но это вариант мне не удалось реализовать. Поэтому я купил готовый продукт, 2x60A Motor Driver от sabertooth!

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

Sabertooth2x60.pdf

Sabertooth 60A ArduinoLibrary

 

Шаг 3: Определение угла.

ADXL 355 Arduino
ADXL 355 Arduino
MPU6050 Arduino
MPU6050 Arduino
Комплементарный фильтр
Формула
Формула

Для определения текущего угла я сначала использовал отдельный акселерометр (ADXL335) и гироскоп (LY530AL). На прошлой неделе я изменил комплектацию, и две платы были заменены на MPU6050.sensor, который объединяет эти два элемента.

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

Преимущество акселерометра заключается в том, что он не показывает никакого смещения, такого как гироскоп. Но на это влияют ускорения, которые меняют Вывод.

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

 

Шаг 4: ПИД-контроллер.

F748TJKIW6PNEG2LARGE
FVJVXKWIW6PNRVZLARGE

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

Но какой сигнал должны получить двигатели? Это задача для ПИД-Контроллера.

Пропорциональная-часть (proportional-part): угол должен быть 0 °. Таким образом, чем больше угол, тем выше скорость двигателей.

Математически вы можете написать:

angle_error = angle_should - angle_is  (ошибка_угла = угол_должен – угол_есть)

p-Motor-value = k_p * angle_error

Интегральная-часть (integral-part): когда текущий угол не равен нулю, контроллер пытается снова получить сегейв. Но этот подход не должен быть медленным, и чем меньше значения угла, тем медленнее изменения. Поэтому контроллер позволяет использовать более быстрый подход с недостатком, что движение не останавливается на 0 ° и идет немного к другой стороне. Такое поведение гарантируется интегральной частью. Все углы добавляются (интегрированы), и этот интеграл со временем должен быть нулевым. Поэтому, если угол равен f.e. положительный на некоторое время, Контроллер пытается получить seqway в отрицательную область. Это гарантирует более быстрый подход ...

Математически вы можете написать:

error_sum_new = error_sum_old + error

i-motor-value = k_i * (error_sum_new)

error_sum_old = error_sum_new

Производная часть (derivative-part): не только текущий угол. Позвольте мне объяснить: если угол равен f.e. 10 °, и это не сильно изменится. Но если угол 10 ° и он изменяется очень быстро (высокая производная), то двигатели должны это очень быстро исправлять .

Математически вы можете написать:

d-motor-value = k_d * angular

Speed Finally you get: motor-value = p-motor-value + i-motor-value + d-motor-value

 

Шаг 5: Финал.

Принципиальная схема Segway на Arduino
Сборка электро схемы
Сборка электро схемы
Сборка электро схемы
Кнопка поворота
Сегвей своими руками

Теперь пришло время испытать сегвей. Чтобы двигаться не только прямо, вам нужно установить две кнопки. Когда вы нажимаете f.e. правый, левый двигатель увеличивает скорость, а правый двигатель замедляется. Чтобы обеспечить плавные переходы, добавленное и вычитаемое значение начинается с нуля и увеличивается шаг за шагом (+0,5 за каждый цикл), пока он не достигнет максимального значения (т. Е. 30).

Чтобы испытать свой собственный segway, я прикрепил простую программу для Вас. Удачи.

https://github.com/robotoss/ARDUINO-SEGWAY/blob/master/FXLSYHKIW6PNEU6.ino

 

Источник

Author

Bender

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

Комментарии (0)

There are no comments posted here yet

Оставьте свой комментарий

  1. Posting comment as a guest. Sign up or login to your account.
Вложения (0 / 3)
Share Your Location

О нас

Основой деятельностью портала является показ и объяснение что представляет собой выражени "Робот", "Робототехника", "Законы робототехники", "Мехатроника", "Искусственный интеллект(ИИ)". 

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