Innehållsförteckning:

PID-baserad linje efter robot med POLOLU QTR 8RC-sensorarray: 6 steg (med bilder)
PID-baserad linje efter robot med POLOLU QTR 8RC-sensorarray: 6 steg (med bilder)

Video: PID-baserad linje efter robot med POLOLU QTR 8RC-sensorarray: 6 steg (med bilder)

Video: PID-baserad linje efter robot med POLOLU QTR 8RC-sensorarray: 6 steg (med bilder)
Video: Полный курс Redux Toolkit + RTK Query для начинающих | Редакс за 2 часа! 2024, Juli
Anonim
PID-baserad linje efter robot med POLOLU QTR 8RC-sensorarray
PID-baserad linje efter robot med POLOLU QTR 8RC-sensorarray

Hej!

Det här är mitt första inlägg om instruktioner, och idag ska jag ta dig längs vägen och förklara hur du kan mobilisera en PID-baserad linje efter robot med hjälp av QTR-8RC-sensorarray.

Innan vi går vidare till byggandet av roboten måste vi förstå vad som kallas PID,

Steg 1: Arbetsprincip

Vad är PID ??

Termen PID står för proportionell, integral, derivat. Så det vi gör med att involvera PID med radföljande är att vi ger ett kommando till roboten att följa linjen och att upptäcka svängarna genom att beräkna felet genom att överväga hur långt har det flyttat sig från banan.

viktiga termer som nämns i polaludokument

Proportionsvärdet är ungefär proportionellt mot din robots position med avseende på linjen. Det vill säga, om din robot är exakt centrerad på linjen, förväntar vi oss ett proportionellt värde på exakt 0

Integralvärdet registrerar historiken för din robots rörelse: det är en summa av alla värden för proportionell term som registrerades sedan roboten började köra

Derivatet är förändringstakten för det proportionella värdet

I denna handledning kommer vi bara att prata om Kp och Kd -termerna, men resultat kan också åstadkommas med hjälp av Ki -termen. Avläsningarna som vi får från sensorn är inte bara analoga avläsningar utan också positionsläsningarna för roboten.so i grund och botten Sensorn ger värden från 0 till 2500 som sträcker sig från maximal reflektans till minsta reflektion, men ger samtidigt information om hur långt roboten har strandat från linjen.)

Nu måste vi överväga felbegreppet, Detta är skillnaden mellan de två värdenas börvärde och det aktuella värdet. (Börvärdet är avläsningen som motsvarar den "perfekta" placeringen av sensorer ovanpå raderna. Och strömmen värdet är sensorns momentana avläsningar. Till exempel: Om du använder denna matrisensor och använder 8 sensorer får du en lägesavläsning på 3500 om du är på plats, cirka 0 om du är alldeles för vänster från raden och runt 7000 om du har alldeles för hög.). Vårt mål är att göra felet till noll. Då kan bara roboten smidigt följa linjen.

Sedan kommer beräkningsdelen,.

1) beräkna felet.

Fel = Börvärde - Aktuellt värde = 3500 - position

Som jag använder 8 sensorer. sensorn ger en lägesavläsning på 3500 när roboten är perfekt placerad. Nu när vi har beräknat vårt fel, marginalen med vilken vår robot driver över banan, är det dags för oss att granska felet och justera motorvarvtalet därefter

2) bestäm motorernas justerade varvtal.

MotorSpeed = Kp * Error + Kd * (Error - LastError);

LastError = Fel;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Logiskt sett betyder ett fel på 0 att vår robot är ute till vänster, vilket betyder att vår robot måste gå lite åt höger, vilket i sin tur betyder att den högra motorn måste sakta ner och den vänstra motorn måste snabba upp. DETTA ÄR PID!

MotorSpeed -värdet bestäms utifrån ekvationen själv. RightBaseSpeed och LeftBaseSpeed är de hastigheter (valfritt värde på PWM 0-255) som roboten kör på när felet är noll.

Koden som jag har bifogat inkluderar också hur man kontrollerar sensorns positionsvärden, så att du kan öppna den seriella bildskärmen och ladda upp koden och se själv med en rad hur motorerna roterar när läget varierar.

Om du stöter på problem när du implementerar din robot, kontrollera bara om och se genom att ändra tecknen på ekvationerna !!!

Och nu den svåraste delen att hitta Kp och Kd, jag var tvungen att spendera mer än 1 timme på att perfekt ställa in min robot. Istället för att sätta slumpmässiga värden fann jag en enklare metod för att bestämma detta.

  1. Börja med kp och Kd lika med 0, och börja med Kp, försök först att ställa Kp till 1 och observera roboten, vårt mål är att följa linjen även om den är vinglig, om roboten överskjuter och förlorar linjen, reducera kp -värdet.om roboten inte kan navigera en sväng och vara trög ökar Kp -värdet.
  2. När roboten verkar följa raden något justeras Kd -värdet (Kd -värde> Kp -värde) från 1 och ökar värdet tills du ser en smidig enhet med mindre vingling.
  3. När roboten börjar följa linjen, öka hastigheten och se om den kan behålla och följa linjen.

Tänk på att hastigheten har en direkt inverkan på PID -tuning och du kan ibland behöva justera om för att matcha din robots hastighet.

Nu kan vi börja bygga vår robot.

Steg 2: Bygget

The Build
The Build
The Build
The Build
The Build
The Build

Arduino atmega 2560 med USB -kabel - detta är den viktigaste mikrokontrollern som används.

Chassi- för robotchassit har jag använt 2 cirkulära akrylplattor som används för ett annat projekt som är perfekt för detta. Med muttrar och skruvar har jag byggt ett chassi med 2 våningar så att jag kan fästa andra moduler på den övre plattan. Eller du kan använda färdiga chassier tillgängliga.

www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…

Mikrometallväxelmotorer- roboten behövde snabbt roterande motorer för att klara PID-rutinen, för det har jag använt motorer med en nominell effekt på 6V 400rpm och lämpliga griphjul.

www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…

www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…

QTR 8Rc sensor array - detta kan användas för linjespårning, som nämnts tidigare tror jag att du nu har en klar förståelse för hur man använder sensor arrayen med PID. Koden är mycket enkel och med hjälp av befintliga arduino bibliotek kommer du att kunna att bygga en snabb linjeföljare.

www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…

TB6612FNG Motorförare-Jag ville använda en motorförare som kan hantera svängar och ändra riktningar på ett ögonblick, vilket effektivt kan bromsa motorerna när PWM-signalen gick lågt.

www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…

Lipo batteri- 11.1V lipo batteri används för att ge roboten ström. Även om jag har använt ett 11.1 V lipo batteri, är denna kapacitet mer än vad som behövs för arduino och motorer. Om du kan hitta en lätt vägd 7,4V lipo-batteri eller 6V Ni-MH-batteri kommer det att vara perfekt. på grund av denna anledning måste jag använda en buck-omvandlare för att konvertera spänningen till 6V.

11.1V-

7.4 V-

Buck-omvandlarmodul-

Utöver det behöver du bygeltrådar, muttrar och bultar, skruvmejslar och elektriska band och även dragkedjor för att se till att allt är på plats.

Steg 3: Montering

Montering
Montering
Montering
Montering
Montering
Montering
Montering
Montering

fäst motorerna och ett litet hjul i en tallrik med muttrar och skruvar och montera sedan QTR -sensorn, motorföraren, arduino -kortet och slutligen batteriet på chassit.

Här är ett perfekt diagram jag hittade på internet, som berättar hur anslutningarna ska göras.

Steg 4: Designa ditt linjespår

Designa ditt linjespår
Designa ditt linjespår

Nu verkar ditt projekt nästan vara över. Som för sista etappen måste du ha en liten arena för att testa din robot. Jag har använt en slumpmässig linje på 3 cm bred linje på en svart bakgrund. Se till att du klistrar in allt väl. Och undvik för närvarande 90 degees vinkelkors och korsningar, eftersom det är ett komplicerat fall när det gäller kodning.

Steg 5: Programmera din kod

1. Ladda ner och installera Arduino

Desktop IDE

· Windows -

· Mac OS X -

· Linux -

2. Ladda ner och klistra in QTR 8 RC sensor array -fil i mappen Arduino bibliotek.

·

· Klistra in filer på sökvägen - C: / Arduino / libraries

3. Ladda ner och öppnaLINEFOLLOWING.ino

4. Ladda upp koden till arduino -kortet via en USB -kabel

Steg 6: KLAR !

Image
Image

nu har du en rad som följer roboten gjord av dig själv.

Hoppas denna handledning var till hjälp. Tveka inte att kontakta mig via [email protected] om du har några problem.

vi ses snart med ett nytt projekt.

Njut av att bygga !!

Rekommenderad: