Projekt 32: Komplexer Sensor für Lego Mindstorms EV3
Autoren: Jan Koppius, Thomas Marton, David Duhme
Betreuer: Prof. Schneider
Aufgabe
Entwickeln Sie einen komplexen Sensor für Lego Mindstorms EV3.
Erwartungen an Ihre Projektlösung
- Darstellung der Theorie
- Realisierung des Aufbaus
- Platinenlayout und Gehäuse kompatibel zum Lego Stecksystem (montierbar)
- Kommunikation über I2C
- Schaltungsentwurf und Simulation mit NI CD
- Programmierung des Microcontrollers (z.B. Attiny)
- Treiber für EV3 Lobby
- Test und Dokumentation
- Live Vorführung während der Abschlusspräsentation
- Kür: Treiber für Matlab und Simulink
Schwierigkeitsgrad
Schwer (****)
Weiterführende Links
- Hacking the Lego EV3: Build Your Own Object Sensor “Eyes”
- Dexter Industries
- mindsensors.com
- Philo's Homepage
Beschreibung
Dieser Wiki-Eintrag soll ein kurzes Tutorial zur Erstellung eines komplexen Sensor für das Lego EV3 System darstellen. Als komplexer Sensor wurde hierfür ein SHARP Infrarotsensor des Typs GP2Y0D21YK0F gewählt.
Vorgehen
Prinzipiell werden 2 Ansätze zur Zielführung verfolgt. Im ersten Ansatz sollen die Daten des Infrarotsensors vom Arduino Uno eingelesen und am EV3-Brick ausgegeben werden. Die Werte des Infrarotsensors lassen sich über das Kommando "analogRead" vom Arduino einlesen. Aufwändiger gestaltet sich hingegen die Kommunikation zwischen Arduino Board und dem EV3-Brick. Diese kommunizieren über eine sogenannte I2C-Schnittstelle.
Aufgrund der üppigen Bauform des Arduino Uno wird im zweiten Ansatz versucht die Bauform zu reduzieren. Hierzu wird das Arduino Board durch ein Atmel ATtiny 84 (8-Bit Mikrocontroller) auf einer selbstgefrästen Platine ersetzt.
Bill of Material
- SHARP Infrarotsensor GP2Y0D21YK0F (1x)
- Lego EV3 Brick (1x)
- Arduino Uno (1x)
- Steckbrett-Set (E-Call EIC-406 inklusive Drahtbrücken) (1x)
- Atmel ATtiny 84 (1x)
- Kondensator 10mikroF (1x)
- Platine (1x)
- Optional: 3D-Druck ABS-Gehäuse (1x)
Software
- Windows XP / Mac OSX or higher
- Arduino IDE
- Lego EV3 Software
I2C-Kommunikation
I2C steht für Inter-Integrated Circuit und beschreibt einen seriellen Datenbus-Typen. Der I2C-Datenbus wurde Anfang der 1980er Jahre von der Philipps Tochtergesellschaft "NXP Semiconductors" entwickelt. Er findet vorwiegend bei der geräteinternen Kommunikation zwischen unterschiedlichen Schaltungsteilen Verwendung. Die Firma Atmel hat die I2C-Technologie adaptiert und verwendet diese unter dem Namen "TWI (Two-Wire-Interface)".
Wie der Name Two-Wire-Interface schon vermuten lässt, kommuniziert der I2C-Bus lediglich über zwei Leitungen. Die erste Leitung ist die Serial Data (SDA) bzw. Datenleitung, welche für den Informationsaustausch zuständig ist. Die zweite Leitung ist die Serial Clock (SCL) bzw. Clock-Leitung. Diese initialisiert oder stoppt den Informationsaustausch.
Der I2C-Bus basiert auf dem Master-Slave-Prinzip. Somit ist bei jeder Kommunikation genau ein Schaltungsteil als Master deklariert. Dieser initialisiert und beendet die Kommunikation.
Funktionsweise: Master sendet Daten an Slave
1. Master adressiert Slave
2. Master-Transmitter sendet Daten an Slave-Receiver
3. Master beendet den Transfer
Sensorkennline
Da es hinsichtlich der Herstellerkennlinie zu starken Abweichungen kommen kann, werden zunächst mindestens zwei eigene Kennlinien anhand von Messungen ermittelt. Der arithmetische Mittelwert beider Distanzmessungen mit dem Infrarotsensor stellt näherungsweise die reelle Kennlinie dar. Stimmt diese Kennlinie weitestgehend mit der Herstellerkennlinie überein, wird im weiteren Verlauf mit der Herstellerkennlinie weitergearbeitet.
In unserem Fall stimmen die Messwerte relativ gut mit denen der Hestellerkennline überein, sodass im weigern Verlauf mit den Daten der Herstellerkennlinie gearbeitet wird.
EV3 Programm
Laden Sie die EV3-Software (falls noch nicht vorhanden) von der Lego-Homepage hier herunter und installieren Sie diese.
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 14/15)