John Lim

de micromouse is een robot die een doolhof oplossend algoritme gebruikt om autonoom een doolhof probleem op te lossen. In deze post, Ik zal delen hoe mijn team en ik erin geslaagd om het te doen met de broodnodige begeleiding van een aantal zeer behulpzame mensen.

tijdens mijn herfstsemester aan UC Berkeley, nam ik een klas onder leiding van een student om een robot te maken die autonoom een doolhof probleem oplost. Mijn gedachten zijn dat als je in UC Berkeley, geïnteresseerd in elektronica projecten en op zoek naar een zeer begeleid programma met geweldige instructeurs, dit is een geweldige plek om te zijn! Voor mij is deze cursus speciaal omdat het is waar ik begon mijn reis in robotica, knutselen en maken en is er een die ik zeer genoten. Deze cursus gaf me grote fundamenten, en ik leerde meer langs de weg als ik begon te nemen op nieuwe projecten.

Mij en mijn team en onze muis
Onze muis in het doolhof
ik en mijn teamgenoot en mijn instructeurs

Hier is een ruwe set van instructies over hoe te beginnen uw Micromouse Project als een beginner:

  1. onderdelenlijst
  2. hardwareonderdelen samenvoegen
    1. Teensy Microcontroller & Arduino IDE
    2. Teensy pinOut Inleiding
    3. sensoren
    4. spanningsregeling
    5. H Bridge motorcontroller om de motor te besturen
    6. met behulp van de Hall Effect Rotorary Encoder
    7. alles samenvoegen
  3. codering
    1. uw hardware beheren met code
    2. Sensing
    3. PID-besturing
    4. doolhof oplossingsalgoritme
    5. Fine tuning
  4. problemen met

Onderdelen Lijst

  • Mechanische Onderdelen
    • Chassis
    • Wielen
    • Veel plakband, tenzij je van plan om een 3D-print maat gemaakte onderdelen of geld om te kopen van custom mounts
  • Elektrische Onderdelen
    • Breadboard, draden
    • Twee 5 Volt mini DC-Motoren
    • Een kleine 7 tot en met 9 volt batterij
    • 7805 Spanningsregelaar
    • Hall-sensor rotorary encoder
    • H-Brug
    • Teensy (Of een kleine micro-controller. Arduino werkt ook!)
    • twee afstandssensoren (ik gebruikte een infrarood sensor)

de hardware samenvoegen

2.1 De Teensy Micro Controller & Arduino IDE

Teensy is een Micro controller die werkt als een Arduino. Een groot voordeel is de grootte. Zoals de naam al doet vermoeden, is de Teenst klein en compact, wat geweldig is!

we beginnen met het plaatsen van de Teensy op een aantal header pinnen, en dan solderen we de header pinnen op de Teensy, en monteren het stevig op onze breadboard.

Plaats de kop pinnen op het einde van het brood raad
Plaats de Teensy op de pinnen
Soldeer de kop pinnen op de Teensy
Sluit uw computer aan via een MicroUSB Kabel

Als u dat nog niet hebt gedaan, installeert Arduino IDE op uw computer. https://www.arduino.cc/en/Main/Software

zeer belangrijk: als u Teensy 3.1 gebruikt, zorg er dan voor dat u de versie van Arduino installeert die compatibel is met de Teensy. Hier is de link voor het installeren van Teensyduino, zodat uw Teensy kan werken met de Arduino IDE: https://www.pjrc.com/teensy/td_download.html

2.2 het Circuit

2.21) batterijvoeding: de voeding moet 7,2 V en meer bedragen. Door circuit conventie, kunnen we dit Vcc2 noemen.

2.22) 5v geregelde voeding: elektronische chip componenten hebben vaak een stabiele voedingsspanning nodig om goed te functioneren. Probleem is dat met apparaten zoals motoren die grote wisselende hoeveelheden stroom kunnen trekken, dit ervoor zorgt dat de voedingsspanning daalt. Daarom hebben we een spanningsregelaar nodig om die stabiele 5V aan uw andere elektronische componenten te leveren.

VoltageReg

2.23) Microcontroller: dit zijn de hersenen van elke robot die een semblace van intelligent denken lijkt te hebben. Een microcontroller lijkt misschien ingewikkeld in het begin, maar om te beginnen, het is echt niet zo moeilijk. Hier zijn de basisprincipes: eenvoudig, maar zeer belangrijk.

microcontrollers

2.23 A) Digitale Inputspelden: bekwaam om binaire signalen te lezen en te schrijven. Verschillende microcontrollers hebben verschillende logische niveaus, maar de meeste microcontrollers hebben logische niveau van 3.3 V of 5V. bijvoorbeeld, de Arduino is een microcontroller met een logische niveau van 5V. bij het lezen, een spanning ergens in de buurt van 5V registreert als hoog, terwijl een spanning ergens in de buurt van 0V registreert als laag.

2,23 B) pulsbreedte gemoduleerde (PWM) pinnen: dit zijn digitale ingangsspelden met een speciale mogelijkheid om een pulsbreedte gemoduleerd signaal uit te voeren. Het is een digitaal signaal dat hoog is voor een bepaald percentage van de tijd en laag voor een ander percentage van de tijd. Dit staat bekend als de duty cycle. Een PWM-signaal met een inschakelduur van 60% is 60% van de tijd logicaniveau hoog, terwijl het logicaniveau 40% van de tijd laag is. Meer informatie over PWM hier.

2,23 C) analoge pinnen: deze pinnen kunnen een analoge spanning van 0 tot de genoemde hoeveelheid volt aflezen. In het geval van de Arduino, zijn 0 – 5V. ze kunnen het lezen met verschillende graden van resolutie, afhankelijk van hoeveel Bit analoog naar digitaal Converter wordt gebruikt. Een 8 bit analoog naar digitaal converter kan een resolutie van 2^8 = 256 lezen. Voor een 5V logische niveau, kan het lezen tot een precisie van 5V / 256 = 19.5 mV.

2,23 d) Digitale Interrupts: Sommige digitale pinnen op microcontrollers kunnen worden geconfigureerd als interrupt signalen. Een interrupt is erg cool. Wanneer een pin is geconfigureerd als een interrupt pin, detecteert het (1) een stijgende signaalrand (2) een dalende signaalrand of (3) een verandering in het logische niveau. Elk van deze zal leiden tot wat we noemen een interrupt service routine (ISR). De ISR is een korte functie in code die wordt geactiveerd wanneer een interrupt wordt gedetecteerd.

2.26) motoren: motoren zijn apparaten die draaien bij een bepaalde spanning. In dit geval gebruiken we de geborstelde DC-motor. Het is genoemd als zodanig omdat er een commutator DC borstel binnenin het dat het helpt om goed te draaien wanneer gegeven een spanning. Motoren trekken over het algemeen een grote stroom en alle motoren hebben een bepaalde spanning vermogen. Wanneer motoren draaien, produceren ze een back-emf. Dit klinkt misschien contra-intuïtief, maar een motor die draait op zijn maximale snelheid eigenlijk trekt de minste hoeveelheid stroom als gevolg van de back emf. Integendeel, een motor die is vastgelopen (dat wil zeggen dat hij wil bewegen maar niet kan vanwege externe krachten) trekt de meeste hoeveelheid stroom.

Motor

2.25) motorbestuurder: dit is nodig om de snelheid/richting van uw motor te controleren met behulp van een microcontroller. Dit komt omdat uw microcontroller niet genoeg spanning of stroom kan leveren om een motor aan te drijven. Bovendien, wanneer motoren draaien, kan de back-emf gegenereerd gemakkelijk uw microcontroller beschadigen. Er is een interface nodig tussen de twee om de snelheid en richting van uw motor te regelen. De motor controller die werd gebruikt was een SN754410 Quadruple Half-H Driver. Wat een motor controller doet is dat het het signaal van uw micro-controller (meestal een pulsbreedte gemoduleerd signaal), en activeert dan een ‘digitale schakelaar’ van uw batterij naar uw motor. Wat het doet is dat het schakelt een digitale schakelaar van uw batterij naar uw motor zeer snel. Als deze digitale schakelaar 100% van de tijd aanstaat (of 100% inschakelduur), draait de motor op vol vermogen. Als de digitale schakelaar slechts 50% van de tijd aanstaat, draait de motor op 50% vermogen.

motordriver

2.26) Encoders: Encoders zijn slimme apparaten die beweging detecteren. Zoals bijvoorbeeld, sommige encoders detecteren hoe vaak een wiel heeft gesponnen, anderen zijn nog nauwkeuriger om u precies te vertellen welke hoek een robotarm heeft gedraaid etc. Voor de Micromouse gebruiken we encoders die detecteren hoe vaak een wiel is gedraaid. Er zijn hall effect encoders, of optische encoders. Twee soorten encoders, maar in principe doen hetzelfde. Ze activeren een digitale puls wanneer een wiel is gedraaid! Hoe een hall effect encoder werkt is dat er een kleine permanente magneet binnenin iets zit dat aan de motoras is bevestigd. Als de motor draait, draait de magneet ook. Er zijn sensoren die detecteren wanneer de magneet voorbij is. Als dat gebeurt, zendt het een puls uit die door een microcontroller kan worden gelezen. Meestal sturen we dat signaal naar een pin die is geconfigureerd als een digitale interrupt-pin.

Encoder

2.27) Infrarood afstandssensoren: Meet afstand met infrarood. Het schiet een infrarood signaal uit en wacht tot dat signaal weerkaatst om te bepalen hoe ver het object er vandaan is. Je kunt experimenteren, maar als je het signaal van een schuin oppervlak afbuigt, krijg je misschien geen aflezing van je IR-sensor. Dit maakt het niet zo ideaal. Deze IR sensor heeft ook een beperkt bereik waardoor hij afstanden kan detecteren. Rode draad is voor 5V macht, zwarte draad voor GND, gele draad voor signaal. Voor deze specifieke IR-sensor geeft deze, afhankelijk van hoe ver de IR-sensor uw object waarneemt, een andere analoge spanning. Wat je kunt doen is om die analoge spanning af te lezen met behulp van een micro-controller. Lees hier de datasheet voor meer informatie over de IR-sensor.

IRsensor

2.3 schema ‘ s & bedrading

hier is een ruw schema. Merk op dat ik niet precies heb aangegeven op welke pinnen de draden moeten worden aangesloten. Dit komt omdat de pin nummers variëren afhankelijk van welke micro-controller je gebruikt, maar hier geef ik de overkoepelende principes:

wiringdiagram

signalen van de encoder moeten worden aangesloten op een digitale Interrupt Pin. Op die manier kan de microcontroller, wanneer er een signaal wordt verzonden, weten dat het wiel 1 Ronde heeft gedraaid.

signalen van de infraroodsensor moeten worden aangesloten op een analoge Ingangspin.

signalen die in de Motorregelaar worden ingevoerd, moeten uit een PWM-Pin komen.

* schakelschema invoegen

3.0 Code & besturingselementen:

Ik zal geen code posten, maar hier zijn enkele algemene concepten:

3.1 hoe zorg je ervoor dat de muis recht of in een bocht beweegt:

deze muis wordt verschillend bestuurd. Er zijn twee wielen, met twee motoren op elk wiel. Als beide wielen met dezelfde snelheid draaien, gaat de muis recht. Als het linkerwiel versnelt terwijl het rechterwiel vertraagt, draait de muis naar rechts. Dit staat bekend als differentiële controle.

3.2 besturingselementen & foutcorrectie

maar men moet nadenken over hoe de muis te bedienen. Hoe krijgen we het in het doolhof te bewegen zonder tegen een muur te botsen? We zouden kunnen denken dat we twee gelijke signalen naar de linker en rechter Motor sturen om de muis te vertellen rechtdoor te gaan. Dus de muis moet recht naar rechts gaan? Fout! Verschillende redenen kunnen ervoor zorgen dat de motoren niet reageren op de manier waarop we het vertellen. Fundamenteel is elke motor bijna hetzelfde gebouwd, maar niet precies hetzelfde. Hardware is nooit perfect gebouwd en er is altijd een eindige fout.

hoe zorgen we ervoor dat de muis daadwerkelijk beweegt in de richting die we hem vertellen? We hebben wat we closed loop control noemen nodig. Dit betekent dat we sensoren aansluiten om de output te meten en dan het resultaat terug te voeren in de ingang om foutcorrectie uit te voeren. Daarover later meer. We hebben wat we noemen een PID (Proportional Integral Derivate) controller nodig.

in dit geval willen we de muis een strikte afstand van de muur laten houden. Zeg, 5 cm van de muur aan de rechterkant. We noemen dit het set-point. Elke afwijking van het instelpunt is wat we fout noemen. Wanneer een fout wordt gedetecteerd, willen we dat de muis zichzelf corrigeert. Wanneer de fout groot is, willen we een grote correctieactie. Als de fout klein is, willen we een kleine correctieactie.

sensoren aan de zijkant van de muis bepalen de afstand tussen de muis en een wand. Stel dat de muis te ver weg is van de muur rechts. We willen dat het linkerwiel sneller draait, terwijl het rechterwiel langzamer draait zodat de muis naar rechts kan bewegen om de fout te corrigeren. Als de muis heel ver van het instelpunt van 5cm is, zoals 10cm van de muur, willen we dat het linkerwiel heel snel draait, terwijl het rechterwiel veel langzamer gaat. Als de muis slechts 6cm van de muur verwijderd is, willen we dat het linkerwiel in snelheid toeneemt, en het rechterwiel zijn snelheid vermindert, maar slechts zeer licht.

Leave a Reply

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.