Die Micromouse ist ein Roboter, der einen Labyrinthlösungsalgorithmus verwendet, um ein Labyrinthproblem autonom zu lösen. In diesem Beitrag werde ich erzählen, wie mein Team und ich es mit der dringend benötigten Anleitung einiger sehr hilfreicher Leute geschafft haben.
Während meines Herbstsemesters an der UC Berkeley nahm ich an einer von Studenten geleiteten Klasse teil, um einen Roboter zu entwickeln, der ein Labyrinthproblem autonom löst. Meine Gedanken sind, dass, wenn Sie in UC Berkeley sind, Interesse an Elektronikprojekten und auf der Suche nach einem hoch geführten Programm mit tollen Lehrern, Dies ist ein großartiger Ort zu sein! Für mich ist dieser Kurs etwas Besonderes, weil es ist, wo ich meine Reise in die Robotik begann, Basteln und machen und ist eine, die ich sehr genossen. Dieser Kurs gab mir großartige Grundlagen, und ich lernte mehr auf dem Weg, als ich anfing, neue Projekte zu übernehmen.
Hier finden Sie eine grobe Anleitung, wie Sie Ihr Micromouse-Projekt als Anfänger beginnen können:
- Teile Liste
- Putting die hardware teile zusammen
- Einstellung bis die Winzig Micro Controller & Arduino IDE
- Winzig pinOut Einführung
- Mit Sensoren
- Spannung Regulierung
- H Brücke Motor Controller zu steuern Sie den Motor
- Mit dem Hall-Effekt-Drehgeber
- Alles zusammenfügen
- Codierung
- So steuern Sie Ihre Hardware mit Code
- Sensing
- PID-Regelung
- Labyrinthlösungsalgorithmus
- Feinabstimmung
- Fehlerbehebung
Teileliste
- Mechanische Teile
- Fahrgestell
- Räder
- Viel Klebeband, es sei denn, Sie möchten maßgeschneiderte Teile in 3D drucken oder Geld ausgeben, um benutzerdefinierte Halterungen zu kaufen
- Elektrische Teile
- Breadboard, drähte
- Zwei 5 Volt mini DC Motoren
- EINE kleine 7 zu 9 volt batterie
- 7805 spannung Regler
- Halle sensor rotorary encoder
- H-Brücke
- Winzig (Oder jede kleine micro prüfer. Arduino funktioniert auch!)
- Zwei Abstandssensoren (ich habe einen Infrarotsensor verwendet)
Zusammenbau der Hardware
2.1 Einrichten des Teensy Micro Controllers & Arduino IDE
Teensy ist ein Mikrocontroller, der wie ein Arduino funktioniert. Ein großer Vorteil ist seine Größe. Wie der Name schon sagt, ist der Teenst klein und kompakt, was großartig ist!
Wir beginnen damit, den Teensy auf einige Header-Pins zu legen und dann die Header-Pins auf den Teensy zu löten und ihn dann fest auf unser Breadboard zu montieren.
Wenn Sie dies noch nicht getan haben, installieren Sie Arduino IDE auf Ihrem Computer. https://www.arduino.cc/en/Main/Software
SEHR WICHTIG: Wenn Sie Teensy 3.1 verwenden, stellen Sie sicher, dass Sie die Version von Arduino installieren, die mit dem Teensy kompatibel ist. Hier ist der Link zur Installation von Teensyduino, damit Ihr Teensy mit der Arduino IDE arbeiten kann: https://www.pjrc.com/teensy/td_download.html
2.2 Die Schaltung
2,21) Batterie Power Versorgung: netzteil muss 7,2 V und oben. Nach der Schaltungskonvention können wir dies Vcc2 nennen.
2.22) 5V Geregelte netzteil: Elektronische chip komponenten oft benötigen eine stabile netzteil spannung richtig zu funktionieren. Das Problem ist, dass bei Geräten wie Motoren, die große unterschiedliche Strommengen aufnehmen können, die Versorgungsspannung absinkt. Aus diesem Grund benötigen wir einen Spannungsregler, um Ihre anderen elektronischen Komponenten mit stabilen 5 V zu versorgen.
2.23) Mikrocontroller: Dies ist das Gehirn eines jeden Roboters, der einen Anschein von intelligentem Denken zu haben scheint. Ein Mikrocontroller mag am Anfang kompliziert erscheinen, aber um loszulegen, ist es wirklich nicht so schwer. Hier sind die Grundlagen: Einfach, aber sehr wichtig.
2.23 a) Digitale Eingang pins: In der lage zu lesen und schreiben binäre signale. Verschiedene Mikrocontroller haben unterschiedliche Logikpegel, aber die meisten Mikrocontroller haben Logikpegel von entweder 3,3 V oder 5V. Zum Beispiel ist der Arduino ein Mikrocontroller mit einem Logikpegel von 5V. Beim Lesen registriert sich eine Spannung irgendwo in der Nähe von 5V als HOCH, während eine Spannung irgendwo in der Nähe von 0V als NIEDRIG registriert wird.
2.23b) Pulsweitenmodulierte (PWM) Pins: Dies sind digitale Eingangspins mit einer besonderen Fähigkeit, ein pulsweitenmoduliertes Signal auszugeben. Es ist ein digitales Signal, das für einen bestimmten Prozentsatz der Zeit hoch und für einen anderen Prozentsatz der Zeit niedrig ist. Dies wird als Duty Cycle bezeichnet. Ein PWM-Signal mit einem Tastverhältnis von 60% ist Logikpegel HOCH 60% der Zeit, während Logikpegel NIEDRIG 40% der Zeit. Erfahren Sie hier mehr über PWM.
2,23 c) Analog Pins: Diese pins sind in der lage zu lesen eine analog spannung überall von 0 zu die menge von volt. Im Fall des Arduino, seine 0 – 5V. Sie können es mit unterschiedlichem Grad der Auflösung lesen, je nachdem, wie viele Bit Analog-Digital-Wandler verwendet wird. Ein 8-Bit-Analog-Digital-Wandler kann eine Auflösung von 2 ^ 8 = 256 lesen. Bei einem Logikpegel von 5 V kann er mit einer Genauigkeit von 5 V / 256 = 19,5 mV lesen.
2.23d) Digitale Interrupts: Einige digitale Pins auf Mikrocontrollern können als Interrupt-Signale konfiguriert werden. Ein Interrupt ist sehr cool. Wenn ein Pin als Interrupt-Pin konfiguriert ist, erkennt er entweder (1) eine steigende Signalflanke (2) Eine fallende Signalflanke oder (3) Eine Änderung des Logikpegels. Beides löst eine sogenannte Interrupt Service Routine (ISR) aus. Die ISR ist eine kurze Funktion im Code, die ausgelöst wird, wenn ein Interrupt erkannt wird.
2.26) Motoren: Motoren sind Geräte, die sich bei gegebener Spannung drehen. In diesem Fall verwenden wir den gebürsteten Gleichstrommotor. Es wird als solches genannt, weil sich darin eine Kommutator-Gleichstrombürste befindet, die ihm hilft, sich bei gegebener Spannung richtig zu drehen. Motoren ziehen im Allgemeinen einen großen Strom und alle Motoren haben eine bestimmte Spannungsleistung. Wenn sich Motoren drehen, erzeugen sie eine Gegen-EMK. Dies mag kontraintuitiv klingen, aber ein Motor, der sich mit seiner maximalen Geschwindigkeit dreht, zieht aufgrund der Gegen-EMK tatsächlich den geringsten Strom. Im Gegenteil, ein Motor, der ins Stocken geraten ist (dh sich bewegen will, aber aufgrund äußerer Kräfte nicht kann), zieht den größten Strom.
2.25) Motortreiber: Dies wird benötigt, um die Geschwindigkeit / Richtung Ihres Motors mit einem Mikrocontroller zu steuern. Dies liegt daran, dass Ihr Mikrocontroller nicht genügend Spannung oder Strom liefern kann, um einen Motor anzutreiben. Zusätzlich, wenn motoren spin, die zurück-emf erzeugt könnte leicht schaden ihre mikrocontroller. Eine Schnittstelle wird zwischen den beiden benötigt, um die Geschwindigkeit und Richtung Ihres Motors zu steuern. Als Motorsteuerung wurde ein SN754410 Quadruple Half-H-Treiber verwendet. Was ein Motorcontroller tut, ist, dass er das Signal von Ihrem Mikrocontroller (normalerweise ein pulsweitenmoduliertes Signal) nimmt und dann einen ‚digitalen Schalter‘ von Ihrer Batterie zu Ihrem Motor aktiviert. Was es tut, ist, dass es extrem schnell einen digitalen Schalter von Ihrer Batterie zu Ihrem Motor einschaltet. Wenn dieser digitale Schalter 100% der Zeit (oder 100% Tastverhältnis) eingeschaltet ist, läuft der Motor mit voller Leistung. Wenn der Digitalschalter nur 50% der Zeit eingeschaltet ist, läuft der Motor mit 50% Leistung.
2.26) Encoder: Encoder sind clevere Geräte, die Bewegungen erkennen. Wie zum Beispiel erkennen einige Encoder, wie oft sich ein Rad gedreht hat, andere sind noch genauer, um Ihnen genau zu sagen, welchen Winkel ein Roboterarm gedreht hat usw. Für die Micromouse verwenden wir Encoder, die erkennen, wie oft sich ein Rad gedreht hat. Es gibt Hall-Effekt-Encoder oder optische Encoder. Zwei Arten von Encodern, aber im Grunde das Gleiche tun. Sie lösen einen digitalen Impuls aus, wenn sich ein Rad gedreht hat! Ein Hall-Effekt-Encoder funktioniert so, dass sich in etwas, das an der Motorwelle befestigt ist, ein kleiner Permanentmagnet befindet. Wenn sich der Motor dreht, dreht sich auch der Magnet. Es gibt Sensoren, die erkennen, wenn der Magnet passiert ist. Wenn dies der Fall ist, sendet es einen Impuls aus, der von einem Mikrocontroller gelesen werden kann. Normalerweise senden wir dieses Signal an einen Pin, der als digitaler Interrupt-Pin konfiguriert ist.
2.27) Infrarot-Abstandssensoren: Erfasst die Entfernung mit Infrarot. Was es tut, ist, dass es ein Infrarotsignal aussendet und darauf wartet, dass dieses Signal zurückprallt, um festzustellen, wie weit das Objekt von ihm entfernt ist. Sie können experimentieren, aber wenn Sie das Signal von einer schrägen Oberfläche ablenken, erhalten Sie möglicherweise keinen Messwert von Ihrem IR-Sensor. Das macht es nicht so ideal. Dieser IR-Sensor hat auch eine begrenzte Reichweite, die Entfernungen erfassen kann. Rot draht ist für 5 V power, Schwarz draht für GND, gelb draht für signal. Für diesen speziellen IR-Sensor gibt er je nachdem, wie weit der IR-Sensor Ihr Objekt erfasst, eine andere analoge Spannung aus. Was Sie tun können, ist, diese analoge Spannung mit einem Mikrocontroller zu lesen. Lesen Sie das Datenblatt hier, um weitere Informationen über den IR-Sensor zu erhalten.
2.3 Schaltpläne & Verdrahtung
Hier ist ein grober Schaltplan. Hinweis Ich habe nicht genau angegeben, an welche Pins die Drähte angeschlossen werden sollen. Dies liegt daran, dass die PIN-Nummern je nach verwendetem Mikrocontroller variieren, aber hier gebe ich die übergeordneten Prinzipien an:
Signale vom Encoder sollten mit einem digitalen Interrupt-Pin verdrahtet werden. Auf diese Weise kann der Mikrocontroller jedes Mal, wenn ein Signal gesendet wird, wissen, dass das Rad 1 Runde gedreht hat.
Die Signale des Infrarotsensors sollten an einen analogen Eingangspin angeschlossen werden.
Signale, die in die Motorsteuerung eingespeist werden, sollten von einem PWM-Pin kommen.
* Schaltplan einfügen
3.0 Code & Steuerung:
Ich werde keinen Code posten, aber hier sind einige allgemeine Konzepte:
3.1 Wie bekomme ich die Maus, um sich gerade zu bewegen oder zu drehen:
Diese Maus wird differentiell gesteuert. Es gibt zwei Räder mit zwei Motoren an jedem Rad. Wenn sich beide Räder mit der gleichen Geschwindigkeit drehen, fährt die Maus geradeaus. Wenn das linke Rad schneller wird, während das rechte Rad langsamer wird, dreht sich die Maus nach rechts. Dies wird als Differentialregelung bezeichnet.
3.2 Steuerelemente & Fehlerkorrektur
Aber man muss darüber nachdenken, wie man die Maus steuert. Wie schaffen wir es, uns im Labyrinth zu bewegen, ohne gegen eine Wand zu stoßen? Wir könnten denken, dass wir zwei gleiche Signale an den linken und rechten Motor senden, um der Maus zu sagen, dass sie geradeaus fahren soll. Also sollte die Maus geradeaus gehen? Falsch! Verschiedene Gründe können dazu führen, dass die Motoren nicht so reagieren, wie wir es ihnen sagen. Grundsätzlich ist jeder Motor fast gleich gebaut, aber nicht genau gleich. Hardware ist nie perfekt gebaut und es gibt immer einen endlichen Fehler.
Wie stellen wir sicher, dass sich die Maus tatsächlich in die von uns angegebene Richtung bewegt? Wir brauchen eine sogenannte Closed Loop Control. Das bedeutet, dass wir Sensoren anschließen, um die Ausgabe zu messen und das Ergebnis dann wieder in die Eingabe einzuspeisen, um eine Fehlerkorrektur durchzuführen. Dazu später mehr. Wir brauchen einen sogenannten PID-Regler (Proportional Integral Derivative).
In diesem Fall möchten wir vielleicht, dass die Maus einen strikten Abstand zur Wand einhält. Sagen wir, 5 cm von der rechten Wand entfernt. Wir nennen das den Set-Point. Jede Abweichung vom Sollwert nennen wir Fehler. Wenn ein Fehler erkannt wird, soll sich die Maus selbst korrigieren. Wenn der Fehler groß ist, wollen wir eine große Korrekturaktion. Wenn der Fehler klein ist, wollen wir eine kleine Korrekturaktion.
Sensoren an der Seite der Maus bestimmen den Abstand der Maus zu einer Wand. Angenommen, die Maus ist zu weit von der rechten Wand entfernt. Wir möchten, dass sich das linke Rad schneller dreht, während sich das rechte Rad langsamer dreht, damit sich die Maus nach rechts bewegen kann, um den Fehler zu korrigieren. Wenn die maus ist sehr weit von der 5 cm set-punkt, wie 10 cm weg von der wand, wir wollen die links rad zu drehen sehr schnell, während die rechts-rad zu verlangsamen durch alot. Wenn die Maus nur 6 cm von der Wand entfernt ist, soll das linke Rad die Geschwindigkeit erhöhen und das rechte Rad die Geschwindigkeit verringern, jedoch nur geringfügig.