John Lim

micromouse er en robot, der bruger en labyrintløsningsalgoritme til autonomt at løse et labyrintproblem. I dette indlæg, Jeg vil dele, hvordan mit team og jeg formåede at gøre det med den meget nødvendige vejledning fra nogle meget hjælpsomme mennesker.

i løbet af mit efterårssemester på UC Berkeley tog jeg en elevledet klasse for at skabe en robot, der autonomt løser et labyrintproblem. Mine tanker er, at hvis du er i UC Berkeley, interesseret i elektronikprojekter og leder efter et meget guidet program med fantastiske instruktører, dette er et godt sted at være! For mig er dette kursus specielt, fordi det er her, jeg begyndte min rejse ind i robotik, tinkering og fremstilling og er en, som jeg dybt nød. Dette kursus gav mig gode grundlæggende, og jeg lærte mere undervejs, da jeg begyndte at påtage mig nye projekter.

mig og mit team og vores mus
vores mus i labyrinten
mig og min holdkammerat og mine kursusinstruktører

her er et groft sæt instruktioner om, hvordan du starter dit Micromouse-projekt som nybegynder:

  1. Reservedelsliste
  2. samling af dele
    1. opsætning af Teensy Micro Controller & Arduino IDE
    2. introduktion af Teensy pinOut
    3. brug af sensorer
    4. spændingsregulering
    5. h Bromotor controller til at styre motoren
    6. ved hjælp af Hall Effect Rotorary encoder
    7. sætte det hele sammen
  3. kodning
    1. Sådan styrer du dit udstyr med kode
    2. Sensing
    3. pid kontrol
    4. labyrint løsningsalgoritme
    5. finjustering
  4. Sådan fejlfindes

Reservedelsliste

  • mekaniske dele
    • Chassis
    • hjul
    • masser af klæbebånd, medmindre du har til hensigt at 3D-udskrive specialfremstillede dele eller bruge penge på at købe brugerdefinerede monteringer
  • elektriske dele
    • Breadboard, ledninger
    • to 5 Volt mini DC-motorer
    • et lille 7 til 9 volt batteri
    • 7805 spændingsregulator
    • Hall sensor rotorary encoder
    • H-bro
    • Teensy (eller enhver lille Micro Controller. Arduino fungerer også!)
    • to afstandssensorer (jeg brugte en infrarød sensor)

sætte udstyret sammen

2.1 opsætning af Teensy Micro Controller& Arduino IDE

Teensy er en mikro controller, der fungerer som en Arduino. En stor fordel er dens størrelse. Som navnet antyder, er Teenst lille og kompakt, hvilket er fantastisk!

vi starter med at placere Teensy oven på nogle overskriftstifter og derefter lodde overskriftstifterne på Teensy og derefter montere den fast på vores brødbræt.

Placer overskriftstifterne på enden af brødbrættet
Placer Teensy på stifterne
lodde header stifter på Teensy
Opret forbindelse til din computer via et MicroUSB-kabel

hvis du ikke allerede har gjort det, skal du installere Arduino IDE på din computer. https://www.arduino.cc/en/Main/Software

meget vigtigt: hvis du bruger Teensy 3.1, skal du sørge for at installere den version af Arduino, der er kompatibel med Teensy. Her er linket til installation af Teensyduino, så din Teensy kan arbejde med Arduino IDE: https://www.pjrc.com/teensy/td_download.html

2.2 kredsløbet

2.21) batteri strømforsyning: strømforsyningen skal være 7.2 V og derover. Ved kredsløbskonvention kan vi kalde dette Vcc2.

2.22) 5V reguleret strømforsyning: elektroniske chipkomponenter har ofte brug for en stabil strømforsyningsspænding for at fungere korrekt. Problemet er, at med enheder som motorer, der kan trække store varierende mængder strøm, får dette forsyningsspændingen til at dyppe. Derfor har vi brug for en spændingsregulator til at levere den stabile 5V til dine andre elektroniske komponenter.

VoltageReg

2.23) Micro controller: dette er hjernen hos enhver robot, der ser ud til at have nogen form for intelligent tænkning. En mikrocontroller kan virke kompliceret i starten, men for at komme i gang er det virkelig ikke så svært. Her er det grundlæggende: simpelt, men meget vigtigt.

 mikrocontrollere

2.23 a) digitale input pins: i stand til at læse og skrive binære signaler. Forskellige mikrocontrollere har forskellige logiske niveauer, men de fleste mikrocontrollere har logisk niveau på enten 3.3 V eller 5V. for eksempel er Arduino en mikrocontroller med et logisk niveau på 5V. når man læser, registrerer en spænding et sted nær 5V så høj, mens en spænding et sted nær 0V registrerer sig så lav.

2.23 B) pulsbreddemodulerede stifter: disse er digitale indgangsstifter med en særlig evne til at udsende et pulsbreddemoduleret signal. Det er et digitalt signal, der er højt i en vis procentdel af tiden og lavt i en anden procentdel af tiden. Dette er kendt som arbejdscyklus. Et signal med en arbejdscyklus på 60% er logisk niveau højt 60% af tiden, mens logisk niveau lavt 40% af tiden. Læs mere om PV her.

2.23 c) analoge stifter: disse stifter er i stand til at læse en analog spænding overalt fra 0 til nævnte mængde volt. I tilfælde af Arduino er dens 0-5v. de kan læse det med varierende grad af opløsning, afhængigt af hvor mange bit Analog til Digital konverter der bruges. En 8 bit analog til digital konverter kan læse en opløsning på 2^8 = 256. For et 5V logisk niveau kan det læse til en præcision på 5V / 256 = 19,5 mV.

2.23 d) digitale afbrydelser: Nogle digitale stifter på mikrocontrollere kan konfigureres som afbrydelsessignaler. En afbrydelse er meget cool. Når en pin er konfigureret som en interrupt pin, registrerer den enten (1) en stigende signalkant (2) en faldende signalkant eller (3) en ændring i logisk niveau. En af disse vil udløse det, vi kalder en interrupt service routine (ISR). ISR er en kort funktion i kode, der udløses, når der registreres en afbrydelse.

2.26) motorer: motorer er enheder, der drejer, når de får en spænding. I dette tilfælde bruger vi den børstede DC-motor. Det er navngivet som sådan, fordi der er en kommutator DC børste inde i den, der hjælper den med at dreje ordentligt, når den får en spænding. Motorer tegner generelt en stor strøm, og alle motorer har en vis spændingseffekt. Når motorerne drejer, producerer de en back-emf. Dette lyder måske kontraintuitivt, men en motor, der drejer med sin maksimale hastighed, trækker faktisk den mindste mængde strøm på grund af den bageste emf. Tværtimod trækker en motor, der er stoppet (dvs.den ønsker at bevæge sig, men kan ikke på grund af eksterne kræfter) mest strøm.

 Motor

2.25) Motor Driver: dette er nødvendigt for at styre din motor hastighed/retning ved hjælp af en mikrocontroller. Dette skyldes, at din mikrocontroller ikke kan levere nok spænding eller strøm til at køre en motor. Derudover, når motorer spinder, kan den genererede back-emf let beskadige din mikrocontroller. En grænseflade er nødvendig mellem de to for at styre din motor hastighed og retning. Den anvendte motorregulator var en SN754410 firdoblet Halvh-Driver. Hvad en motorcontroller gør er, at det tager signalet fra din mikrocontroller (normalt et Pulsbreddemoduleret Signal) og aktiverer derefter en ‘digital kontakt’ fra dit batteri til din motor. Hvad det gør er, at det tænder en digital kontakt fra dit batteri til din motor ekstremt hurtigt. Hvis denne digitale kontakt er tændt 100% af tiden (eller 100% driftscyklus), kører motoren med fuld effekt. Hvis den digitale kontakt kun er tændt 50% af tiden, kører motoren med 50% effekt.

motordriver

2.26) encodere: encodere er smarte enheder, der registrerer bevægelse. Som for eksempel registrerer nogle kodere, hvor mange gange et hjul har spundet, andre er endnu mere præcise for at fortælle dig præcis, hvilken vinkel en robotarm har vendt osv. Til Mikromusen bruger vi kodere, der registrerer, hvor mange gange et hjul har drejet. Der er hall – effektkodere eller optiske kodere. To typer kodere, men dybest set gør det samme. De udløser en digital puls, når et hjul har drejet! Hvordan en hall effekt encoder værker er, at der er en lille permanent magnet inde i noget, der er fastgjort til motorakslen. Når motoren drejer, drejer magneten også. Der er sensorer, der registrerer, når magneten er gået. Når den gør det, sender den en puls, der kan læses af en mikrocontroller. Vi sender normalt dette signal til en pin konfigureret som en digital interrupt pin.

Encoder

2.27) infrarøde afstandssensorer: registrerer afstand ved hjælp af infrarød. Hvad det gør er, at det skyder et infrarødt signal ud og venter på, at signalet springer tilbage for at bestemme, hvor langt objektet er væk fra det. Du kan eksperimentere, men hvis du afbøjer signalet fra en skrå overflade, får du muligvis ikke en aflæsning fra din IR-sensor. Dette gør det ikke så ideelt. Denne IR-sensor har også et begrænset interval, som den kan registrere afstande. Rød ledning er til 5V strøm, sort ledning til GND, gul ledning til signal. For denne særlige IR-sensor, afhængigt af hvor langt IR-sensoren registrerer dit objekt, giver den en anden analog spænding. Hvad du kan gøre er at læse den analoge spænding ved hjælp af en mikrocontroller. Læs databladet her for at vide mere information om IR-sensoren.

IRsensor

2.3 kredsløbsdiagrammer & ledninger

her er et groft kredsløbsdiagram. Bemærk jeg angav ikke nøjagtigt, hvilke stifter der skal tilsluttes ledningerne til. Dette skyldes, at pin-numrene varierer afhængigt af hvilken mikrocontroller du bruger, men her giver jeg de overordnede principper:

wiringdiagram

signaler fra koderen skal forbindes til en Digital Afbrydelsesstift. På den måde, når et signal sendes, kan mikrocontrolleren vide, at hjulet har drejet 1 Runde.

signaler fra den infrarøde Sensor skal tilsluttes en Analog Indgangsstift.

signaler, der føres ind i motorstyringen, skal komme ud fra en PM-stift.

*Indsæt kredsløbsdiagram

3.0 kode & kontrol:

Jeg vil ikke sende kode, men her er nogle generelle begreber:

3.1 Hvordan får musen til at bevæge sig lige eller dreje:

denne mus styres differentielt. Der er to hjul, med to motorer på hvert hjul. Hvis begge hjul drejer med samme hastighed, går musen lige. Hvis det venstre hjul går hurtigere, mens det højre hjul sænkes, drejer musen til højre. Dette er kendt som differentiel kontrol.

3.2 Kontroller & fejlkorrektion

men man skal tænke på, hvordan man styrer musen. Hvordan får vi det til at bevæge sig inde i labyrinten uden at gå ned i en mur? Vi tror måske, at vi sender to lige signaler til venstre og højre motorer for at fortælle musen at gå lige. Så musen skal gå lige højre? Forkert! Forskellige årsager kan få motorerne til ikke at reagere på den måde, vi fortæller det til. Grundlæggende er hver motor bygget næsten det samme, men ikke nøjagtigt det samme. Udstyr er aldrig bygget perfekt, og der er altid nogle endelige fejl.

Hvordan sørger vi for, at musen faktisk bevæger sig i den retning, vi fortæller den til? Vi har brug for det, der kaldes lukket kredsløbskontrol. Det betyder, at vi tilslut dig sensorer til at måle output og derefter føre resultatet tilbage til input for at udføre fejlkorrektion. Mere om det senere. Vi har brug for det, vi kalder en PID (Proportional Integral derivat) controller.

i dette tilfælde vil vi måske få musen til at opretholde en streng afstand fra væggen. Sig, 5 cm væk fra væggen til højre. Vi kalder dette set-point. Enhver afvigelse fra setpunktet er det, vi kalder fejl. Når der opdages en fejl, ønsker vi, at musen skal rette sig selv. Når fejlen er stor, ønsker vi en stor korrigerende handling. Når fejlen er lille, ønsker vi en lille korrigerende handling.

sensorer på siden af musen bestemmer afstanden musen er fra en væg. Sig, at musen er for langt væk fra væggen til højre. Vi ønsker, at venstre hjul skal dreje hurtigere, mens højre hjul drejer langsommere, så musen kan bevæge sig mod højre for at rette fejlen. Hvis musen er meget langt fra 5 cm setpunktet, som 10 cm væk fra væggen, ønsker vi, at venstre hjul skal dreje meget hurtigt, mens højre hjul skal bremse meget. Hvis musen kun er 6 cm væk fra væggen, ønsker vi, at venstre hjul øges i hastighed, og højre hjul reducerer hastigheden, men kun meget lidt.

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.