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

1 - Beschleunigungssensor MX2125

  • Weitere Vorschläge zum Thema mit den Boards: Arduino UNO - BASIC Stamp - Raspberry Pi

Diesen Baustein kennen wir bereits aus dem PBASIC Kapitel BS - Intelligente Sensoren - Beschleunigungssensor. Dort wurde er mit einer BASIC Stamp betrieben. Aufbau und Wirkungsweise dieses interessanten Bausteins könnt ihr dort nachlesen.

2 - Neigungstest

Der MX2125 gibt für die beiden Achsrichtungen x und y je eine Messgröße aus. In dieser Übung werden über P11 und P10 die Messdaten dem Propeller-Controller übergeben und im Terminal angezeigt.

Material

1x  Prop-BoE oder Prop-AB

1x  Memsic2125 Beschleunigungsmesser

2x  Widerstand 220 Ohm (rot-rot-braun)
Aufgaben
  • Baue die Schaltung nach Abb. 1 auf.
  • Übertrage das Programm Neigung1.c in den SimpleIDE Editor und speichere es ab.
  • Starte das Programm über Run with Terminal.
  • Halte das Board möglichst eben, so dass in der Anzeige die x- und y-Werte nahe bei Null liegen.
Bild 1 - Schaltungsaufbau (Courtesy of Parallax Inc.)
Bild 2 - Schaltungsskizze
Bild 3 - Neigung des Sensors nahezu 0
  • Neige das Board nach rechts um ca. 45° und überprüfe, ob der y-Achsen Wert bei 45 liegt.
  • Neige das Board nach links und überprüfe auch hier die Winkelangabe.
Bild 4 - Neigung nach rechts
  • Neige das Board zu dir hin, ebenfalls um 45°. Liegt der angezeigte x-Wert bei ca. 45?
  • Neige das Board von dir weg und überprüfe die Winkelangabe.
Bild 5 - Neigung zum Betrachter hin

Programm Neigung1.c

Programm Neigung1.c

Wie arbeitet das Programm Neigung1.c?

Der Sensor MX2125 liefert zwei Datenströme, einen für die x-Achse, einen für die y-Achse. Die Impulse habe eine Länge von ca. 5000µs, wenn das Board flach gehalten wird.

Wird es geneigt, variieren die Impulslängen zwischen 3175 und 6125µs. Über Funktionen in der mx2125 Bibliothek werden diese Messwerte auf einen Bereich von -1250 bis +1250 skaliert und anschließend in Winkelwerte zwischen -90° und +90° umgewandelt (der Ausgangswertebereich kann, Sensor bedingt, etwas variieren).

Wer etwas mehr über Skalierung wissen möchte, erfährt hier mehr.

Abbildung 6 - (Courtesy of Parallax Inc.)

Die mx2125-Bibliothek lässt sich in jedes Projekt aus dem Hauptmenü mit Project > Add Simple Library einbinden. Im Simple Library Folder  > Sensor > libmx2125 wird der Ordner ausgewählt. Alle Funktionen aus dieser Bibliotheksdatei stehen dann mit dem Aufruf

  • #include "mx2125.h" 
    

im Projekt zur Verfügung.

Auszug aus der Simple Library Reference

In der Simple Library Reference findet man Hinweise zu den Funktionen der Bibliothek mx2125.h. Sie enthält drei neue Funktionen:

  • int mx_accel (int axisPin)
    

Misst die Beschleunigung in Vielfachen von g (Erdbeschleunigungsgröße g). Ein Wert von +/- 1250 entspricht ungefähr +/- 1g.

  • int mx_rotate(int xPin, int yPin)
    

Bei vertikal gehaltenem Accelerometer wird der Drehwinkel bestimmt. Zeigt die Spitze des Dreiecks auf dem Chip nach oben, dann sollte der Drehwinkel 0° angezeigt werden.

  • int mx_tilt(int axisPin)
    

Misst den Neigungswinkel im Bereich von +/- 90°. 0° liegt dann vor, wenn die Oberfläche des Sensor parallel zum Untergrund steht.

In diesem Versuch ist P10 mit dem Anschluss Xout des MX2125 verbunden.

  • int x = mx_tilt(10) 
    

holt sich den x-Messwert über P10 vom MX2125 und speichert ihn in der Variablen x ab. Entsprechendes passiert unter

  • int y = mx_tilt(11)
    

mit dem y-Messwert an P11, der der Variablen y zugewiesen wird.

Die Messungen werden in einer Endlosschleife alle 200ms im Terminal ausgegeben.

Versuch mal dies!

Halte das Board senkrecht vor den Körper und drehe es wie ein Steuerrad nach links und nach rechts. Mit Hilfe der Funktion mx_rotate aus der mx2125 Bibliothek wird der Drehwinkel in einem Bereich von 0 bis 359° im Terminal angezeigt.

Aufgaben
  • Gib das Programm Drehung.c in den SimpleIDE Editor ein und speicher es ab.
  • Starte das Programm über Run with Terminal aus der Icon-Leiste.
  • Halte das Board senkrecht vor den Körper und drehe es wie ein Steuerrad langsam nach links und rechts und beobachte dabei die Datenanzeige im Terminal.

Programm Drehung.c

Programm Drehung.c
Drehwinkelmessung mit dem Sensor MX2125

Jetzt kommst du!

Versuche einmal den Drehwinkel aus der Messung von mx_rotate auf ein anderes Gerät und seine Eigenschaften zu übertragen, wie zum Beispiel die Helligkeit einer LED, die Position des Steuerrades eines Servos oder auf die Position eines Zeichens im SimpleIDE Terminal.

 

Tipp: zur Positionierung eines Zeichens benötigt man etwas Mathematik und Kenntnisse über Skalierungen. Die x- und y-Werte müssen auf einen Bereich von 0 bis 20 übertragen werden. Wenn das erfolgt ist, kann über

  • print(“%c%c%c*”, CRSRXY, x, y)
    

ein Sternchen (*) im Terminal ausgegeben werden oder alternativ mit

  • print(“%c%c%c ”, CRSRXY, xAlt, yAlt)
    

das vorher angezeigte Zeichen wieder gelöscht werden.

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf