Projekt 32: Komplexer Sensor für Lego Mindstorms EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Jan Koppius, Thomas Marton, David Duhme
Betreuer: Prof. Schneider

Lego Advance Sensor
Lego Advance Sensor

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


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.

Datei:Data sharp.pdf
Datenblatt SHARP Infrarotsensor

Datei:IR Messung.pdf

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)