Wir wollen die Raketenstarts möglichst detailliert vermessen und dokumentieren. Dazu können externe Sensoren (z.B. statische Kameras) verwendet werden, aber auch Nutzlast-Sensoren mit der Rakete mitfliegen. Werden die Daten nicht erst nach dem Flug ausgewertet, sondern während des Flugs an die Bodenstation übertragen, sprechen wir von Telemetrie.

Damit die Sensorik-Einheit die Landung übersteht und wie die SpaceX-Raketen wiederverwendet werden können, muss eine entsprechende Nutzlastverkleidung, eine Aufpralldämpfung oder ein Fallschirmsystem gebaut werden.

Sensoren

  • Bodenkamera
    • Stativ, Zeitlupenaufnahme…
  • Microbit:
    • Beschleunigungsmesser
    • Magnetometer (Kompass)
    • Interner Speicher zur Aufzeichnung.
  • Arduino
    • Höhenmesser

Microbit

Einfache Datensammlung könnte wie folgt stattfinden. Achtung, der Microbit sammelt Daten, sobald er eingestellt wird, was blitzschnell den Speicher füllt. Für den Raketenbetrieb sollte die Datensammlung erst loslegen, wenn der Countdown beginnt!

collector.py
from microbit import *
import log
 
# Delete last log
log.delete()
# Define which columns we are going to log.
log.set_labels('ax', 'ay', 'az', 'mx', 'my', 'mz', timestamp=log.MILLISECONDS)
# The standard setting only allows accelerations up to 2g, we want 8g!
accelerometer.set_range(8)
 
def read_compass():
    return compass.get_x(), compass.get_y(), compass.get_z()
 
# Set the timer to log data every 20 milliseconds (50 measurements per second)
@run_every(ms=20)
def log_single_row():
    # TODO: do nothing unless countdown has started!
    accel = dict(zip(('ax', 'ay', 'az'), accelerometer.get_values()))
    bearing = dict(zip(('mx', 'my', 'mz'), read_compass()))
    accel.update(bearing)
 
    log.add(accel)
 
while True:
    # Needed so that the program doesn't end prematurely.
    sleep(100)

Altimeter

Wir haben einige BMP180 Höhenmesser von Adafruit. Diese lassen sich mit dieser Bibliothek einlesen.

Die bmp180.py Datei muss im Projekt im selben Ordner gespeichert werden wie die Hauptdatei. In letzerer kann die Höhe wie folgt ausgelesen werden:

import bmp180
sensor = bmp180.BMP180()
 
while True:
    print(sensor.Altitude())

Auf der Hardware-Seite müssen die vier Kontakte des Sensors mit 3V, GND sowie Pins 19 (SCL) und 20 (SDA) am Microbit verbunden werden.

Mit der Data-Collection ist es aber noch nicht getan. Rohdaten müssen aggregiert (zusammengefasst), verknüpft und aufbereitet werden. Einschlägige Tools sind Excel, Google Sheets und Pandas

Sheets

Spreadsheets wie Excel sind gute Tools, um moderate Datenmengen zusammenzufassen oder zu visualisieren.

Beispiel: Eine Videoaufzeichnung des Wasserausstosses in Zeitlupe wird in Shotcut mit einer Stopuhr überlagert. Anschliessend erfolgt das Auslesen des Wasserstands zu den verschiedenen Zeiten.

Fig. 1: 1l Wasser, 2bar, 1.67s
Elapsed [s] Remaining Water [liters]
0 1
0.3 0.5
0.74 0.3
0.87 0.2
1.24 0.1
1.76 0

In Google Sheets erfolgt die Auswertung mit Log-Trendlinie:

Fig. 2: Wasseraustoss

Pandas

Pandas eignet sich für grosse Datenmengen und professionelle, automatisierte Verarbeitung von vielen Datensätzen.

Beispiel, Dokumentation.

Für das Alignment der verschiedenen Sensor-Daten müssen die Zeitstempel synchronisiert werden und mit dem Countdown abgeglichen werden.

Bragging Rights gibts nur, wenn die Resultate (erreichte Flughöhe, maximale Flugzeit, Beschleunigung) auch ansprechend dargestellt und verständlich visualisiert werden.

  • mint_wochen/raketenbau/data.1739260314.txt.gz
  • Zuletzt geändert: 2025-02-11 07:51
  • von hof