Innholdsfortegnelse:

PID -kontrollert ballbalanserende Stewart -plattform: 6 trinn
PID -kontrollert ballbalanserende Stewart -plattform: 6 trinn

Video: PID -kontrollert ballbalanserende Stewart -plattform: 6 trinn

Video: PID -kontrollert ballbalanserende Stewart -plattform: 6 trinn
Video: Уроки Ардуино. ПИД регулятор 2024, Juli
Anonim
Image
Image
Få materialer
Få materialer

Motivasjon og helhetskonsept:

Som fysiker i trening er jeg naturlig tiltrukket av og søker å forstå fysiske systemer. Jeg har blitt opplært til å løse komplekse problemer ved å dele dem inn i de mest grunnleggende og essensielle ingrediensene, og deretter bygge problemet opp igjen derfra. Selv om jeg har lært mekanikk og elektromagnetisme fra de første prinsippene, har jeg ennå ikke brukt dem i noen fysiske applikasjoner. Jeg vil endelig få denne muligheten ved å lage en robot som bruker teori om automatisk kontroll for å autonomt balansere en ball på en flat, fullt kontrollert plattform, helt på egen hånd!

I denne veiledningen; som er ment for den teknisk kyndige hackeren, programmereren eller ingeniøren, vil vi bruke en Arduino Uno som vår mikrokontrollerplattform. Den lukkede tilbakekoblingssløyfen starter først når den registrerer posisjonen til et massivt metallkullager som ligger på en flat berøringsresistiv skjerm, som fører ballen tilbake umiddelbart. Denne posisjonen mates deretter inn i en proporsjonal-integral-derivat (PID) kontroller, som vi har programmert i Arduino Uno. Jeg har gjort denne koden åpen kildekode og knyttet til prosjektet. Kontrolleren har til oppgave å gjenopprette ballen til hvilken som helst bruker valgt posisjon på bordet, selv når den er betydelig forstyrret. Den strukturelle støtteplattformen vi skal bruke er kjent som en "Stewart -plattform", og støttes av seks uavhengige vevstenger drevet av servomotorer som gir opptil seks frihetsgrader; X-, Y- og Z -oversettelser, rull, pitch og yaw (rotasjoner om henholdsvis X-, Y- og Z -aksene). Å bygge og programmere en så meget mobil plattform presenterer sine egne utfordringer, så for dette prosjektet vil vi bare kreve pitch and roll frihetsgrader, og la de andre være valgfrie oppgraderinger av funksjonalitet, hvis brukeren ønsker det. Sammen med plattformen som flytter ballen til en hvilken som helst av et sett med statisk brukerdefinerte posisjoner, vil avanserte programmerere finne det lett å forbedre programmet og legge til litt panache ved å erstatte vår statiske, brukerdefinerte posisjon, med et semi-kontinuerlig spor av en bruker definert bane, for eksempel en figur åtte, sirkulær bane, navnet ditt i kursiv, eller min favoritt en livestream av noens stylus eller finger på sin egen mobile enhet! God hacking!

Trinn 1: Få materialer

Få materialer
Få materialer
Få materialer
Få materialer
Få materialer
Få materialer

Nødvendige materialer:

1. Noen ark med 1/4 "og 1/8" akryl

2. 6 - Servomotorer (Vi brukte HS5485HB Servoer)

3. 6 - Gjengede (justerbare) koblingsstenger

4. 6 - CNC -bearbeidede servoarmer med flere hull for justerbarhet

5. 12 - Heim Joint Rod Ends

6. 6 - stenger (justerbar)

7. 1- 17”USB-sett med fem ledninger motstandsdyktig mot berøringsskjerm (følelse av kulelager)

Trinn 2: Forbered materialer

Forbered materialer
Forbered materialer
Forbered materialer
Forbered materialer
Forbered materialer
Forbered materialer

Den beste måten å få akrylskåret på er å bruke en laserkamera. Tilgang til en kan være vanskelig, så akryl kan også enkelt kuttes med det skjæreverktøyet du er kjent med, riktig opplært og kan fungere trygt. Hvis jeg for eksempel gjorde dette hjemme, ville jeg brukt en håndsag. Den generelle formen på Stewart -plattformen trenger ikke å stemme nøyaktig overens med modellen jeg bygde. Imidlertid vil jeg påpeke noen få forenklede muligheter. For det første er det mye lettere å kartlegge banen og rulle frihetsgrader ved å bruke tre basis, i stedet for standard to. dette gjøres ved å gjøre festet av vevstengene til selve plattformen til en likesidet trekant. Dette lar deg neglisjere alle komplikasjonene ved å finne tonehøyde og rulle frihetsgrader (DOF) fra bunnen av, i stedet bruker vi 3 ikke-lineært uavhengige "grunnlag" som ganske enkelt er kartet over det hjørnet av trekanten som går opp. Dette ville være utfordrende for deg eller jeg å skrive ut koordinater på dette grunnlaget, men gjensidig avhengighet av dette grunnlaget håndteres enkelt av koden. Denne forenklende antagelsen er nøkkelen til å neglisjere alle finesser i geometrien. Se bildet MS Paint grafikk og tavlebildet for detaljer.

Når brikkene er kuttet, må du bore ut alle hullene, det er der forbindelsesstengene og kuleleddene kobles til. Vær forsiktig med å matche hullstørrelsen til riktig maskinvare du bruker. Dette er avgjørende for at de valgte festene dine skal fungere. Hullstørrelsene er basert på hvilken størrelse tapp du trenger for festet ditt. For å gjøre dette, finn en online referanse for den spesifikke tappestørrelsen, tonehøyde og trådtype (fint vs kurs). Jeg anbefaler kurstråder for akryl, men hvis du må bruke fin tråd, bør det ordne seg, siden det vi brukte uansett. Nå er det på tide å gå videre til montering.

Trinn 3: Monter materialer

Monter materialer
Monter materialer
Monter materialer
Monter materialer
Monter materialer
Monter materialer
Monter materialer
Monter materialer

Monter materialene forsiktig til spesifikasjonene. Vær spesielt forsiktig så du ikke fjerner noen skruer. Når dette er gjort, må du enten bytte maskinvare ved å dimensjonere og bore større hull og trykke på dem, eller du må kutte et helt nytt stykke akryl. Vær oppmerksom på at du også skal være forsiktig med den berøringsresistente skjermen. Det er skjørt !!! Det er tross alt et tynt glasslag. Vær oppmerksom på at vi hadde en ulykke selv.

Trinn 4: Programmering

Programmering
Programmering

Programmeringen kan ta litt tid. Det er her programmeringskunnskapene dine virkelig kan lønne seg. Du trenger ikke å kunne skrive koden fra bunnen av, men hvis du finner en godt kommentert og organisert kildekode du kan endre, så gjør det livet så mye lettere. Her er lenken til kildekoden vår: https://github.com/a6guerre/Ball-balanced-on-Stew…, hjelp deg selv! Det er absolutt ikke optimalisert, men fikk jobben gjort! Husk at vi bruker tre separate ikke-ortoganale, ikke-lineært uavhengige grunnlag for kontrollkartet. Vi leser bare alt i x, y og kartlegger til A, B og C. Dette svaret blir deretter avstemt globalt for å justere hvor mye mer eller mindre vi vil at systemet skal svare.

Trinn 5: Testing

Her tester vi frihetsgrader. Legg merke til nå hvordan våre tre grunnlag lønner seg! For eksempel, for å få roll DOF, går vi ganske enkelt ned en enhet til venstre, mens vi går opp en enhet til høyre, og omvendt for den andre retningen. Det er også viktig å ha gjort en tilstrekkelig god jobb med å filtrere støy fra berøringsskjermen. Dette er avgjørende for å ha gode data å mate inn i PID -en din.

Trinn 6: Finjuster og nyt

Testfasen var egentlig bare for å få feilene ut. Her fokuserer vi på finjustering av kontrollsystemet. dette gjøres best med en forhåndsinnstilt algoritme. Min favoritt er å nærme meg det som et kritisk dempingsproblem, Ahem! Jeg er fysiker! Så du slår av dempingstiden! Det vil si det avledede begrepet, som fungerer som et dragbegrep. Nå vil ballen svinge vilt! Målet er imidlertid å få svingningene til å være så nær harmoniske som mulig, ikke vokse eller forfalle, så godt du kan. Når det er gjort, slår du på den avledede termen og justerer til den kommer tilbake til likevekt så raskt som mulig. Dette er når kritisk demping oppnås. Imidlertid, hvis dette ikke fungerer, er det mange andre velprøvde tuningordninger for PID -kontrollerte systemer. Jeg fant dette på wikipedia, under PID -kontrolleren. Tusen takk for at du tok en titt på prosjektet mitt, og ta kontakt med spørsmål. Jeg svarer gjerne på spørsmål du har. Spesiell merknad: Jeg vil påpeke at dette prosjektet fra start til slutt ble utført av Miracle Max Guerrro, og meg selv på knappe fire uker, inkludert å vente i to uker på en ny skjerm som satt fast i tollen, etter vår første blakk. Så unnskyld at det langt fra er perfekt ytelse. God hacking!

Anbefalt: