Table of Contents
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 |
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