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

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

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

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

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

Шаг 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, чтобы можно было видеть все значения датчиков и сигналов управления, состояния батареи и т.д.

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

Сейчас всё более популярным делается небольшая самодвижущаяся платформа с двумя колёсами, так называемый Сигвей, который изобрёл Дин Камен. Замечая трудности, с которыми сталкивается человек в коляске при восхождении на тротуар, он увидел возможность создать транспортное средство, которое может помочь людям передвигаться без особых усилий. Камен применил на практике свою идею о создании самобалансирующейся платформы. Первая модель была испытана в 2001 году и это было средство передвижения с кнопками на ручке. Она была разработана для людей с ограниченными возможностями и позволяла им самостоятельно передвигаться даже по пересеченной местности. Новая модель стала известна как “Сигвей РТ”, и уже позволяла рулить, наклоняя влево или вправо рычаг. В 2004 году она начала продаваться в Европе и Азии. Цена самых продвинутых современных моделей, например Segway PTi2 - около 5000 долларов. В последнее время китайские и японские компании создают устройства с различными модификациями и новаторской конструкцией. Некоторые даже делают подобные транспортные средства только с одним колесом, но давайте рассмотрим классический Сигвей.


Segway состоит из платформы и двух колес, размещенных поперечно с приводом от двух электромоторов. Сама система стабилизируется сложной электронной схемой, которая управляет двигателями, принимая во внимание не только наклоны водителя, но и состояние транспортного средства, что позволяет ему всегда оставаться в вертикальном стабильном положении. Водитель, стоя на платформе, контролирует скорость просто перемещая ручку вперед или назад, при наклоне вправо или влево - поворот. Плата управления отслеживает сигналы соответствующих датчиков движения и ориентирования (похожие на те, которые позволяют смартфонам менять ориентацию экрана), чтобы помочь бортовому микропроцессору точно ориентировать платформу. Главный секрет segway не столько в электро-механической части, сколько в коде, который учитывает физику движения со значительной математической точностью обработки данных и предсказания поведения.

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

Детали для Сигвея

Для создания Сигвея нужно два мотора-редуктора с колесами, аккумулятор, электронная схема, платформа и руль.

Мощность двигателя недорогих моделей примерно 250W, что обеспечивает скорость до 15 км/ч, с относительно низким потреблением тока. Напрямую крутить колеса не могут, потому что высокое число оборотов этих моторов не позволяют получить нужную тягу. Аналогично тому, что происходит, когда вы используете передач вашего велосипеда: за счет увеличения передаточного отношения потеряется скорость, но увеличится усилие, прикладываемое к педали.

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

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

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

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

Что такое гироскутер?

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

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

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

Гироскутер состоит, из корпуса, стальной или металлической основы, на который и будет крепится вся электроника. Дальше идет два электродвигателя с той мощностью, чтобы была возможность ездить под весом человека до 80-90кг. Дальше идет материнская плата с процессором и две вспомогательные платы, на которых как раз и стоят гироскопические датчики. И конечно же аккумулятор и два колеса с одинаковым диаметром. Как сделать гироскутер? Для решения этого вопроса, нам понадобится добыть определенные детали конструкции самого гироборда.

Что же нам понадобится?

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

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

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

Производство и процесс

Как сделать гироскутер, мощный и чтобы он сам держал баланс при езде? Сначала нужно построить план, какое именно средство передвижения нам понадобится. Нам нужно сделать довольно мощное средство передвижения с большими колесами и большой проходимостью по разным дорогам. Минимальное значение беспрерывной езды должно составлять 1-1.5 часа. Мы потратим примерно около 500 евро. Поставим беспроводную систему управления нашему гироскутеру. Поставим считывающее устройство неполадок и ошибок, вся информация будет идти на SD-карту.

Схема гироскутера

На схеме выше можно все четко увидеть: электродвигатели, аккумуляторы и прочее. Для начала нужно выбрать именно тот микроконтроллер, который и будет осуществлять управление. Из всех представленных на рынке микроконтроллеров Arduino мы с вами выберем UnoNano, и в качестве дополнительного чипа обработки информации будет выступать ATmega 328.

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

Микроконтроллер Arduino будет на скорости около 38400 БОД, использовать последовательную связь со схемой XBee. Мы будем использовать два гироскопических датчика InvenSense MPU 6050 на базе модулей GY-521. Они в свою очередь будут считывать информацию о положении платформы. Эти датчики достаточно точны для того, чтобы сделать мини-сигвей. Эти датчики будут расположены на двух дополнительных вспомогательных платах, которые будут осуществлять первичную обработку.

Мы будем использовать шину I2C, она имеет достаточную пропускную способность, чтобы быстро связывать с микроконтроллером Arduino. Гироскопический датчик имеющий адрес 0x68 имеет частоту обновления информации раз в 15 мс. Второй же датчик адресов 0x68 работает напрямую от микроконтроллера. У нас так же есть выключатель нагрузки, он переводит гироскутер в режим удержания баланса, тогда когда платформа находится в ровном положении. В этом режиме гироскутер остается на месте.

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

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

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

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

Настройка датчиков

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

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

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

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



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png