Ховърборд: устройство, от какво се състои, схема и дизайн на мини-Segway. Как да направите Segway със собствените си ръце Segway с бензинов двигател със собствените си ръце

💖 Харесва ли ви?Споделете връзката с приятелите си

здравейте всички умници! В моя нов мозъчен проект ще създам самобалансиращо се превозно средство или „Segway“ със собствените си ръце. Този проект изисква основни познания по електроника и способност за ръчна работа. Всички механични компоненти могат да бъдат закупени онлайн или в местния магазин.

SEGWAY се състои от платформа, на която стоите в изправено положение, и два странични електрически мотора, задвижвани от батерии. Алгоритъмът на контролния контролер осигурява стабилна позиция. Движението на Segway се контролира от водача чрез накланяне на торса му и дръжка за избор на посоката на движение наляво/надясно. Следователно ще ви трябват допълнителни компоненти като контролер, моторно задвижване и сензор/жироскоп за ускорение. Механичната конструкция е изработена от дърво, тъй като е лека, електрически изолирана и лесна за работа. Сега нека започнем да правим Segway!

Стъпка 1: Основни характеристики на проекта

В този проект се изисква да се произведе устройство със следните характеристики:

— Достатъчна мощност и стабилност за шофиране на улицата и дори на нея чакълест път;
— 1 час непрекъсната работа
– Обща цена до 500 € евро
— Възможност за безжично управление
— Записване на данни на SD карта за откриване на повреди

Стъпка 2: Проектиране на системата

Сензорът за наклон е монтиран хоризонтално по оста x и вертикално по оста y.

Стъпка 5: Тестване и конфигуриране

Моля, обърнете внимание, че двигателите трябва да имат достатъчна мощност. Тествайте устройството в широка и безопасна зона, за да избегнете нараняване или повреда. Препоръчва се носенето на предпазни щитове и каска.

Изпълнение стъпка по стъпка процедура. Започнете с програмиране на микроконтролера Arduino (изтегляне), след което проверете комуникацията със сензорите и веригата за управление на моста.

Arduino Terminal може да се използва за отстраняване на грешки в програмния код и тестване на функционалността. Например усилването на PID трябва да се регулира, защото зависи от механичните и електрическите параметри на двигателя.

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

В програмата Terminal можете да изпълнявате различни команди "?".
? – Помощ при избор на команди
p,i,d [цялочислена стойност] - Задаване/Получаване на усилване на PID, стойност от 0 до 255
r [цяло число] – принудително увеличаване на оборотите на двигателя, стойност от -127 до 127
v – версия на софтуера
С командата "p" получавате достъп до параметъра Kp. Командата "p 10" ви позволява да зададете Kp на стойност 10.

След подаване на захранване към Arduino, сензорите се инициализират и влизат в състояние на готовност. При натискане на бутона се предава управляващ сигнал към контролера SEGWAY, който е във вертикално положение, който е готов да активира двигателите за движение напред или назад в зависимост от първоначалната позиция. От този момент нататък бутонът трябва да се държи натиснат постоянно, в противен случай двигателите ще се изключат и контролерът ще премине в състояние на готовност. След достигане на вертикално положение контролерът изчаква сигнала за превключвател за ограничаване на натоварването „Шофьор на място“, който обикновено се натиска с крак, докато водачът е на платформата. След това стартира алгоритъмът за балансиране и двигателите се активират напред или назад, за да останат в изправено положение. Навеждането напред създава движение напред и обратно. Наклоненото положение води до по-бързо движение. Накланянето в обратната посока води до намаляване на скоростта. Използвайте дръжката, за да се движите наляво и надясно.

Стъпка 6: Демо

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

Нека поговорим за това как можете да използвате Arduino, за да създадете робот, който балансира като Segway.

Segway от английски. Segway е двуколесно стоящо превозно средство, оборудвано с електрическо задвижване. Наричат ​​ги още ховърборди или електрически скутери.

Чудили ли сте се някога как работи Segway? В този урок ще се опитаме да ви покажем как да направите Arduino робот, който се балансира сам като Segway.

За да балансират робота, двигателите трябва да устоят на падането на робота. Това действие изисква обратна връзкаи коригиращи елементи. Елемент за обратна връзка - който осигурява както ускорение, така и въртене и в трите оси (). Arduino използва това, за да знае текущата ориентация на робота. Коригиращият елемент е комбинацията от двигател и колело.

Крайният резултат трябва да бъде нещо подобно:

Диаграма на робота

L298N Модул на моторния драйвер:

Мотор-редуктор DCс колело:

Самобалансиращият се робот е по същество обърнато махало. Може да бъде по-добре балансиран, ако центърът на масата е по-висок спрямо осите на колелата. По-висок център на масата означава по-висок инерционен момент на масата, което съответства на по-ниско ъглово ускорение (по-бавно падане). Ето защо поставихме батерията отгоре. Височината на робота обаче е избрана въз основа на наличието на материали :)

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

Теория

В теорията на контрола, задържане на някаква променлива (в в този случайпозиция на робота), е необходим специален контролер, наречен PID (пропорционална интегрална производна). Всеки от тези параметри има "печалба", обикновено наричана Kp, Ki и Kd. PID осигурява корекция между желаната стойност (или вход) и действителната стойност (или изход). Разликата между входа и изхода се нарича "грешка".

PID контролерът намалява грешката до възможно най-малката стойност чрез непрекъснато регулиране на изхода. В нашето самобалансиране Ардуино роботвходът (който е желаният наклон в градуси) се задава от софтуера. 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 ще намали времето, необходимо за стабилизиране на робота.

Поведението на робота може да се види във видеото по-долу:

Arduino код за самобалансиращ се робот

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

#включи #включи #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 контрол/статус vars bool dmpReady = false; // задаване на истина, ако стартирането на DMP е успешно uint8_t mpuIntStatus; // съдържа действителен байт за състояние на прекъсване от MPU uint8_t devStatus; // връща статус след всяка операция на устройството (0 = успех, !0 = грешка) uint16_t packetSize; // очакван размер на DMP пакет (по подразбиране е 42 байта) uint16_t fifoCount; // брой на всички байтове в момента във FIFO uint8_t fifoBuffer; // FIFO буфер за съхранение // vars за ориентация/движение Quaternion q; // кватернион контейнер VectorFloat гравитация; // гравитационен вектор float ypr; //контейнер при отклонение/наклон/преобръщане и гравитационен вектор //PID двойна originalSetpoint = 173; двойна зададена точка = оригинална зададена точка; двойно преместване AngleOffset = 0,1; двоен вход, изход; //коригирайте тези стойности, за да отговарят на вашия собствен дизайн double Kp = 50; двойно Kd = 1,4; двойно Ki = 60; PID pid(&input, &output, &setpoint, Kp, Ki, Kd, ​​​​DIRECT); двоен моторSpeedFactorLeft = 0,6; двоен моторSpeedFactorRight = 0,5; //МОТОРЕН КОНТРОЛЕР 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; // показва дали пинът за прекъсване на MPU е станал висок void dmpDataReady() ( mpuInterrupt = true; ) void setup() ( // присъединяване към I2C шина (I2Cdev библиотеката не прави това автоматично) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin( ); TWBR = 24; // 400 kHz I2C тактова честота (200 kHz, ако CPU е 8MHz) #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE(400, true); #endif mpu.initialize(); , мащабиран за минимална чувствителност mpu.setYGyroOffset(-85); mpu.setZAccelOffset(1788); уверете се, че работи (връща 0, ако е така) if (devStatus == 0) ( // включете DMP, след като вече е готов mpu.setDMPEnabled(true); // активирайте Arduino interrupt detectionInterrupt(0, dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus(); // задайте нашия DMP Ready флаг, така че основният функцията loop() знае, че е добре да я използва dmpReady = true; // получава очаквания размер на DMP пакета за по-късно сравнение packetSize = mpu.dmpGetFIFOPacketSize(); // настройка на PID pid.SetMode(AUTOMATIC); pid.SetSampleTime(10); pid. SetOutputLimits(-255, 255); ) else ( // ГРЕШКА! // 1 = първоначалното зареждане на паметта е неуспешно // 2 = актуализациите на DMP конфигурацията са неуспешни // (ако ще се повреди, обикновено кодът ще бъде 1) Serial.print(F("DMP Initialization неуспешно (код ")); Serial.print(devStatus); Serial.println(F()") ) void loop() ( // ако програмирането е неуспешно, не се опитвайте да правите нищо, ако (!dmpReady) return; // изчакайте прекъсване на MPU или допълнителен пакет(и), докато (!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 наличен пакет // (това ни позволява незабавно да четем повече, без да чакаме прекъсване) fifoCount -= packetSize; mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&гравитация, &q); mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); вход = ypr * 180/M_PI + 180; ) )

Стойностите Kp, Ki, Kd може или не могат да работят. Ако не го направят, следвайте стъпките по-горе. Имайте предвид, че наклонът в кода е зададен на 173 градуса. Можете да промените тази стойност, ако желаете, но имайте предвид, че това е ъгълът на наклон, който роботът трябва да поддържа. Освен това, ако вашите двигатели са твърде бързи, можете да регулирате стойностите на motorSpeedFactorLeft и motorSpeedFactorRight.

Това е всичко за сега. ще се видим

В днешно време все по-популярна става малката самоходна платформа с две колела, т. нар. Segway, която е изобретена от Дийн Камен. Забелязвайки трудностите, които един ползвател на инвалидна количка изпитва, когато се качва на тротоар, той вижда възможност да създаде превозно средство, което може да помогне на хората да се придвижват без много усилия. Камен реализира на практика идеята си за създаване на самобалансираща се платформа. Първият модел беше тестван през 2001 г. и беше превозно средство с бутони на дръжката. Разработен е за хора с уврежданияи им позволява да се движат независимо дори по неравен терен. Новият модел стана известен като "Segway RT" и вече позволяваше управление чрез накланяне на лоста наляво или надясно. През 2004 г. започва да се продава в Европа и Азия. Цена на най-модерните модерни модели, например Segway PTi2 - около $5000. Напоследък китайски и японски компании създават устройства с различни модификации и иновативен дизайн. Някои дори правят подобни превозни средства само с едно колело, но нека погледнем класическия Segway.


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

Segway е оборудван с два безчеткови електрически мотора, направени от сплав неодим-желязо-бор, способни да развият мощност до 2 kW, благодарение на литиево-полимерна батерия.

Части за сегуей

За да създадете Segway, имате нужда от два редукторни мотора с колела, батерия, електронна схема, платформа и волан.

Мощност на двигателя евтини моделиприблизително 250W, което осигурява скорост до 15 км/ч, с относително ниска консумацияток Те не могат да въртят колелата директно, тъй като високата скорост на тези двигатели не им позволява да получат необходимото сцепление. Подобно на това, което се случва, когато използвате скоростите на вашия велосипед: като увеличите предавателното отношение, ще загубите скорост, но ще увеличите силата, приложена към педала.

Платформата е разположена под оста на двигателя. Батерията, чието тегло е доста високо, също е разположена под поставката за крака в симетрична позиция, което гарантира, че дори без водач на борда Segway остава в изправено положение. В допълнение, вътрешната механична стабилност ще бъде подпомогната от електронния блок за контрол на стабилността, който е напълно активен, когато водачът присъства. Присъствието на човек на платформата повдига центъра на тежестта над оста на колелото, което прави системата нестабилна - това вече ще бъде компенсирано от платката на електрониката.

По принцип можете да направите такова нещо сами, като закупите необходимата електроника на китайски уебсайт (те са в продажба). Всички части са монтирани с помощта на винтове и гайки (не винтове). Особено внимание трябва да се обърне на правилното опъване на веригата. Батериите са закрепени чрез U-образни скоби с малки гумени уплътненияда предоставят необходимото налягане. Препоръчително е да поставите двойнозалепваща лента между батерията и платформата, за да няма приплъзване. Контролният панел трябва да се постави между две батерии и да се закрепи със специални разделители.

Може да има или да няма лост за управление - все пак моделите на Segway без него (mini-Segway) вече са популярни. Като цяло нещото е интересно и не е много скъпо, тъй като според информация от приятели покупната цена на едро в Китай е само 100 долара.

какво ни трябва Като начало, нека вземем колелца от машина за коремни упражнения. Скоростна кутия 12 волта и 160 оборота. Powerbank за 15 000 милиампер часа. Да може да управлява превозно средство, тоест завийте надясно или наляво, ускорявайте и забавяйте, ще използваме модули, които вече сме използвали при производството на домашна косачка за трева. По този начин можете да регулирате оборотите на двигателя. Съответно 2 модула, 2 двигателя, 2 захранващи банки.

Двата комплекта работят отделно. Да предположим, че добавим скорост към десния двигател, Segway ще завие наляво. Същото, но огледално, при завиване надясно. Ако добавите скорост към два двигателя едновременно, продуктът ще се ускори.

Първо, нека монтираме скоростните кутии. За да направите това, нанесете го в центъра на шперплат лист, очертайте очертанията и използвайте нож, за да направите вдлъбнатина. По същия начин, както скоростната кутия беше прикрепена от лявата страна, ние го правим от противоположната страна.

Трябва да изрежете няколко от тези пръти и да ги завиете отстрани. Това е необходимо, така че шперплатът да не провисне.
Сваляме колелата и ги поставяме на оста. Както можете да видите, те са различни един от друг. Първо трябва да направите две дървени втулки. Ще използваме домашен струг за дърво. Резултатът беше две дървени заготовки.

Поставете детайла. Пробийте дупка и залепете детайла епоксидна смола. (Авторът направи поправка в края на видеото, прочетете по-долу).

Сега ще направим волана. За това ще използваме парче канализационна тръба. Взехме дръжката от симулатора. Ще направим дупки в горната част на шперплата и ще закрепим тръбата и дръжката. Кормилото на Segway трябва да е леко наклонено, затова направихме дупка в шперплата под наклон и подрязахме пластмасовата тръба.

Всички контролни модули ще бъдат монтирани на волана. Трябва да опънете 8 броя кабели от волана до скоростните кутии. За да не стърчат отгоре, първо правим проходен отвор в тръбата и вкарваме проводниците.

И сега отново трябва да залепите всичко с епоксидна смола и да изчакате 24 часа. Колелата се оказаха деформирани; епоксидната смола се оказа не много надежден материал. Разглобих скоростните кутии, свалих валовете и им нарязах резби. Пробих и дупки в дървените втулки. Сложих метални втулки и сега всичко изглежда много по-надеждно. Колелата също могат да се завинтват много здраво. Пластмасова тръбане изглеждаше напълно надеждна; дръжката на лопатата беше вкарана в нея, за да я укрепи.

Поставяме 2 модула в панела. Трябва да пробиете дупки в тръбата за резисторите. Остава само да залепите копчетата с горещо лепило. Прекарайте кабелите към модула, скоростните кутии и захранващите блокове. Завийте колелата.

За тези, които се страхуват от неправилно свързване на проводниците, всичко е описано подробно на модулите.

Segway ще има и велосипеден скоростомер. Тестовата версия на домашния Segway е готова. Нека го тестваме.

Възможно ли е наистина да направите сами такова сложно устройство като Segway? Оказва се, че е възможно. Ако приложите достатъчно усърдие и използвате специални знания. Това направи млад инженер на име Петер Форсберг, който завърши Шведски технологичен университет Чалмърс със степен по автоматизация и мехатроника.

Освен знания и умения ще му трябват и много пари, казвате. Да, бяха необходими пари, но не много, около 300 евро, за закупуване на определен набор от части и оборудване. Резултатът от неговите усилия е в това видео:

Механика

Моторите, колелата, веригите, зъбните колела и батериите са взети от два евтини китайски електрически скутера. Двигателите осигуряват 24Volt, 300W, 2750 rpm.

Предаването се осъществява от малката предавка на мотора към голямата предавка на волана. Съотношението е приблизително 6:1, това високо съотношение е за предпочитане за получаване на по-добър въртящ момент и намалено максимална скорост. Трансмисията на 12-инчовото колело се основава на механизъм за свободен ход, така че трябва да се направят необходимите модификации, за да се позволи колелото да се задвижва и в двете посоки.

Основата на платформата е фиксирана ос, върху която трябва да се въртят и двете колела. Оста е закрепена с три алуминиеви блока, които са закрепени с 5 мм винтове.

За да можете да завивате при управление на Segway чрез накланяне на кормилната колона наляво и надясно, е направен чертеж на необходимата част в програмата SolidWorks, след което е произведена на CNC машина. Машинната програма е написана с помощта на CAMBAM. Същият метод е използван за производството на електронната кутия и сглобяването на блока за аварийно спиране.

Кормилото на бъдещия Segway е обикновено кормило за велосипед, чиято тръба е прикрепена към 25 mm куха стоманена тръба. За да се поддържа кормилната колона центрирана и да се осигури известна сила за обратна връзка, бяха използвани две стоманени пружини. Има и авариен бутон на волана, който е свързан със стандартно реле от колата и може да намали мощността на двигателя.

За захранване се използват две оловни батерии 12V 12Ah, които се използват за двигатели 24V.

електроника

Всички печатни платкиса произведени специално за тази разработка. Основната платка се грижи за изчисленията, като събира данни от сензори като жироскоп (ADXRS614), акселерометър (ADXL203) и тримпот, въз основа на които може да определи в коя посока искате да завиете.

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

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

Софтуер

Софтуерът на микроконтролера се състои главно от филтър за жироскопа и акселерометъра и PD контролна верига. За теста бяха взети два филтъра: Kalman и Complementarry. Оказа се, че тяхната производителност е много сходна, но филтърът Complementatry изисква по-малко изчисления, така че беше избран за използване. Приложенията също са написани на Java, така че можете да видите всички стойности на сензорите и контролните сигнали, състоянието на батерията и т.н.

Техническата страна на създаването на Segway със собствените си ръце в това видео:



Кажете на приятели