ADAM

ADAM

ADAM Under Pressure

Mit ADAM misst JACKY den Umgebungsdruck. ADAM steht für AußenDruck Aufzeichnungs- und Messgerät. Eigentlich misst ADAM zwei Werte:

  1. Den Umgebungsdruck, der um JACKY herum herrscht. Klar, das steht ja schon da...
  2. Die Umgebungstemperatur, wie SAITE.

Jetzt denkt Ihr bestimmt, dass der FOG-Manager dem TNA mal nicht gründlich genug auf die Finger geschaut hat. Ihr könnt beruhigt sein, dem FOG-Manager entgeht nichts. Deswegen hat ADAM ja auch eine deutsche Abkürzung. Und dass ADAM zusätzlich zum Druck auch die Temperatur messen kann, liegt an dem verwendeten Sensor BMP180 von der Firma Bosch, der einfach beides kann. SAITE hat gegenüber ADAM den Vorteil, dass sein Messbereich größer ist, SAITE kann tiefere Temperaturen erfassen als ADAM.

Back to the Roots

So, jetzt aber genug von Temperaturen, reden wir mal vom Luftdruck. Mit zunehmender Höhe wird die Luft immer dünner, der Luftdruck sinkt. Das interessiert das BSP-Team und deshalb wird der Luftdruck gemessen. Und weil hinter der Abnahme des Luftdrucks im Vergleich zur Höhe von JACKY eine (eher komplizierte) Regelmäßigkeit steckt, lässt sich an Hand des Luftdrucks die Höhe ausrechnen. Weil aber die Temperatur den Luftdruck ebenfalls beeinflusst, misst ADAM einfach beide Werte. Ihr könnt selber ausprobieren, dass warme Luft dünner ist (also einen niedrigeren Druck hat), als kalte Luft: Nehmt eine leere PET-Getränkeflasche, schraubt sie in einem warmen Zimmer auf und anschließend wieder fest zu. Dann legt Ihr die PET-Flasche in den Gefrierschrank oder stellt sie - falls gerade Winter ist - auf den Balkon. Wenn Ihr eine Stunde später nach der Flasche seht, ist sie ganz zerknautscht. Wir benötigen also einen Temperaturwert, um die Höhenermittlung mit Hilfe des Umgebungsdrucks genauer werden zu lassen.

Dass in unterschiedlicher Höhe verschiedener Luftdruck herrscht, kann man mit folgendem Vergleich erklären: Bestimmt habt Ihr beim Tauchen schon mal gemerkt, dass mit zunehmender Tiefe wegen des höheren Wasserdrucks die Ohren wehtun. Klar, das Wasser wiegt ja etwas, und je mehr Wasser wir über uns haben, desto mehr drückt es auf unser Trommelfell. Wenn wir mal gerade nicht tauchen, sondern uns an Land herumtreiben, ist es so, als würden wir auf dem Grund eines Luftozeans sein. Der Luftozean heißt Atmosphäre. Die Luft um uns herum wiegt auch etwas; zwar hat Luft eine viel geringere Dichte als Wasser - Luft wiegt viel weniger als die gleiche Menge Wasser - aber der Luftozean ist auch viel tiefer, als Ihr tauchen könnt (Auf dem Grund des Luftozeans herrscht in etwa so viel Druck wie in 10 metern Wassertiefe). Vielleicht seid Ihr schon mal auf einen Berg gestiegen und habt den abnhemenden Druck in den Ohren gemerkt, sobald Ihr ein Stück bergauf marschiert seid.

Keine Luftnummer

Was die Ermmittlung der Höhe - im Gegensatz zur Ermittlung der Wassertiefe - (in beiden Fällen an Hand des Drucks) so kompliziert macht, ist die Tatsache, dass sich Luft zusammendrücken lässt und Wasser so gut wie gar nicht. Das könnt Ihr auch ausprobieren: Nehmt eine Fahrradluftpunmpe, zieht den Kolben bis zum Anschlag heraus, haltet die Ventilöffnung fest mit dem Daumen der einen Hand zu und drückt dann mit der anderen Hand den Kollben kräftig in die Pumpe. Ihr merkt, dass Ihr den Kolben ganz schön tief reindrücken könnt, bis die Luft an Eurem Daumen vorbei strömt. Luft lässt sich also zusammendrücken. So, und dann nehmt Ihr die Luftpumpe mal mit in die Badewanne oder in den Baggersee und wiederholt den Versuch unter Wasser...

Der Wasserdruck verdoppelt sich ganz einfach, wenn Ihr Eure Tauchtiefe verdoppelt. Luft verhält sich anders: Durch das Gewicht der Luftmassen die sich oberhalb von JACKY befinden, wird die Umgebungsluft zusammengedrückt wie die Luft in der Fahrradpumpe.

Wenn wir also die Höhe von JACKY ermitteln wollen, müssen wir folgende drei Punkte berücksichtigen:

  1. den Luftdruck selbst
  2. die Temperatur, die den Luftdruck beeinflusst
  3. Das Ausmaß, in dem die Umgebungsluft von JACKY durch die darüber liegende Luft zusammen gedrückt wird.

ADAM - Nackte Fakten

Wie schon gesagt, ADAM misst Druck und Temperatur mit dem Sensor BMP180 der Firma Bosch. Der Sensor sitzt auf einer kleinen, etwa daumennagelgroßen Platine, einem so genannten Break-Out Board. Der Anschluss an CHICK erfolgt über den I²C-Bus, der von der Firma Philips entwickelt wurde. I²C steht für Inter-Integrated Circuit, auch die Bezeichnung Two Wire Interface (TWI) ist gebräuchlich.

Ausgang Belegung GPIO-Pin
VCC Spannung Pin 17, +3,3V
GND Masse Pin 9 (oder 14, 20, 25, 30, 34, 39)
SCL Takt Pin 5, SCL1 I2C GPIO 3
SDA Daten Pin 3, SDA1 I2C GPIO 2
3.3 (niedrige) Spannung bleibt frei

Die Datenübertragung zwischen ADAM und CHICK erfolgt also über zwei Leitungen - eine Datenleitung, eine Taktleitung. Hinzu kommen noch eine Leitung zur Stromversorgung und eine Masseleitung. Zum Testen wurden die Ausgänge des Break-Out Boards wie in der Tabelle rechts beschrieben mit dem GPIO-Anschluss von CHICK verbunden.

ADAM - Verdrahrung

Links seht Ihr das Verdrahtungsschema des Testaufbaus. Da ADAM auf die Platine zur Außentemperaturmessung von SAITE montiert wird, werden dessen Anschlüsse von Spannung und Masse mitbenutzt.

Wir machen ADAM fertig

Damit wir ADAM auslesen können, müssen wir CHICK noch vorbereiten. Zunächst bringen wir CHICK dazu, beim Hochfahren die erforderlichen Treiber zu laden. Dazu muss die Datei /etc/modules um zwei Zeilen ergänzt werden. Wir öffnen die Datei mit root-Rechten im Editor nano:

/etc/modules

sudo nano /etc/modules

Folgende Zeilen werden ergänzt:

i2c-bcm2708

i2c-dev

Abspeichern nicht vergessen!

Jetzt muss der Zugriff auf den I²C-Bus in der Blacklist noch freigegeben werden. Hierzu öffnen wir die Datei /etc/modprobe.d/raspi-blacklist.conf ebenfalls mit root-Rechten im Editor nano. Die entsprechende Zeile wird einfach durch Voranstellen eines #-Zeichens auskommentiert:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

/etc/modprobe.d/raspi-blacklist.conf

Ergänzen des #-Zeichens:

#blacklist i2c-bcm2708

Abspeichern nicht vergessen!

Als nächstes installieren wir noch die erforderlichen Python-Bibliotheken:

sudo apt-get install python-smbus i2c-tools

So, Zeit CHICK neu zu starten. Nachdem wir uns neu eingeloggt haben, fügen wir den Standardbenutzer (der heißt meist 'pi') der I²C-Gruppe zu:

sudo adduser pi i2c

Damit sind alle Vorbereitungen abgeschlossen und wir können testen, ob ADAM richtig angeschlossen ist und erkannt wird:

sudo i2cdetect -y 1 (oder bei älteren Raspies: sudo i2cdetect -y 0)

Wenn wir alles richtig gemacht haben, sollten wir folgendes erhalten:

i2cdetect

Wenn wir '77' in Spalte 7 und Zeile 70 sehen, wissen wir, dass CHICK ADAM erkannt hat und wir können uns um das Auslesen kümmern.

2-Wire-Python

Um an die Druck- und Temperaturwerte zu gelangen, müssen wir verstehen, wie der BMP180-Sensor funktioniert.

Register

Am besten stellt man sich ADAM als eine Wand mit etlichen Schubladen vor. Die Schubladen heißen Register. Jedes Register hat einen Namen, die Adresse des Registers. In manche Register kann man Werte schreiben, das ist so, als würde man die Schublade öffnen und etwas (den Wert) hineinlegen. Andere Register lesen wir, um darin bereit gestellte Werte zu lesen; wir öffnen also die Schublade und holen etwas heraus.

Um ADAM dazu zu bringen, entweder den Druck- oder Temperaturwert herauszurücken, schreiben wir bestimmte Werte in ein festgelegtes Register. ADAM stellt dann in anderen Registern den gewünschten Wert bereit; wir müssen also diese Register auslesen.

Weil die Werte, die uns interessieren, zu groß für eine Schublade sind (in ein Register passt ein Byte), werden die Werte auf mehrere Schubladen verteilt. Wir müssen also mehrere Register - zwei für den Temperatur-, drei für den Druckwert - auslesen und die erhaltenen Stücke zusammensetzen.

Rohdaten und Kalibrierungswerte

Die Werte, die wir im ersten Schritt für Temperatur und Druck erhalten, sind zunächst wenig aussagekräftig. Wir müssen beide Werte noch mit einer ganzen Anzahl von Korrekturdaten, den Kalibrierungswerten, in einer Reihe mathematischer Operationen weiter verwursten. Die Kalibrierungswerte sind von Sensor zu Sensor unterschiedlich und stehen - Ihr ahnt es - wiederum in Registern des jeweiligen Sensors.

Die Adressen der notwendigen Register, die Werte, die Ihr Schreiben müsst, um an die Rohdaten zu gelangen, die Register der Kalibirerungswerte und die Kalibrierungsvorschriften findet Ihr im Datenblatt des Sensors.

Übersetzt in Python

Unten seht Ihr den Python-Code, den der TNA zusammengestöpselt hat. Das Ergebnis ist eine Liste, die als ersten Wert die Temperatur und als zweiten Wert den Druck enthält.

Technische Daten und Links

BSP-Bezeichnung ADAM
AußenDruck Aufzeichnungs- und Messgerät
Handelsname BMP180
Hersteller:Bosch Sensortec
Messbereich
und -genauigkeit
300hPa bis 1100hPa ±0,01hPa
-40°C bis +85°C ±0,1°C
mech. Daten Abmessungen (Länge x Breite): 21mm x 18mm
Masse: 1,14g
87 ADAM wiegen weniger als eine Tafel Schokolade!
Vielen Dank an die Raphael-Apotheke, Starnberg für das Wiegen!
Preis BMP180: € 1,19
Links Datenblatt des BMP180
Wikipedia zum I²C-Bus
Tutorial zum I²C-Bus
Noch ein Tutorial zum I²C-Bus
Tutorial zum I²C-Bus mit Python
zurück
zurück