Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Sensormodule und Visuino - Kapitel 7

In diesem Kapitel werden angesprochen

  • HW-123 Modul mit einem MPU-6050 (3-Achsen-Beschleunigungs, 3-Achsen-Drehratensensor(Gyroskop))
  • LSM6DS3TR IMU (3-Achsen-Beschleunigungs, 3-Achsen-Drehratensensor(Gyroskop)) im Arduino UNO WiFi R2

Module sind immer herstellerspezifisch aufgebaut und können sich deshalb - bei gleicher Namensbelegung - voneinander unterscheiden. Vor dem Aufbau einer Schaltung ist das Studium der zugehörigen Datenblätter deshalb unerlässlich.

Das HW-123 Modul

 

Abb. 1 - HW-123 Modul

Das HW-123 Modul enthält den MEMS-Chip MPU-6050 (rot umrandet) sowie elektronische Komponenten zur Datenübertragung (I2C-Schnittstelle u.a.).

Grün markiert sind die auf der Platine aufgedruckten Raumachsen X und Y für den Beschleunigungs- und den Drehratensensor. Bewegungen in der angegebenen Pfeilrichtung werden positiv, entgegen der Pfeilrichtung negativ bewertet (s. Abb. 3).

Der Prozessor MPU-6050 (Auszug aus dem Datenblatt)

 

Ein MEMS (Mikro-Electro-Mechanical-Systems), wie der MPU-6050 (s. Abb. 2), ist eine Kombination von mechanischen und elektro-mechanischen Komponenten auf engstem Raum, die sowohl mechanische als auch elektrische Funktionen vereinen, physikalische Veränderungen in ihrer Umgebung erfassen und in elektrische Signale umwandeln. Die Abmessungen der Komponenten liegen im µm Bereich.

Der MEMS Sensorchip MPU-6050, der in diesem Kapitel vorgestellt wird, ist in einem 4x4 mm Gehäuse untergebracht und enthält einen Beschleunigungs- und einen Gyro-Sensor..

 

 

 

 

 

 

Abb,.2 - MPU-6050

Der 4x4 mm große Chip MPU-6050 der Fa. INVENSENSE.

Einige Leistungsdaten zum Gyro-Sensor (Rotation)

  • Der MPU-6050 besteht aus drei unabhängigen vibrierenden Drehratengyroskopen, die Drehungen um die X-, Y- und Z-Achse erfassen.
  • Wenn die Gyroskope um eine der Sensorachsen rotieren, verursacht der Coriolis-Effekt eine Vibration, die von einem kapazitiven Aufnehmer erfasst wird (s. Abb. 3).
  • Das Signal wird verstärkt, demoduliert und gefiltert, um eine Spannung zu erzeugen, die proportional zur Drehrate ist. Diese Spannung wird mithilfe einzelner On-Chip-16-Bit-Analog-Digital-Converter (ADCs) digitalisiert, um jede Achse abzutasten.
  • Der volle Messbereich der Gyroskopsensoren kann digital auf ±250, ±500, ±1000 oder ±2000 Grad pro Sekunde (dps) programmiert werden.
  • Die ADC-Abtastrate ist von 8.000 Abtastungen pro Sekunde bis hinunter zu 3,9 Abtastungen pro Sekunde programmierbar, und benutzerdefinierte Tiefpassfilter ermöglichen eine große Bandbreite an Grenzfrequenzen.

 

Einige Leistungsdaten zum 3-achsigen Beschleunigungssensor (Translation)

  • Der 3-achsige Beschleunigungsmesser des MPU-6050 verwendet separate Prüfmassen für jede Achse. Die Beschleunigung entlang einer bestimmten Achse bewirkt eine Verschiebung der entsprechenden Prüfmasse; kapazitive Sensoren erkennen die Verschiebung differenziell.
  • Wenn das Gerät auf eine flache Oberfläche gelegt wird, zeigt es 0 g auf der X- und Y-Achse und +1 g auf der Z-Achse an (s. Abb. 3).
  • Der Skalierungsfaktor der Beschleunigungsmesser wird im Werk kalibriert und ist nominell unabhängig von der Versorgungsspannung.
  • Jeder Sensor verfügt über einen eigenen Sigma-Delta-ADC zur Bereitstellung digitaler Ausgänge. Der volle Skalenbereich des digitalen Ausgangs kann auf ±2 g, ±4 g, ±8 g oder ±16 g eingestellt werden.

I2C-Kommunikationsschnittstelle

  • Die Kommunikation der MPU-6050 erfolgt über eine serielle I2C-Schnittstelle; die MPU fungiert bei der Kommunikation immer als Slave.

 

 

 

 

 

 

 

Abb. 3

Die drei Raumachsen X, Y und Z einer MPU-6050.

Anwendungsgebiete dieses Sensors liegen u.a. im Bereich

  • Smartphones- und Tablets (z.B. zur Gestenerkennung)
  • Gaming,
  • Fußgänger- und Fahrzeugnavigation sowie
  • Gesundheits- und Fitnessüberwachung.

Die LSM6DS3TR IMU

Der Arduino UNO WiFi R2 besitzt eine eingebaute IMU LSM6DS3TR. Es handelt sich dabei um einen 3-Achsen-Beschleunigungs- und einen 3-Achsen-Drehraten-Sensor. Die Leistungsdaten dieses Sensors können über Datenblatt aus dem Internet heruntergeladen werden.

Übung 1 - Rohdaten einer LSM6DS3TR IMU erfassen und darstellen

 

1 - Pflichtenheft oder Was soll die Schaltung können?

  • Entwickle für die IMU LSM6DS3TR ein Programm, das die Rohdaten des Beschleunigungs- und des Drehratensensors sowie die Temperatur im seriellen Monitor ausgibt.

 

2 - Material

  • Arduino- UNO WiFi Rev2
  • Steckbrett und Steckdraht (Ma-Ma, Fe-Ma)
  • Arduino IDE und Visuino auf dem Rechner bereits installiert

 

3 - Objektanordnung

 

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon das Board Arduino UNO WiFi R2 aus.

 

Schritt 2 - Objekte/ Elemente auswählen

  • Gib in Filtersuche "format" ein, wähle das Objekt "Formatted Text" (s. Abb. 4) und ziehe es in die Arbeitsfläche.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 4 - Objekt Formatted Text

  • Öffne mit einem Doppelklick im grauen Feld des Objektes FormattedText1 das Fenster Elements und klicke dort im rechten Fenster AnalogElement siebenmal an.
    Im Objekt FormattedText1 erscheinen dann diese sieben Elemente (s. Abb. 5).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 5 - Formatted Text

 

Schritt 3 - Objekte/Elemente verbinden mit Ard-Board

  • Verbinde die Anschlüsse des Beschleunigungs- und Drehsensors des Arduino UNO WiFi R2 mit dem Objekt FormattedText1 (s. Abb. 6)
  • Verbinde Out des Objekts FormattedText1 mit In Serial Serial[0] (9600)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 6

Schritt 4 - Kompilieren und Hochladen des Programmcodes

  • Öffne in Visuino unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein. Viel Spaß beim Experimentieren!

 

Ausgabe der Rohdaten im Terminalfenster

Insgesamt werden sieben Messwerte im Terminalfenster angezeigt: drei Beschleunigungswerte, drei Rotationswerte jeweils in Richtung der Raumachsen X, Y und Z sowie die Raumtemperatur.

 

Eine formatierte Ausgabe erstellen

  • Klicke auf das Objekt FormattedText1.
  • Im Properties-Fenster erscheint FormattedText (s. Abb. 7).
Abb. 7 - Properties-Fenster des Objektes FormattedText1.
  • Klicke auf das Symbol
  • Gib in dem sich öffnenden Fenster die in Abb. 8 dargestellte Zeile ein.
Abb. 8 - Formatierungsanweisungen für die Rohdatenausgabe
  • Die sieben Elemente des Objektes FormattedText1 ->{AnalogElement1, AnalogElement2, ..., AnalogElement7} werden von oben nach unten - beginnend mit 0 - angesprochen über %0, %1, ... Vorangestellt werden kann ein beliebiger Text.
    AX %0 gibt also den Text AX im Terminalfenster aus, gefolgt vom Messwert des Beschleunigungssensors in X-Achsrichtung (s. Abb. 9).

Abb. 9 - Darstellung der Rohdaten im Terminalfenster

Liegt das Arduino UNO WiFi R2 Board auf dem Tisch und wird nicht bewegt, sollten die Rohdaten der aufgenommenen translatorischen Bewegung Null sein. Die ersten drei Spalten in Abb. 9 zeigen die Beschleunigungswerte bzgl. der drei Raumachsen X, Y und Z.

Ihre Werte liegen für die Bewegung in der Ebene (AX bzw. AY) bei Null. AZ zeigt einen Werte bei 1, was der Erdbeschleunigung von ca. 9,81 m/s2 entspricht.

Übung 2 - Rohdaten einer MPU6050 (Modul HW-123) erfassen und darstellen

 

1 - Pflichtenheft oder Was soll die Schaltung können?

  • Entwickle für die MPU6050 ein Projekt, das die Rohdaten des Beschleunigungssensors sowie die Temperatur im seriellen Monitor ausgibt.
  • Bestätige, dass im Ruhezustand die Beschleunigungsmesswerte für die X- und Y-Achse bei 0 und für die Z-Achse bei +/- 1 liegen.

 

2a - Material

  • Arduino- NANO v3.0
  • Steckbrett und Steckdraht (Ma-Ma, Fe-Ma)
  • Arduino IDE und Visuino auf dem Rechner bereits installiert

 

2b - Versuchsaufbau/Verkabelung

 

 

 

 

 

 

 

Abb. 9

Verkabelung eines Moduls HW-123 mit einem Arduino NANO v3.0

3 - Objektanordnung

 

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon das Board Arduino NANO aus.

 

Schritt 2 - Objekte/ Elemente auswählen

  • Gib in Filtersuche "6050" ein, wähle das Objekt "Accelerometer Gyroscope MPU6000/MPU6050" (s. Abb. 10) und ziehe es in die Arbeitsfläche.

 

 

 

 

 

 

 

 

 

Abb. 10 - Auswahl des Objektes MPU6050 über die Filtersuche

  • Gib in Filtersuche "formatted" ein, wähle das Objekt "text" und ziehe es in die Arbeitsfläche. Ein Doppelklick in den gelben Bereich öffnet das Fenster Elements (s. Abb. 11a) .
  • Füge mit jeweils einem Doppelklick auf "Analog" im Fenster rechts nacheinander vier Elemente "Analog" im Fenster links ein (s. Abb. 11b).

 

 

Abb. 11a - Objekt FormattedText

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 11b - Dem Objekt FormattedText werden vier Elemente vom Typ Analog Element hinzugefügt.

  • Mit einem Doppelklick im grauen Bereich des Objektes FormattedText1 öffnet sich das Eigenschaften-Fenster. Dort lassen sich die Beschriftungen der vier Elemente und  die Nachkommastellen verändern (s. Abb. 12).

 

 

 

 

 

 

Abb. 12

Die Eigenschaften "Name" und "Precision" sind für drei der vier AnalogElemente verändert worden. Als Namen wurden die Bezeichner für die drei Raumachsen (X, Y, Z) gewählt; für die Temperatur T.

  • Die formatierte Ausgabe wird ebenfalls im Eigenschaften-Fenster über Text eingestellt. (s. Abb. 13).

 

 

 

 

 

Abb. 13

Die im seriellen Monitor aufgerufenen Daten werden über die Bezeichner %0, %1 ... aufgerufen. Das erste Datenfeld (%0) ist hier das Element X usw.Vorangestellt werden kann ein beliebiger Text -> hier AX.

Schritt 3 - Objekte/Elemente verbinden mit Ard-Board

  • Verbinde die drei Objekte wie in Abb. 14 gezeigt.

Abb. 14 - Verbindung der beiden Objekte "Accelerometer/Gyroscope1" und "FormattedText1" mit dem Objekt "ArduinoNano"

Schritt 4 - Kompilieren und Hochladen des Programmcodes

  • Öffne in Visuino unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein. Viel Spaß beim Experimentieren!

Die Messergebnisse

 

 

Abb. 15

Das Sensormodul liegt flach auf dem Tisch.

 

 

Das Sensormodul liegt - Sensor nach unten - flach auf dem Tisch.

Abb. 16 - Messwerte

Der Pfeil der x-Achse auf dem Sensormodul zeigt senkrecht nach oben (s. Abb. 9).

 

 

Der Pfeil der y-Achse auf dem Sensormodul zeigt senkrecht nach unten (s. Abb. 9).

Die Messwerte in Bezug zu den Raumachsen X, Y und Z weisen jeweils einen Wert von +/- 1g aus, wenn der Achsvektor des Sensors senkrecht zur Erdoberfläche steht. Die Messwerte bezüglich der anderen beiden Raumachsen liegen dann jeweils bei 0g, was zu erwarten war.

 

Darstellung der Messwerte auf Anzeigeinstrumenten

Tauscht man das Objekt "FormattedText1" gegen ein Objekt "packet" aus, lassen sich die Messwerte über verschiedene Anzeigeinstrumente (Winkelanzeige, Linear Anzeige, Thermometer, 7-Segment-LCD Anzeige) ausgeben. In einem Kurzvideo wird die Darstellung der Beschleunigungswerte mit Hilfe einer Linearen Anzeige (X-, Y- und Z-Achsrichtung) und einem Thermometer (Temperaturmessung) gezeigt.

 

 

 

 

 

 

 

 

 

 

Abb. 17

Darstellung der Beschleunigungswerte bezüglich der drei Raumachsen auf einem Linearen Messgerät und der Temperatur auf einem Thermometer.

2407010

Druckversion | Sitemap
© Reinhard Rahner - Gettorf