Projekt 32c: Komplexer Sensor für Lego Mindstorms EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Lego Advance Sensor
Lego Advance Sensor

Autoren: Lieshek, Groenhagen
Betreuer: Prof. Schneider


→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)


Aufgabe

Nutzen Sie einen Infrarotsensor GP2Y0D21YK0F von Sharp zur Entfernungsmessung für Lego Mindstorms EV3.

Erwartungen an die Projektlösung

  • Darstellung der Theorie
  • Beschaffung der Bauteile
  • Realisierung des Aufbaus
  • Kommunikation über I2C oder UART
  • Schaltungsentwurf und Simulation mit NI CD
  • Programmierung des Microcontrollers (z.B. ATTiny)
  • Programmieren Sie den Sensortreiber für Lobby, Matlab und Simulink
  • Fahren Sie mit diesem neuen Sensor parallel zu einer Wand (Praktikumsversuch 4)
  • Test und wiss. Dokumentation
  • Live Vorführung: Fahren Sie mit diesem neuen Sensor geregelt parallel zu einer Wand.


Hinweis: Grenzen Sie sich inhaltlich von den Projekten der Vorjahre ab.

Einleitung

Im Rahmen des Moduls GET-Fachpraktikums ist uns das Projekt „Komplexer Sensor für Lego Mindstorms EV3" zugeteilt worden. Da uns Der Lego EV3 schon aus vorherigen Praktika bekannt war, fiel uns der Umgang mit eben diesen nicht schwer.

Im weiteren Verlauf des Artikels gehen wir auf unsere Vorgehensweise ein und erklären des weiteren noch die technischen Komponenten.

Projekt

Einleitung: Planung des Projektes
Anforderungsanalyse

Projektablaufplan

Projektablaufplan


Material

In der unten stehenden Tabelle sind alle Materialien aufgezählt, die wir verwendet haben.

Anzahl Bezeichnung Preis Quelle
1 Distanz-Sensoren digital, GP2K 12,50 € Reichelt
1 Atmel AVR-RISC-Controller, Attiny 84 3,50 € Reichelt
2 Widerstand 2,2 KΩ 0 € Privat Vorhanden
1 Kondensator 10 µF 0 € Privat Vorhanden
20 Steckverbinder 0 € Privat Vorhanden
1 Breadboard 0 € Privat Vorhanden



Projektdurchführung


Softwarearchitektur


Damit wir unser Vorgehen weiter planen können ist ein Programmablaufplan Nötig:

( Hierbei ist zu beachten, dass dieser Programmablauf sich über die Programme Adruino IDE 1.6.4 und der Lego EV3 Software erstreckt )

1. Der Infrarot Sensor misst den aktuellen Abstand zur Wand.

2. Der infrarot Sensor sendet eine Spannung an den Mikrocontroller.

3. Der Mikrocontroller rechnet die Analoge Spannung mittels einer Gleichung in einen Abstand in cm um.

4. Der Master ( Lego EV3 ) stellt eine Anfrage an den Mikrocontroller.

5. Der Mikrocontroller sendet den aktuellen Abstand VIA I2C an den Master.

6. Der Master verarbeitet diese Information und gibt gegebenenfalls einen Lenkbefehl an den Stellmotor aus.


Zunächst haben wir damit begonnen zu recherchieren welche Adruino Softwareversion nötig ist, um einen Attiny 84 programmieren zu können. Es ist zu beachten, dass die Bibliotheken Tinywires.S und Wire.h Kompatibel sein müssen, da diese für die I2C Kommunikation unabdingbar sind. Die Adruino IDE 1.6.4 ist damit kompatibel.

Um die Bibliotheken einbinden zu können sind folgende schritte nötig:

1. Den Reiter Sketch auswählen.

2. include library auswählen.

3. Add library auswählen.

4. Im Dateibrowser die Zip Datei auswählen, die hinzugefügt werden soll.


Parallel hierzu haben wir in Simulink begonnen einen Regelkreis zu entwerfen. Hierzu haben wir den Standardregelkreis zu Grunde gelegt und die folgenden Faktoren angepasst:

1. Führungsgröße

2. Stellgröße

3. Regelgröße

4. Regelabweichung

5. Störgröße

Zu beachten ist, dass Simulink in der Lage ist, die Modelle die erstellt worden sind direkt auf den NXT (mithilfe der RWTH Aachen Toolbox) zu übertragen.

Für den Lego EV3 Treiber haben wir den von Dexter Industries zur Grundlage genommen. Diese Vorlage haben wir auf Vollständigkeit geprüft und im Anschluss haben wir die I2C Eingang und Ausgang (SDA und SCL) definiert. Zuletzt wurde dieser Treiber mithilfe der Lego EV3 Software übertragen.


Softwareentwurf


Abbildung 1: Programmierung des Mikrocontrollers mithilfe eines Adruino Uno

Das Bild auf der rechten Seite zeigt exemplarisch den Aufbau zum Programmen des Mikrocontrollers. Im ersten Schritt wird hier der Adruino als ISP (AVR ISP) programmiert. Im nächsten Schritt kann dann der Mikrocontroller, mithilfe des Adruino programmiert werden. Hierzu muss in der Adruino IDE hinterlegt werden, dass der Adruino nunmehr als ISP fungiert ( Adruino as ISP ). Um zu überprüfen, inwiefern das programmieren des Mikrocontrollers funktioniert hat, haben wir mithilfe des Mikrocontrollers eine LED blinken lassen.


Nachdem dieser Test erfolgreich gewesen ist, ist der nächste Schritt diesen für die I2C Kommunikation zu programmieren.

Die folgenden Schritte sind auszuführen, damit die Software übertragen werden kann:

1. Den Reiter Datei oben rechts auswählen.

2. Dann Auf Beispiel und im Anschluss das Programm AdruinoISP auswählen.

3. Das Programm ausführen.

4. Den Reiter Werkzeuge anklicken.

5. Dann unter Board den Attiny wählen.

6. Unter Prozessor den Attiny 84 auswählen.

7. Unter Clock die richtige Taktrate in MH auswählen ( bei uns 8MH internal).

8. Unter Programmer AVR as ISP auswählen.

9. Die Software für den Mikrocontroller übertragen.

Im Folgendem wird der Slave Code durch Kommentare erklärt.

Adruino Code für den Mikrocontroller

Als nächstes müssen folgende Schritte durchgeführt werden, damit die Software für den Adruino als Master übertragen werden können.

1. Den Reiter Werkzeuge auswählen.

2. Das Board Adruino Uno auswählen.

3. Unter Programmer AVR ISP auswählen.

4. Das Programm übertragen.

Im nächsten Schritt wird hier der Master Code dargestellt und mithilfe von Kommentaren werden die einzelnen Abschnitte erläutert.

Adruino Code für den Master


Mess- und Regelungstechnik

Ein Proportional-Integral-Differential-Regler, kurz PID, ist der am Häufigsten eingesetzten Regler. Dieser beinhaltet die Vorteile des P, I und D Regler. Der P Anteil ist für die schnelle Reaktion verantwortlich, der I Anteil regelt die Regelabweichung aus und der D Anteil ist dafür zuständig schnell Nachzuregeln. Wegen dieser Vorteile haben wir uns bei der Konzeption der Software von Anfang an auf den PID Regler geeinigt.

Unten stehend ist die Formel für den PID Regler zu sehen.


Systemarchitektur


Abbildung 2: Schaltungaufbau in Multisim
Abbildung 3: Layout der Leiterplatte in Utilboard
























Abbildung 4: gefertigte Leiterplatte








Sensor und Kennlinie


Abbildung 5: Kennlinie des Infrarot Sensors GP2YoA21YKof

Infrarotsensoren senden und empfangen Infrarotstrahlen. Die ausgesendeten Wellenlänge beträgt zwischen 1 µm und 20 µm. Anhand dieser wird eine Spannung ( wie in Abbildung 4) zurückgegeben. Anhand des Spannungsverlaufes lassen sich Rückschlüsse auf den gemessenen Abstand gewinnen. Mithilfe der folgenden Gleichung wird aus einer Spannung ein Abstand ermittelt.


In diesem Fall gibt der Befehl analogRead die analoge Spannung aus und diese wird dann weiter verrechnet. Bauart bedingt lässt sich mit diesem Sensor lediglich ein Abstand von ca 5-80 cm messen, da vor und nach diesem Intervall die Messwerte zu ungenau werden.

Systemtest
Testen des zuvor überlegten Aufbau auf Steckbrett .......

Ergebnis

Das Ergebnis ist eine fertig gelötete Platine ( mit allen Bauteilen ) und einer Halterung für den Sensor. Der Sensor und der Mikrocontroller funktionieren wie erwartet. Gesetz dem Fall der Fehler in unserer I2C Kommunikation wird gefunden, so gilt das Projekt als Abgeschlossen. Denn der nächste Schritt, ist diesen mit dem EV3 zu verbinden und Parallel zur Wand fahren zu lassen.

Zusammenfassung

Zusammenfassend lässt sich nunmehr sagen, dass die Aufgabe zunächst einfacher erschien als sie tatsächlich gewesen ist. Auch wenn wir das Problem mit der Kommunikation nicht lösen konnten, so sind wir dennoch Stolz auf das Ergebnis und vor allem wie wir dahin gelangt sind. Nachdem wir die ersten Meilensteine gemeistert haben, waren wir frohen Mutes weiter zu machen. Alles in Allem empfehlen wir dieses Projekt jedem Interessierten, der gerne Mit Lego Konstruiert und sich mit Software auskennt, gerne weiter.

Lessons Learned

Viele Herausforderungen und Probleme traten erst bei der Durchführung des Projektes auf.

1. Zunächst haben wir eine gewisse Zeit gebraucht um die richtige Software und die richtigen Bibliotheken kompatibel zu machen.

2. Das Größte Problem stellte sich bei der I2C Kommunikation ein, diese hat trotz der Unterstützung der Tutoren nicht funktioniert.

Wir raten daher nachfolgenden Gruppen sich auf die I2C Kommunikation zu fokussieren.

YouTube Video

Weblinks

Literatur

Datenblatt des Infrarotsensors


→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)