den micromouse er en robot som bruker en labyrint løse algoritme for selvstendig å løse en labyrint problem. I dette innlegget vil jeg dele hvordan teamet mitt og jeg klarte å gjøre det med den trengte veiledningen fra noen svært hjelpsomme mennesker.
I Løpet Av Høstsemesteret ved Uc Berkeley tok jeg en studentledet klasse for å lage en robot som autonomt løser et labyrintproblem. Mine tanker er at hvis du er I Uc Berkeley, interessert i elektronikkprosjekter og leter etter et svært guidet program med fantastiske instruktører, er dette et flott sted å være! For meg er dette kurset spesielt fordi det er der jeg begynte min reise inn i robotikk, mekke og lage og er en som jeg dypt likte. Dette kurset ga meg gode grunnleggende, og jeg lærte mer underveis da jeg begynte å ta på seg nye prosjekter.
Her er et grovt sett med instruksjoner om hvordan du starter Ditt Micromouse-Prosjekt som nybegynner:
- Deleliste
- Sette maskinvaredelene sammen
- Sette Opp Teensy Micro Controller & Arduino IDE
- Teensy pinOut Introduksjon
- Ved Hjelp Av Sensorer
- Spenningsregulering
- H Bro motor kontrolleren til å styre motoren
- Ved Hjelp Av Hall Effect Rotorary Encoder
- sette det hele sammen
- Koding
- slik kontrollerer du maskinvaren med kode
- Sensing
- PID-Kontroll
- Labyrint løse Algoritme
- Finjustering
- slik feilsøker du
Deleliste
- Mekaniske Deler
- Chassis
- Hjul
- Masse klebrig tape, Med Mindre DU har tenkt Å 3D-skrive ut skreddersydde deler eller bruke penger til å kjøpe tilpassede fester
- Elektriske Deler
- Brødfjel, ledninger
- To 5 Volt MINI DC Motorer
- et lite 7 til 9 volt batteri
- 7805 Spenningsregulator
- Hall sensor rotorary encoder
- H-Bro
- Teensy (Eller noen små Mikrokontroller. Arduino fungerer også!)
- To Avstandssensorer (jeg brukte en infrarød sensor)
Sette maskinvaren sammen
2.1 Sette Opp Teensy Micro Controller & Arduino IDE
Teensy er En Mikrokontroller som fungerer som En Arduino. En stor fordel er størrelsen. Som navnet antyder, Er Teenst liten og kompakt, noe som er flott!
vi starter med å plassere Teensy på toppen av noen header pins, og deretter lodding header pins på Teensy, og deretter montere den fast på vår brødfjel.
hvis Du ikke allerede har installert Arduino IDE på datamaskinen din. https://www.arduino.cc/en/Main/Software
VELDIG VIKTIG: hvis Du bruker Teensy 3.1, må du sørge for at du installerer versjonen Av Arduino som er kompatibel med Teensy. Her er linken for å installere Teensyduino, slik at Din Teensy kan fungere Med Arduino IDE: https://www.pjrc.com/teensy/td_download.html
2.2 Kretsen
2.21) Batteristrømforsyning: strømforsyningen må være 7.2 V og over. Ved kretskonvensjon kan vi kalle Dette Vcc2.
2.22) 5v Regulert Strømforsyning: Elektroniske chipkomponenter trenger ofte en stabil strømforsyningsspenning for å fungere skikkelig. Problemet er at med enheter som motorer som kan trekke store varierende mengder strøm, forårsaker dette forsyningsspenningen å dyppe. Derfor trenger vi en spenningsregulator for å levere den stabile 5v til dine andre elektroniske komponenter.
2.23) Mikrokontroller: dette er hjernen til enhver robot som synes å ha noen form for intelligent tenkning. En mikrokontroller kan virke komplisert i begynnelsen, men for å komme i gang, er det egentlig ikke så vanskelig. Her er det grunnleggende: Enkelt, Men veldig viktig.
2.23 A) Digitale inngangspinner: Kan lese og skrive binære signaler. Ulike mikrokontrollere har forskjellige logikknivåer, men de fleste mikrokontrollere har logikknivå på enten 3,3 V Eller 5V. For eksempel Er Arduino en mikrokontroller MED et logikknivå PÅ 5V.når du leser, registrerer en spenning et sted nær 5V så HØYT, mens en spenning et sted nær 0V registrerer SÅ LAVT.
2.23 b) Pulse Width Modulated (PWM) pins: Disse er digitale inngangspinner med en spesiell evne til å sende ut et pulsbreddemodulert signal. Det er et digitalt signal som er høyt for en viss prosentandel av tiden og lav for en annen prosentandel av tiden. Dette er kjent som driftssyklusen. ET pwm-signal med en 60% driftssyklus er logisk NIVÅ HØYT 60% av tiden, mens logisk nivå LAVT 40% av tiden. Lær mer om PWM her.
2.23 C) Analoge Pinner: Disse pinnene kan lese en analog spenning hvor som helst fra 0 til nevnte mengde volt. I Tilfelle Av Arduino, dens 0-5V. de kan lese den med varierende grad av oppløsning, avhengig av hvor mange bit Analog Til Digital Omformer brukes. En 8 bit analog til digital omformer kan lese en oppløsning på 2^8 = 256. FOR ET 5v logisk nivå kan det lese til en presisjon PÅ 5V / 256 = 19,5 mV.
2,23 d) Digitale Avbrudd: Noen digitale pinner på mikrokontrollere kan konfigureres som avbruddssignaler. En avbrudd er veldig kul. Når en pin er konfigurert som en avbruddstift, oppdager den enten (1) en stigende signalkant (2) en fallende signalkant eller (3) en endring i logisk nivå. En av disse vil utløse det VI kaller en interrupt service routine (ISR). ISR ER en kort funksjon i kode som utløses når et avbrudd oppdages.
2,26) Motorer: Motorer er enheter som slår når gitt en spenning. I dette tilfellet bruker vi børstet DC-motor. Det er oppkalt som sådan fordi det er en kommutator DC børste inne i det som hjelper det å slå riktig når gitt en spenning. Motorer generelt trekke en stor strøm og alle motorer har en viss spenning effekt. Når motorer slår, produserer de en back-emf. Dette kan høres bakvendt, men en motor som er å snu på sin maksimale hastighet faktisk trekker minst strøm på grunn av baksiden emf. Tvert imot, en motor som er stoppet (dvs.den vil bevege seg, men kan ikke på grunn av eksterne krefter) trekker mest strøm.
2.25) Motordriver: Dette er nødvendig for å kontrollere motorens hastighet / retning ved hjelp av en mikrokontroller. Dette skyldes at mikrokontrolleren ikke kan levere nok spenning eller strøm til å kjøre en motor. I tillegg, når motorer spinner, kan back-emf generert lett skade mikrokontrolleren. Et grensesnitt er nødvendig mellom de to for å kontrollere motorens hastighet og retning. Motorstyringen som ble brukt var EN SN754410 Firedoble Halv – H-Driver. Hva en motorkontroller gjør er at den tar signalet som kommer fra mikrokontrolleren (vanligvis Et Pulsbreddemodulert Signal), og aktiverer deretter en digital bryter fra batteriet til motoren din. Hva den gjør er at det slår på en digital bryter fra batteriet til motoren ekstremt raskt. Hvis denne digitale bryteren er på 100% av tiden (eller 100% driftssyklus), kjører motoren med full effekt. Hvis den digitale bryteren bare er på 50% av tiden, kjører motoren på 50% strøm.
2.26) Kodere: Kodere er smarte enheter som oppdager bevegelse. Som for eksempel oppdager noen kodere hvor mange ganger et hjul har spunnet, andre er enda mer nøyaktige for å fortelle deg nøyaktig hvilken vinkel en robotarm har vendt osv. For Micromouse bruker vi kodere som oppdager hvor mange ganger et hjul har vendt. Det er hall effekt kodere, eller optiske kodere. To typer kodere, men i utgangspunktet gjør det samme. De utløser en digital puls når et hjul har slått! Hvordan en hall effekt encoder fungerer er at det er en liten permanent magnet inne i noe som er festet til motorakselen. Når motoren svinger, svinger magneten også. Det er sensorer som oppdager når magneten har passert. Når den gjør det, sender den ut en puls som kan leses av en mikrokontroller. Vi sender vanligvis signalet til en pin konfigurert som en digital avbruddspinne.
2.27) Infrarøde avstandssensorer: Sanser avstand ved Hjelp Av Infrarød. Hva det gjør er at det skyter ut et infrarødt signal og venter på at signalet skal sprette tilbake for å bestemme hvor langt objektet er borte fra det. Du kan eksperimentere, men hvis du avbøyer signalet fra en skrå overflate, kan DU ikke få en avlesning AV IR-sensoren. Dette gjør det ikke så ideelt. DENNE IR-sensoren har også et begrenset område som det kan oppdage avstander. Rød ledning er FOR 5V strøm, Svart ledning FOR GND, gul ledning for signal. FOR DENNE spesielle IR-sensoren, avhengig av hvor langt IR-sensoren registrerer objektet ditt, gir den ut en annen analog spenning. Det du kan gjøre er å lese den analoge spenningen ved hjelp av en mikrokontroller. Les databladet her for å få mer informasjon om IR-sensoren.
2.3 Kretsdiagrammer & Ledninger
Her er et grovt kretsdiagram. Merk jeg angav ikke nøyaktig hvilke pinner som skal kobles ledningene til. Dette skyldes at pin-tallene varierer avhengig av hvilken mikrokontroller du bruker, men her gir jeg de overordnede prinsippene:
Signaler fra koderen skal kobles Til En Digital Avbruddspinne. På den måten, når et signal sendes, kan mikrokontrolleren vite at hjulet har vendt 1 runde.
Signaler fra Den Infrarøde Sensoren skal kobles til En Analog Inngangspinne.
Signaler som blir matet inn i motorstyringen, skal komme ut fra EN PWM-Pinne.
*Sett inn kretsdiagram
3.0 Kode& Kontroller:
jeg vil ikke legge inn kode, men her er noen generelle begreper:
3.1 hvordan får musen til å bevege seg rett eller sving:
denne musen styres differensielt. Det er to hjul, med to motorer på hvert hjul. Hvis begge hjulene svinger i samme hastighet, går musen rett. Hvis det venstre hjulet øker mens det høyre hjulet senker, svinger musen til høyre. Dette kalles differensialkontroll.
3.2 Kontroller & feilkorreksjon
men man må tenke på hvordan man styrer musen. Hvordan får vi det til å bevege seg inne i labyrinten uten å krasje inn i en vegg? Vi tror kanskje vi sender to like signaler til venstre og høyre motorer for å fortelle musen å gå rett. Så musen skal gå rett rett? Feil! Ulike årsaker kan føre til at motorene ikke reagerer på den måten vi forteller det til. I utgangspunktet er hver motor bygget nesten det samme, men ikke akkurat det samme. Maskinvare er aldri bygget perfekt, og det er alltid noen endelig feil.
Hvordan sørger vi for at musen faktisk beveger seg i den retningen vi forteller den til? Vi trenger det som kalles lukket sløyfekontroll. Det betyr at vi kobler opp sensorer for å måle utgangen og deretter mate resultatet tilbake i inngangen for å utføre feilkorreksjon. Mer om det senere. Vi trenger det vi kaller En Pid (Proporsjonal Integralderivat) kontroller.
i dette tilfellet vil vi kanskje få musen til å opprettholde en streng avstand fra veggen. Si, 5 cm fra veggen til høyre. Vi kaller dette set-punktet. Enhver avvik fra setpunktet er det vi kaller feil. Når det oppdages en feil, vil vi at musen skal korrigere seg selv. Nar feilen er stor, onsker vi en stor korrigerende handling. Når feilen er liten, ønsker vi en liten korrigerende handling.
Sensorer på siden av musen bestemmer avstanden musen er fra en vegg. Si at musen er for langt unna veggen til høyre. Vi vil at venstre hjul skal svinge raskere, mens høyre hjul blir langsommere slik at musen kan bevege seg mot høyre for å rette feilen. Hvis musen er veldig langt fra 5cm settpunktet, som 10cm fra veggen, vil vi at venstre hjul skal svinge veldig fort, mens høyre hjul skal bremse med mye. Hvis musen bare er 6 cm unna veggen, vil vi at venstre hjul skal øke i fart, og høyre hjul for å redusere hastigheten, men bare veldig lite.