Съдържание:
- Стъпка 1: Принцип на работа
- Стъпка 2: Изграждането
- Стъпка 3: Сглобяване
- Стъпка 4: Проектирайте линията си
- Стъпка 5: Програмирайте кода си
- Стъпка 6: ГОТОВО
Видео: Продължаващ PID базиран робот с масив от сензори POLOLU QTR 8RC: 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Здравейте!
това е първото ми писане за инструкции, а днес ще ви отведа по пътя и ще ви обясня как да укрепите PID базирана линия след робота, използвайки QTR-8RC сензорен масив.
Преди да преминем към изграждането на робота, трябва да разберем какво се нарича PID,
Стъпка 1: Принцип на работа
Какво е PID ??
Терминът PID означава пропорционален, интегрален, производен, така че просто това, което правим с включването на PID със следния ред, е, ние даваме команда на робота да следва линията и да открива завоите, като изчислява грешката, като обмисля как далеч се е отдалечил от пистата.
ключови термини, споменати в документи polalu
Пропорционалната стойност е приблизително пропорционална на позицията на вашия робот по отношение на линията. Тоест, ако вашият робот е точно центриран по линията, очакваме пропорционална стойност точно 0
Интегралната стойност записва историята на движението на вашия робот: това е сума от всички стойности на пропорционалния термин, записани от стартирането на робота
Дериватът е скоростта на промяна на пропорционалната стойност
В този урок ще говорим само за Kp и термините Kd, но резултатите могат да бъдат постигнати и чрез термина Ki. Показанията, които получаваме от сензора, са не само аналогови показания, но и позиционни показания на робота..толкова по принцип сензорът предоставя стойности от 0 до 2500, вариращи от максимална отразяваща способност до минимална отражателна способност, но в същото време също така предоставя информация за това колко далеч роботът се е отклонил от линията.)
Сега трябва да разгледаме термина за грешка, Това е разликата между стойностите на двете стойности и текущата стойност. (Стойността на зададената стойност е показанието, което съответства на „перфектното“разположение на сензорите отгоре на редовете. И Текущата стойност стойността е моментните показания на сензора. Например: Ако използвате този сензор за масив и използвате 8 сензора, ще получите позиционно отчитане от 3500, ако сте на място, около 0, ако сте твърде далеч от линията и около 7000, ако сте твърде прав.). Нашата цел е да направим грешката нулева. Само тогава роботът може плавно да следва линията.
След това идва изчислителната част,.
1) изчислете грешката.
Грешка = Зададена стойност - Текуща стойност = 3500 - позиция
Като използвам 8 сензора. сензорът дава позиционен показател от 3500, когато роботът е перфектно поставен. Сега, след като сме изчислили нашата грешка, границата, с която нашият робот се движи по пистата, е време да проучим грешката и да регулираме съответно скоростите на двигателя
2) определете регулираните обороти на двигателите.
MotorSpeed = Kp * Грешка + Kd * (Грешка - LastError);
LastError = Грешка;
RightMotorSpeed = RightBaseSpeed + MotorSpeed;
LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;
Логически погледнато, грешка 0 означава, че нашият робот е вляво, което означава, че нашият робот трябва да върви малко надясно, което от своя страна означава, че десният двигател трябва да се забави, а левият двигател трябва да ускори. ТОВА Е ПИД!
Стойността на MotorSpeed се определя от самото уравнение. RightBaseSpeed и LeftBaseSpeed са скоростите (всяка стойност на PWM 0-255), при които роботът работи, когато грешката е нула.
Кодът, който съм приложил, включва и как да проверя позиционните стойности на сензора, така че можете да отворите серийния монитор и да качите кода и да видите сами с ред как се въртят двигателите при промяна на позицията.
Ако срещнете проблеми при внедряването на вашия робот, просто проверете дали и ще видите, като промените знаците на уравненията !!!
И сега най -сложната част НАМЕРЯНЕ Kp И Kd, трябваше да прекарам повече от 1 час, за да настроя перфектно моя робот. Вместо да поставя случайни стойности, намерих по -лесен метод за определяне на това.
- Започнете с kp и Kd, равно на 0, и започнете с Kp, първо опитайте да настроите Kp на 1 и наблюдавайте робота, нашата цел е да следваме линията, дори ако тя е колеблива, ако роботът превиши и загуби линията, намалете стойността на kp.ако роботът не може да се движи в завой и ако е бавен, увеличете стойността на Kp.
- След като изглежда, че роботът донякъде следва линията, коригирайте стойността на Kd (Kd стойност> Kp стойност) започнете от 1 и увеличете стойността, докато видите гладко движение с по -малко трептене.
- След като роботът започне да следва линията, увеличете скоростта и вижте дали е в състояние да задържи и следва линията.
Имайте предвид, че скоростта има пряко влияние върху PID настройката и понякога може да се наложи да пренастроите, за да съответства на скоростта на вашия робот.
Сега можем да преминем към изграждането на нашия робот.
Стъпка 2: Изграждането
Arduino atmega 2560 с USB кабел - това е основният използван микроконтролер.
Шаси- за шасито на робота съм използвал 2 кръгли акрилни плочи, които се използват за друг проект, който е идеален за това. С помощта на гайки и винтове съм построил двуетажно шаси, така че да мога да прикрепя други модули към горната плоча. Или можете да използвате налични готови шасита.
www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…
Микрометални редукторни двигатели- роботът се нуждаеше от бързо въртящи се двигатели, за да се справи с PID рутината, за това използвах двигатели с мощност 6V 400rpm и подходящи захващащи се колела.
www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…
www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…
QTR 8Rc сензорен масив - това може да се използва за проследяване на линии, както споменахме по -рано, мисля, че сега имате ясно разбиране как да работите с сензорния масив с PID. Кодът е много прост и с помощта на съществуващите библиотеки arduino ще можете за изграждане на бърз последовател на линия.
www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…
TB6612FNG Шофьор на мотор-Исках да използвам шофьор на мотор, който може да управлява завои и да променя посоката в един момент, който е в състояние ефективно да спира спира двигателите, когато PWM сигналът се понижи.
www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…
Lipo батерия- 11.1V lipo батерия се използва за захранване на робота. Въпреки че съм използвал 11.1 V lipo батерия, този капацитет е повече от това, което е необходимо за arduino и двигателите. Ако можете да намерите лека претеглена 7.4V lipo батерия или 6V Ni-MH батерия, тя ще бъде перфектна. Поради тази причина трябва да използвам доларов конвертор, за да преобразувам напрежението в 6V.
11.1V-
7.4 V-
Модул за преобразуване на долари-https://www.ebay.com/itm/1PCS-DC-DC-LM2596-power-…
Освен това се нуждаете от джъмперни проводници, гайки и болтове, отвертки и електрически ленти, а също и ципове, за да сте сигурни, че всичко е на мястото си.
Стъпка 3: Сглобяване
прикрепете двигателите и малко колело в плоча с помощта на гайки и винтове и след това монтирайте QTR сензора, драйвера на двигателя, платката arduino и накрая батерията върху шасито.
Ето една перфектна диаграма, която намерих в интернет, която ви казва как трябва да се правят връзките.
Стъпка 4: Проектирайте линията си
Сега вашият проект изглежда е почти приключил. Тъй като за последния етап трябва да имате малка арена, за да тествате вашия робот. Аз съм използвал произволна линия с широчина 3 см бяла линия на черен фон. Уверете се, че сте поставили всичко добре и засега избягвайте ъглови кръстосания и напречни сечения от 90 градуса, защото това е сложен случай от гледна точка на кодирането.
Стъпка 5: Програмирайте кода си
1. Изтеглете и инсталирайте Arduino
Desktop IDE
· Windows -
· Mac OS X -
· Linux -
2. Изтеглете и поставете QTR 8 RC сензорен масив файл в папката Arduino libraries.
·
· Поставете файловете в пътя - C: / Arduino / libraries
3. Изтеглете и отворетеLINEFOLLOWING.ino
4. Качете кода на платката arduino чрез USB кабел
Стъпка 6: ГОТОВО
сега имате робот, който следва линия, направен от вас.
Надявам се този урок да е бил полезен. Не се колебайте да се свържете с мен чрез [email protected], ако имате някакъв проблем.
ще се видим скоро с друг нов проект.
Насладете се на изграждането !!
Препоръчано:
Аудио семплер, базиран на DFPlayer с капацитивни сензори: 9 стъпки
DFPlayer базиран аудио семплер с капацитивни сензори: Въведение След експериментиране с конструирането на различни синтезатори, се заех да създам аудио семплер, който беше лесно възпроизвеждан и евтин. За да има добро качество на звука (44,1 kHz) и достатъчен капацитет за съхранение, моделът DFPlayer
Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)
Метеорологичен генератор, базиран на времето (ESP8266 базиран Midi генератор): Здравейте, днес ще ви обясня как да направите свой собствен малък музикален генератор, базиран на времето. Той е базиран на ESP8266, който е нещо като Arduino и реагира на температура, дъжд и интензивността на светлината. Не очаквайте това да прави цели песни или акорди
Робот за избягване на препятствия с помощта на ултразвукови сензори: 9 стъпки (със снимки)
Робот за избягване на препятствия, използващ ултразвукови сензори: Това е прост проект за робот за избягване на препятствия, използващ ултразвукови сензори (HC SR 04) и дъска Arduino Uno. урок проект, споделете
Навигирайте робот със сензори за обувки, без GPS, без карта: 13 стъпки (със снимки)
Навигирайте робота със сензори за обувки, без GPS, без карта: Роботът се движи по предварително програмиран път и предава (по bluetooth) действителната си информация за движение до телефон за проследяване в реално време. Arduino е предварително програмиран с пътека, а oblu се използва за усещане на движението на робота. oblu предава информация за движение
Масив от селскостопански сензори: 6 стъпки
Масив от селскостопански сензори: Проект на Джаксън Брейкъл, Тайлър Маккабинс и Якоб Талер за EF 230 Селското стопанство е жизненоважен фактор за производство в Съединените щати. Културите могат да се използват за голямо разнообразие от различни цели, вариращи от суровини за производството на