Если вы думаете, что гироскутер или мини-сигвей невозможно сделать дома своими руками и силами, то вы далеко заблуждаетесь. Как ни странно, в интернете есть много видео, где многие умельцы делают именно свой гироскутер. У некоторых он получается очень самодельный, но есть и те, кто смог по настоящему приблизиться к самой технологии создания и воспроизвести по настоящему интересную и качественную вещь. Так можно ли сделать гироскутер своими руками? Нам расскажет об этом 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 и гироскутер переходит в режим ожидания. После того как вы встали на сам гироборд, вы встаете ногами на нажимную кнопку, так гироскутер переходит в режим "на месте". Включаются датчики балансировки и при изменении угла наклона, гироскутер едет вперед или назад. При каких либо поломках, можно без проблем осуществить ремонт гироскутера своими руками.

Можно ли смастерить сигвей своими руками? Насколько это сложно, и какие детали для этого потребуются? Будет ли самодельный аппарат выполнять все те же функции, что и изготовленный на заводе? Куча похожих вопросов возникает в голове человека, решившего соорудить своими руками. Ответ на первый вопрос будет прост и ясен: сделать «электросамокат» самому под силу любому человеку, который хоть немного разбирается в электронике, физике и механике. Причем, работать устройство будет ничуть не хуже произведенного на заводском станке.

Как сделать сигвей своими руками?

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

Для того чтобы сделать сегвей своими руками, потребуются следующие элементы:

  • 2 колеса;
  • 2 мотора;
  • руль;
  • алюминиевые блоки;
  • опорная стальная или алюминиевая труба;
  • 2 свинцово-кислотные батареи;
  • плита из алюминия;
  • резисторы;
  • аварийный тормоз;
  • стальная ось 1,2 см;
  • печатная плата;
  • конденсаторы;
  • LiPo батарея;
  • Gate drivers;
  • индикаторы led;
  • 3 х АTmtga168;
  • регулятор напряжения;
  • ADXRS614;
  • 8 Mosfets;
  • два Springs;
  • и ADXL203.

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

Порядок сборки сигвея

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

Сбор механических деталей

  1. Моторы, колеса, шестерни и аккумуляторы можно позаимствовать у китайских скутеров, а с поиском двигателя проблем вообще нет.
  2. На большую шестерню, расположенную на руле, осуществляется передача с малой шестерни на двигателе.
  3. Передача на колесе (12 дюймов) имеет свободный ход - это требует внесения некоторых изменений, необходимых для работы вращающихся элементов в обоих направлениях.
  4. Неподвижная ось, прикрепленная тремя алюминиевыми блоками (их можно зафиксировать 5-мм установочными винтами), является основой платформы.
  5. С помощью программы SolidWorks необходимо сделать чертеж детали, которая позволит гироскутеру поворачивать в стороны во время наклона туловища. После этого деталь нужно выточить на станке с ЧПУ. На станке использовалась программа CAMBAM, которая также применялась при изготовлении коробки для блока аварийного тормоза.
  6. Руль прикрепляется к 2,5-см пустой трубе из стали.
  7. Для того чтобы рулевая колонка всегда располагалась по центру, а также обратная тяга была более интенсивной, можно задействовать пару стальных пружин.
  8. Руль оснащается специальной аварийной кнопкой, подключенной к реле - это позволяет снижать мощность мотора.
  9. Источники питания моторов - аккумуляторные батареи на 24 В.

Сбор электронных деталей

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

  1. Печатная плата, имеющая вычислительную функцию, собирает сведения с датчиков - гироскопа, акселерометра, потенциометра, после чего задает направление поворота.
  2. Без процессора АTmtga168 «самокат» не сможет нормально работать. Соединение с компьютером выполняется посредством Bluetooth и RN-41.
  3. С помощью двух Н-мостов происходит преобразование импульсов управления с базовой платы на усилие моторов. Каждый мост оснащен АTmtga168, платы сообщаются между собой посредством UART.
  4. Вся электроника приводится в действие благодаря отдельному аккумулятору.
  5. Для того чтобы быстро добраться до батарей, а также запрограммировать базовую плату и изменить параметры контуров управления, нужно изготовить небольшую коробку с разъемами, сверху ее корпус оснастить подстроечным потенциометром, а также снабдить переключателем питания электроники.

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

Как сделать сигвей своими руками, чтобы он наверняка работал? Верно - установить программное обеспечение (или ПО). Вот необходимые шаги для выполнения этой задачи:

  1. ПО микроконтроллера имеет в составе фильтр для акселерометра и гироскопа и цикла PD-управления.
  2. Фильтры Kalman и Complemenatry прекрасно справятся с задачей.
  3. Написать приложения с помощью языка программирования 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.

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

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

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

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

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

Шаг 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: Демо

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