User Tools

Site Tools


rc:mlink:altimeter

M-Link Höhensensor (barometrisch) im Selbstbau

Der hier vorgestellte Sensor bietet einen Höhensensor und misst nebenbei noch die Temperatur und eine bliebige Spannungsquelle bis 18 Volt. Die Werte werden über das M-Link Sensorbus Protokoll an einen telemetriefähigen Multiplex Empfänger übertragen.


Zur Messung des absoluten Luftdrucks kommt der BMP085 Luftdurcksensor von Bosch zum Einsatz. Dieser misst nur 5×5 mm!

Benötigte Bauteile

Es gibt 2 Möglichkeiten den Höhensensor aufzubauen: Auf einem Stück Lochrasterplatine oder auf einer geätzten Platine. In der Lochraster-Version kommen nur normale (THT) Bauelemente zum Einsatz (Ausnahme: der Sensor selbst). In der Platinenversion kommen SMD-Bauelemente zum Einsatz.

Bauteil Bezeichnung/Bezugsquelle Lochraster Bezeichnung/Bezugsquelle SMD
Luftdrucksensor Bosch BMP085
Waterott: COM-09603
alternativ: aus China via E-Bay
Controller ATtiny85-20PU
Reichelt: ATTINY 85-20 PU
ATtiny85-20SU
Reichelt: ATTINY 85-20 SU
Spannungsregler 3.3V TS 2950 3.3
Reichelt: TS 2950 CT33
TS5204 3.3
Reichelt: TS 5204 CX33
Kondensator (2x) 2,2µF
Reichelt: SM 2,2/50RAD
2,2µF / SMD805
Reichelt: X7R-G0805 2,2/25
Präz. Widerstand 10k Reichelt: MPR 10,0K SMD805
Reichelt: SPR-0805 10,0K
Präz. Widerstand 1,3k Reichelt: MPR 1,30K SMD805
Reichelt: SPR-0805 1,30K
Stiftliste gewinkelt 2,54 mm Reichelt: SL 1X50W 2,54
Lochrasterplatine Reichelt: H25PR050
Sockel für Controller Reichelt: GS 8P

Schaltplan


Der Schaltplan ist sehr einfach. Der Controller und der Sensor werden über den Spannungsregler mit 3,3V versorgt. Der Spannungsregler benötigt einen Kondensator von min. 2,2µF (TS2950: 1 µF) am Ausgang um ordentlich zu arbeiten. Empfohlen ist ebenfalls ein Kondensator mit min. 1µF am Eingang. Die Werte sind unkritisch und können ohne Limit erhöht werden. Darum sind 2 x 2,2µF dafür vorgesehen. Der Drucksensor verfügt über ein I2C Interface. Dieses wird direkt mit 2 Pins des Controllers verbunden. Die benötigten PullUp-Widerstände sind bereits im Controller integriert und werden per Software aktiviert. Zur Spannungsmessung wird ein Spannungsteiler verwendet. Mit 10k und 2,2k kann eine Spannung bis 18V gemessen werden. Die Spannung am Controller beträgt dann ca. 3,3 Volt. Es müssen an dieser Stelle nicht unbedingt Präzisionswiderstände verwendet werden. Es können auch Metall oder Kohleschicht Typen aus der Bastelkiste zum Einsatz kommen. Es muss dann eben mit einer etwas größeren Abweichung der Messung gerechnet werden. Ungefähr in der Größenordnung der Toleranz der Widerstände. Die hier vorgeschlagenen Typen besitzen eine Toleranz von 0,1%. Metall-Widerstände von 1% und Kohleschicht von typisch 5%.

Platinenlayout


Platine zum ausdrucken auf Folie

Platine zum ausdrucken of Folie (BMP180)

Das Layout in der PDF ist so gestaltet, dass es auf Folie ausgedruckt werden kann. Danach muss es mit der bedruckten Seite nach unten auf die Platine gelegt werden. Durch das direkte Aufliegen des Toners bzw. der Tine auf der Platine wird ein besseres Ergebniss bei der Belichtung erziehlt.

Aufbau auf Lochraster

Da es sich beim Drucksensor BMP085 um ein SMD-Bauelement handelt, ist seine Montage auf einer Lochrasterplatine nicht ganz einfach. Eine Möglichkeit besteht darin, den Sensor auf den Rücken zu legen, dünne Dräte an die Anschlüsse zu löten und diese dann um 90 Grad gedreht nach unten durch die Lochrasterplatine zu führen.

Die Pinbelegung des BMP085:

Achtung das Bild zeigt den Sensor von oben. Die Anschlüsse scheinen deshalb nur durch. Wenn der BMP085 auf den Rücken gedreht wird, spiegelt sich die Anschlussbelegung!

Pin Funktion Hier Benötigt
1 GND, Minus Ja
2 Messung beendet Nein
3 Spannung für Sensor Ja
4 Spannung für Elektronik Ja
5 nicht verbunden Nein
6 SCL Leitung Ja
7 SDA Leitung Ja
8 XCLR Nein

USB-Programmieradapter

Um den Sensor zu konfigurieren kann das Original-MPX-Datenkabel #85149 benutzt werden. Außerdem ist ein Selbstbau recht einfach möglich. Hier findet man alle Infos dazu: Datenkabel für Multiplex M-Link Produkte.

Software

Das Programm für den Controller ist als HEX Datei verfügbar und muss auf den Controller aufgespielt werden.

mlink_alt.zip

Die Fuses sollten wie folgt eingestellt sein:
Low-Fuse: 0xE2
High-Fuse: 0xDE

Es kann von mir ein fertig programmierter Controller für 5 EUR bezogen werden (DIP oder SO8 Gehäuse)

Der Sensor liefert folgende Funktionalität:

  • Aktuelle Flughöhe in Metern
  • maximale Flughöhe in Metern
  • Aktuelle Temperatur
  • Steigen / Sinken in m/s (Integrationszeit 1 sek.)
  • maximale Steigrate m/s
  • maximale Sinkrate m/s
  • ext. Spannungsmessung von 0-26V (z.B. für Antriebskku)
  • Alarmschwellen für Höhe, Temperatur und Spannung.


Alle Sensor-Adressen und Alarmschwellen sind frei einstellbar.
Um diese Parameter einzustellen, kann hier ein Windows-Programm heruntergeladen werden:

SensorControl


Verkabelung

Modifikationen

  • Wer die Spannungsmessung nicht benötigt, kann die beiden präz. Widerstände einfach weglassen.
  • Wer Angst vor Verpolung des Moduls hat, kann in die Plus-Leitung des Servokabels eine kleine Schottky-Diode (z.B. BAT85) einlöten.
  • Das Modul hat keine Anschlüsse für eine SensorBus Weiterleitung. Wer mehrere Sensoren nach dem Modul anschließen will, kann einfach ein Y-Kabel verwenden.

Bilder

Der fertige Sensor auf Lochraster aufgebaut (35×22 mm):



Der Sensor mit SMD Bauteilen auf einer geätzten Platine (24×15 mm):



Der Sensor komplett verkabelt und im Größenvergleich mit einem Ein-Euro-Stück. Das zusätzliche Kabel dient der Spannungsmessung. Es besitzt am Ende einen Stift der einfach in den Plusplos des Balanceranschlusses gesteckt wird. Dies funktioniert natürlich nur wenn Minus bereits verbunden ist (z.B. über das BEC). Ansonsten muss auch noch ein Kabel zum Minus-Anschluss verwendet werden.

Theorie und Genauigkeit

Eine wichtige Frage ist natürlich, wie genau arbeitet der Sensor denn nun? Der BMP085 ist nicht unbedingt der allergenauste Drucksensor, aber er bietet eine gute Genauigkeit, ist sehr klein, voll kalibriert ab Werk und hat ein digitales Interface. Somit viel die Wahl auf diesen Sensor. Der Sensor biete eine Auflösung von 1 Pa, was ca. einer Höhe von 0.084m entspricht. Der für uns interessante Wert ist allerdings sein Rauschen. Diese wird im höchsten möglichen Auflösemodus (welcher bei uns verwendet wird) mit 0.03 hPa angegeben. Dies entspricht 0.25m. Man muss also davon ausgehen, dass die angezeigte Höhe um mindestens eine viertel Meter schwanken kann. Aber auch unabhängig vom Sensor selbst, kann sich der Luftdruck rasch ändern. Die kann durch Wind oder Zugluft geschehen, die auf den Sensor trifft. Dann verändert sich der Luftdruck auch mit der Temperatur. Dazu kommen noch die natürlichen Luftdruckänderungen durch das Wetter. Man muss an dieser Stelle bedenken: Eine Änderung der Lufttemperatur von nur 0.01°C bewirkt eine Luftdruckänderung von 3 Pa was 0.25 m entspricht!.

Werden all diese Faktoren zusammengenommen so wird man auf eine Genauigkeit von 1-2m kommen. Dies entspricht auch den im Test gemachten Erfahrungen. Dies beeinflusst natürlich auch die Vario-Funktion. Diese arbeitet mit einer Auflösung von 0.1 m/s und schwankt natürlich dementsprechend auch im Bereich von +- 1m.

Die Höhe über den Startplatz wird vom Sensormodul anhand der Differenz aus Referenzluftdruck P0 und aktuellem Luftdruck P ermittelt. Beim Einschalten wird der aktuelle Luftdruck als P0 gespeichert. Für die Umrechnung in Meter wird die Internationale Höhenformel verwendet. Diese geht von einer definierten Standardatmosphäre aus. In der aktuellen Firmware für dieses Modul wird folgende Formel verwendet: Höhe[m]=-7990*log(p0/p).

Es gibt alternativ auch die Möglichkeit einer linearen Berechnung. Die logarithmische Charakteristik der Funktion macht sich in Bereichen von ein paar hundert Metern Differenz kaum bemerkbar. So kann man ungefähr davon ausgehen dass eine Luftdruckänderung von 1 hPa ca. 8.4 Meter bedeutet. Somit kann man auch wie folgt rechnen: Höhe[m]=(p0-p)*0.084.

Messwerte

Um das tatsächliche Rauschen des Sensors zu ermitteln wurde eine Testreihe durchgeführt.

Dauer 5 Minuten
Interval 0,5 s
Bedingungen geschlossener Raum, 27°C
Messwerte 600


Verlauf des absoluten Drucks:



Differenz zwischen Referenzdruck (1. Messwert) und aktuellem Druck in Meter:


Pos. Diff (Pa) 17
Neg. Diff (Pa) -9
Pos. Diff (m) 0,7
Neg. Diff (m) -1,4


Auf den Diagrammen lässt sich schön, sowohl das Rauschen des Sensor als auch der absolute Drift des Luftdrucks (wahrscheinlich durch das Wetter) erkennen.

BMP 180

Zum BMP085 gibt es bereits ein Nachfolgermodell: Der BMP180. Er ist nochmal ein ganzes Stück kleiner als der BMP085 und (je nach Bezugsquelle) etwas teurer. Laut Datenblatt rauscht er etwas weniger (0.17 m) als der BMP085. Das erfreuliche daran ist, der BMP180 ist mit dem BMP085 Funktionskompatibel. Das heißt die Software muss nicht geändert werden. Wegen seiner kleinen Bauform ist er allerdings nicht mehr für die Lochrasterplatine geeignet.



Anleitung M-Link Altimeter

Das Fertigmodul:

Fragen, Kritik, Bestellungen usw. bitte an: mail@cyblord.de

rc/mlink/altimeter.txt · Last modified: 2014/05/01 16:26 (external edit)