User Tools

Site Tools


rc:mlink:altimeter

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rc:mlink:altimeter [2013/12/14 00:34]
127.0.0.1 external edit
rc:mlink:altimeter [2014/05/01 16:26]
Line 1: Line 1:
-====== 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 5x5 mm! 
-\\ 
-{{:​rc:​mlink:​bmp085.png?​|}} 
- 
- 
-===== 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 ===== 
-{{:​rc:​mlink:​mlink_alt_schaltplan.png?​200|}} 
- 
-\\ 
-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 ===== 
-{{:​rc:​mlink:​mlink_alt_layout.png?​400|}} 
- 
-\\ 
-{{:​rc:​mlink:​mlink_alt_platine.pdf| Platine zum ausdrucken auf Folie}} 
-\\ 
- 
-{{:​rc:​mlink:​mlink_alt_180_2.pdf|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:\\ 
-{{:​rc:​mlink:​bmp085_pins.png?​200|}}\\ 
-**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: [[rc:​mlink:​usbadapter|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. ​ 
-\\ 
-\\ 
-{{:​rc:​mlink:​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: \\ \\ 
-[[http://​cyblord.de/​sw/​sensor_control/​publish.htm | SensorControl]] 
-\\ 
- 
- 
- 
- 
- 
-\\ 
-{{:​rc:​mlink:​sensorcontrol.png?​400|}} 
- 
-===== Verkabelung ===== 
-{{:​rc:​mlink:​platine_pads.png?​400|}} 
- 
-===== 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 (35x22 mm): \\ 
-{{:​rc:​mlink:​mlink_altimeter_lochraster.jpg?​200|}} 
- 
-\\ 
-\\ 
-Der Sensor mit SMD Bauteilen auf einer geätzten Platine (24x15 mm): \\ 
-{{:​rc:​mlink:​platine.png?​200|}} 
- 
-\\ 
-\\ 
-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. 
-\\ 
-{{:​rc:​mlink:​mlink_alt_fertigsmd.jpg?​300|}} 
-===== 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: \\ 
-{{:​rc:​mlink:​diagramm_druckabs.png?​|}} 
- 
-\\ 
-\\ 
-Differenz zwischen Referenzdruck (1. Messwert) und aktuellem Druck in Meter: \\ 
-{{:​rc:​mlink:​diagramm_meterdiff.png?​|}} 
-\\ 
-\\ 
-|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. 
-\\ 
-{{:​rc:​mlink:​bmp180.jpg?​|}} 
- 
-\\ 
-{{:​rc:​mlink:​bmp085_bmp180.jpg?​|}} 
- 
-\\ 
- 
- 
-===== Bauteile und Bausatz ===== 
-Wer sich nicht alle Bauteile selber bestellen möchte, oder evt. gar nicht bauen will, der kann auch einen Bausatz bzw. ein Fertigmodul von mir bekommen: 
-| Alle Bauteile (BMP180) + SMD Platine| 18 EUR | 
-| Fertigmodul SMD| 25 EUR | 
-| prog. Controller SMD oder DIP | 5 EUR | 
-| [[rc:​lm4:​prog#​standard-usb-adapter|USB Programmieradapter]] | 6 EUR | 
-\\ 
-Beim Fertigmodul ist ein Anschlusskabel für die Spannungsmessung angelötet. Dieses kann z.B. in den Balancer-Stecker eines Akkupacks eingesteckt werden. 
- 
-Falls diese Funktion nicht benutzt werden soll, kann das Kabel auch einfach abgeschnitten werden. 
-\\ 
-\\ 
-Versand: 3 EUR im LuPo Umschlag per Einschreiben. 
-\\ 
-[[rc:​mlink:​altimeter_doc|Anleitung M-Link Altimeter]] 
-\\ 
-\\ 
-Das Fertigmodul:​\\ 
-{{:​rc:​mlink:​fertigmodul.png?​400|}} 
- 
-{{:​rc:​mlink:​msb_alt_fertig.png?​400|}} 
- 
- 
-Fragen, Kritik, Bestellungen usw. bitte an: [[mail@cyblord.de]] 
rc/mlink/altimeter.txt · Last modified: 2014/05/01 16:26 (external edit)