Calliope GravityChecker - mistablinky/Calliope GitHub Wiki

Die Codebeispiele im Ordner Calliope GravityChecker demonstrieren die Abfrage und Anzeige von Messwerten des Calliope Beschleunigungssensors BMX055. Dabei wird das Programm schrittweise solange weiter entwickelt, bis ein Beschleunigungsmessgerät mit einem Messbereich von 1g und einer Auflösung von 125mg entsteht. Als Anzeige werden sowohl die 5x5 LED-Matrix in Form eines Balkendiagramms, als auch die RGB-LED zur Messbereichsanzeige verwendet.

Arbeitsblätter

Die folgenden Arbeitsblätter sind im Repository (noch nicht) enthalten:

Calliope-GravityChecker-Programmierung.pdf Die selbständige Erarbeitung der einzelnen Programmierschritte anhand von Problembeschreibungen des jeweils aktuellen Schrittes sowie durch eine textuelle Lösungsbeschreibung des jeweils nächsten Schrittes inklusive der Einführung möglicher zu verwendender (neuer) Programmelemente.

Calliope-GravityChecker-Experiment.pdf Im experimentellen Versuch wird das entstandene Messgerät verwendet, um die physikalischen Zusammenhänge zwischen der Drehzahl eines Gegenstandes, dem Radius zur Drehachse und der Radialbeschleunigung zu untersuchen. Weitere Experimente widmen sich der Richtung der Erdbeschleunigung und der Untersuchung von Beschleunigungswerten im freien Fall.

Vorüberlegungen zur Verwendung des Beschleunigungssensors

Welche Daten liefert der Sensor?

Der Sensor ist standardmäßig auf einen Messbereich von +/-2g eingestellt und liefert Beschleunigungswerte in mg. 1g (Erdbeschleunigung) entspricht einem Messwert von 1024, 500mg entsprechen einem Messwert von 512.

Programmierschritte für den Calliope GravityChecker

Die folgenden Codebeispiele sind im Repository enthalten:

  1. mini-02-GravityChecker-1.hex - Beschleunigung in Richtung X-Achse auf Balkendiagramm darstellen, Skalierung automatisch. Problem: Das Balkendiagramm baut sich um 90 Grad verdreht zur Beschleunigungsachse auf.

  2. mini-02-GravityChecker-2.hex - Änderung der Beschleunigungsmessung in Richtung der Y-Achse (USB-Anschluss und RGB-LED liegen auf dieser Achse, entlang dieser Achse baut sich das Balkendiagramm auf) Problem: Es ist unklar, welche Werte angezeigt werden, da sich der Messbereich je nach maximalem Messwert dynamisch verändert.

  3. mini-02-GravityChecker-3.hex - Messbereich des Balkendiagramms festlegen auf 1g = vier Balken (+Pfeilspitze) -> 1024mg * 1,25 = 1280mg Problem: Es gelingt keine Null-Anzeige sowie zu unruhiges Anzeigeverhalten im Freihandversuch.

  4. mini-02-GravityChecker-4.hex - Anzeige stabilisieren: Nur positive Beschleunigungswerte anzeigen (in Richtung USB-Anschluss) und Schwellwert für Mindestbeschleunigung einführen (darunter findet keine Anzeige statt) -> z.B. Schwellwert = 175mg

  5. mini-02-GravityChecker-5.hex - Anzeige eines Minuszeichens bei negativen Beschleunigungswerten

  6. mini-02-GravityChecker-6.hex - Programmperformance verbessern durch Einführung einer Variable zum Speichern des Beschleunigungsmesswertes (Mehrfachabfrage des Sensors pro Programmdurchlauf vermeiden)

  7. mini-02-GravityChecker-7.hex - Anzeigegenauigkeit verdoppeln: Messbereich des Balkendiagramms festlegen auf 500mg = vier Balken (+Pfeilspitze) -> 512mg * 1,25 = 640mg. Bei Messwerten größer 500mg leuchtet die RGB-LED rot auf um anzuzeigen, dass dem angezeigten Messwert 500mg hinzuzufügen sind. Damit entsteht insgesamt ein Messbereich von 1g mit einer Auflösung von 125mg.