Innholdsfortegnelse:

PID-basert linje etter robot med POLOLU QTR 8RC-sensor Array: 6 trinn (med bilder)
PID-basert linje etter robot med POLOLU QTR 8RC-sensor Array: 6 trinn (med bilder)

Video: PID-basert linje etter robot med POLOLU QTR 8RC-sensor Array: 6 trinn (med bilder)

Video: PID-basert linje etter robot med POLOLU QTR 8RC-sensor Array: 6 trinn (med bilder)
Video: Урок 95: Использование щита двигателей постоянного тока L293D 4 для Arduino UNO и Mega | Пошаговый курс Arduino 2024, Juli
Anonim
PID-basert linje etter robot med POLOLU QTR 8RC-sensor Array
PID-basert linje etter robot med POLOLU QTR 8RC-sensor Array

Hallo!

Dette er min første oppskrift på instrukser, og i dag tar jeg deg nedover veien og forklarer hvordan du kan mobbe en PID-basert linje etter robot ved hjelp av QTR-8RC sensor array.

Før vi går videre til bygningen av roboten, må vi forstå hva som kalles PID,

Trinn 1: Arbeidsprinsipp

Hva er PID ??

Begrepet PID står for proporsjonal, integral, derivat. Så enkelt, det vi gjør med å involvere PID med linjefølgende er, gir vi en kommando til roboten om å følge linjen og for å oppdage svingene ved å beregne feilen ved å vurdere hvordan langt har det beveget seg av banen.

sentrale termer som nevnt i polaludokumenter

Den proporsjonale verdien er omtrent proporsjonal med robotens posisjon i forhold til linjen. Det vil si at hvis roboten din er nøyaktig sentrert på linjen, forventer vi en proporsjonal verdi på nøyaktig 0

Integralverdien registrerer historien til robotens bevegelse: det er en sum av alle verdiene til proporsjonalbegrepet som ble registrert siden roboten begynte å kjøre

Derivatet er endringshastigheten til den proporsjonale verdien

I denne opplæringen vil vi bare snakke om Kp og Kd -vilkårene, men resultater kan også oppnås ved bruk av Ki -termen. Avlesningene vi får fra sensoren er ikke bare analoge avlesninger, men også posisjonsavlesningene til roboten.so i utgangspunktet Sensoren gir verdier fra 0 til 2500, alt fra maksimal refleksjon til minimum refleksjon, men gir samtidig informasjon om hvor langt roboten har strandet fra linjen.)

Nå må vi vurdere feilbegrepet, Dette er forskjellen mellom de to verdiene settpunktverdi og gjeldende verdi. (Nominell verdi er avlesningen som tilsvarer den "perfekte" plasseringen av sensorer på toppen av linjene. Og gjeldende verdien er øyeblikkelige avlesninger av sensoren. For eksempel: Hvis du bruker denne matrisensoren og bruker 8 sensorer, vil du motta en posisjonsavlesning på 3500 hvis du er i orden, rundt 0 hvis du er altfor venstre fra linjen og rundt 7000 hvis du har altfor høyre.). Målet vårt er å gjøre feilen null. Da er det bare roboten som kan følge linjen jevnt.

Så kommer beregningsdelen,.

1) beregne feilen.

Feil = Settpunktverdi - Gjeldende verdi = 3500 - posisjon

Som jeg bruker 8 sensorer. sensoren gir en posisjonsavlesning på 3500 når roboten er perfekt plassert. Nå som vi har beregnet feilen vår, marginen som roboten driver over sporet, er det på tide at vi gransker feilen og justerer motorhastighetene deretter

2) bestemme motorens justerte turtall.

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

LastError = Feil;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Logisk sett betyr en feil på 0 at roboten vår er ute til venstre, noe som betyr at roboten vår må gå litt til høyre, noe som igjen betyr at den høyre motoren må bremse og den venstre motoren må øke hastigheten. DETTE ER PID!

MotorSpeed -verdien bestemmes ut fra selve ligningen. RightBaseSpeed og LeftBaseSpeed er hastighetene (hvilken som helst verdi på PWM 0-255) som roboten kjører på når feilen er null.

Koden jeg har vedlagt inkluderer også hvordan du kontrollerer sensorens posisjonsverdier, slik at du kan åpne den serielle skjermen og laste opp koden og se selv med en linje hvordan motorene roterer når posisjonen varierer.

Hvis du får problemer når du implementerer roboten din, bare sjekk om og se ved å endre tegnene på ligningene !!!

Og nå er den vanskeligste delen å finne Kp og Kd, jeg måtte bruke mer enn 1 time på å stille inn roboten min. I stedet for å sette tilfeldige verdier fant jeg en enklere metode for å bestemme dette.

  1. Start med kp og Kd lik 0, og start med Kp, prøv først å sette Kp til 1 og observer roboten, målet vårt er å følge linjen selv om den er vinglete, hvis roboten overskrider og mister linjen reduserer kp -verdien. Hvis roboten ikke kan navigere en sving og være treg, øke Kp -verdien.
  2. Når roboten ser ut til å følge linjen noe, justerer du Kd -verdien (Kd -verdien> Kp -verdien) fra 1 og øker verdien til du ser en jevn kjøring med mindre vingling.
  3. Når roboten begynner å følge linjen, øker du farten og ser om den er i stand til å beholde og følge linjen.

Husk at hastigheten har en direkte innvirkning på PID -tuning, og noen ganger må du kanskje justere på nytt for å matche hastigheten til roboten din.

Nå kan vi begynne å bygge roboten vår.

Trinn 2: Bygget

Bygget
Bygget
Bygget
Bygget
Bygget
Bygget

Arduino atmega 2560 med USB -kabel - dette er den viktigste mikrokontrolleren som brukes.

Chassis- for robotchassiset har jeg brukt 2 sirkulære akrylplater som brukes til et annet prosjekt som er perfekt for dette. Ved hjelp av muttere og skruer har jeg bygget et 2-etasjers chassis, slik at jeg kan feste andre moduler til den øvre platen. Eller du kan bruke ferdige chassis tilgjengelig.

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

Mikrometallgirmotorer- roboten trengte raskt roterende motorer for å klare PID-rutinen, for det har jeg brukt motorer med en nominell effekt på 6V 400rpm og passende grippy-hjul.

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

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

QTR 8Rc sensor array - dette kan brukes til linjesporing, som nevnt tidligere tror jeg at du nå har en klar forståelse av hvordan du bruker sensor arrayet med PID. Koden er veldig enkel og ved hjelp av eksisterende arduino biblioteker vil du kunne å bygge en rask linjefølge.

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

TB6612FNG Motordriver-Jeg ønsket å bruke en motordriver som kan håndtere svinger og endre retninger på et blunk, som effektivt kan bremse motorene når PWM-signalet gikk lavt.

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

Lipo-batteri- 11.1V lipo-batteri brukes til å gi roboten strøm. Selv om jeg har brukt et 11.1 V lipo-batteri, er denne kapasiteten mer enn det som trengs for arduinoen og motorene. Hvis du finner et lett veid 7,4V lipo-batteri eller 6V Ni-MH batteripakke vil det være perfekt. på grunn av denne grunn må jeg bruke en buck-omformer for å konvertere spenningen til 6V.

11.1V-

7.4 V-

Buck converter-modul-

I tillegg trenger du ledninger, muttere og bolter, skrutrekkere og elektriske bånd og glidelåser for å sikre at alt er på plass.

Trinn 3: Montering

Montering
Montering
Montering
Montering
Montering
Montering
Montering
Montering

fest motorene og et lite hjul til en plate ved hjelp av muttere og skruer og monter deretter QTR -sensoren, motordriveren, arduino -kortet og til slutt batteriet på chassiset.

Her er et perfekt diagram jeg fant på internett, som forteller deg hvordan tilkoblingene skal gjøres.

Trinn 4: Design ditt linjespor

Design ditt linjespor
Design ditt linjespor

Nå ser det ut til at prosjektet ditt er nesten over. Som for siste etappe må du ha en liten arena for å teste roboten din. Jeg har brukt en tilfeldig linje med en bredde på 3 cm på en hvit linje på en svart bakgrunn. Sørg for at du limer alt godt inn. Og for øyeblikket unngår du 90 degees vinkelkryss og kryss, fordi det er et komplisert tilfelle når det gjelder koding.

Trinn 5: Programmer koden din

1. Last ned og installer Arduino

Desktop IDE

· Windows -

· Mac OS X -

· Linux -

2. Last ned og lim inn QTR 8 RC sensor array -filen i Arduino biblioteker -mappen.

·

· Lim inn filer på banen - C: / Arduino / libraries

3. Last ned og åpneLINEFOLLOWING.ino

4. Last opp koden til arduino -kortet via en USB -kabel

Trinn 6: FERDIG

Image
Image

nå har du en linje som følger roboten laget av deg selv.

Håper denne opplæringen var nyttig. Ikke nøl med å kontakte meg via [email protected] hvis du har problemer.

ses snart med et nytt prosjekt.

Kos deg med å bygge !!

Anbefalt: