SAITE

SAITE

SAITE zittert mit

Mit SAITE misst JACKY die Temperatur. SAITE steht für Sensoren zur Außen- und Innen-Temperatur-Erfassung. SAITE misst also zwei Temperaturen.

  1. die Umgebungstemperatur von JACKY - Klar, wir wollen ja wissen, wie kalt (oder warm) es während des Flugs wird,
  2. die Innentemperatur von JACKY, da CHICK (JACKYs Gehirn) zusätzlich zu jeder Menge Daten auch Wärme produziert, die durch die bei zunehmender Flughöhe immer dünner werdende Luft immer schlechter abgeleitet werden kann.

So wie SPRUCE, die Kamera, die JACKY mitnimmt, in kurzen Abständen ein Bild knipst und so, wie die übrigen Messgeräte (ADAM, POPE) in ebenso kurzen Abständen ihre Messungen vornehmen, erfasst auch SAITE in den selben Abständen die Außen- und Innentemperatur. Die Temperaturdaten werden an CHICK weiter geleitet, der sie in einer Datenbank abspeichert.

Weil der FOG-Manager - selbstverständlich zu Recht - ein Überhandnehmen englischsprachiger Abkürzungen (CHICK, SPRUCE, POPE) moniert hat, entstammt die Abkürzung SAITE deutschem Wortschatz.

SAITE unter der Lupe

DS18B20
DS18B20

Herzstück des SAITE-Moduls sind zwei Thermosensoren vom Typ DS18B20. Aus dem DS18B20 kommen drei Drähte. Wenn man wie links dargestellt auf die abgeflachte und beschriftete Seite des Sensors blickt, sind die Drähte wie folgt belegt und werden an folgende Pins des GPIO-Anschlusses von CHICK angeschlossen:

Draht Belegung GPIO-Pin
# 1 Masse Pin 6 (oder 9, 14, 20, 25, 30, 34, 39)
# 2 Daten Pin 7, GPIO 4
# 3 Spannung Pin 1, +3,3V
SAITE - Verdrahrung

JACKY nimmt aber zwei DS18B20-Sensoren mit. Wie sieht die Verdrahtung mit mehreren Sensoren dieses Typs aus? Kein Problem, der DS18B20 kommuniziert über einen 1-Wire-Bus. Die Datenleitung ist auf einen einzigen Draht beschränkt und mehrere Sensoren lassen sich einfach in Reihe schalten. Es ist (fast) egal, wie viele Sensoren man verwenden möchte, es muss lediglich ein Widerstand von ca. 5kΩ (bei SAITE 4,7kΩ) zwischen Draht 2 und 3 vor dem ersten Thermofühler geschaltet werden. Der Widerstand und der erste (näher am GPIO gelegene) DS18B20 befinden sich bei SAITE auf einer Platine. Mit dieser Platine wird die Innentemperatur gemessen. Die Platine für die Außentemperatur folgt im Anschluss. Auf ihr ist nur der andere DS18B20 verlötet.

Lange Leitung? 1-Wire!

Was muss man tun, um herauszufinden, wie warm oder kalt es innerhalb und außerhalb von JACKY ist? Das ist ziemlich einfach. Zuerst muss man CHICK einmalig dazu bringen, die erforderlichen Treiber zu laden. Dazu wird die Datei /etc/modules um zwei Zeilen ergänzt. Mit dem Befehl sudo nano /etc/modules öffnet man mit root-Rechten die Datei im Editor nano. Folgende Zeilen werden ergänzt:

/etc/modules

w1-gpio
w1-therm

Danach muss man die Datei nur noch abspeichern und CHICK neu starten.

Jetzt sind alle über den 1-Wire-Bus an CHICK angeschlossenen DS18B20-Sensoren in dessen Dateistruktur als eigener Ordner im Verzeichnis /sys/bus/w1/devices aufgeführt. Jeder Sensor hat eine individuelle Kennung, über die er angesteuert und ausgelesen werden kann. Bei SAITE lauten die Kennung des Sensors auf der Platine für die Innentemperaturmessung 28-0000064d606f und für den Sensor auf der Platine für die Außentemperatur 28-0000064e44a7. Die Kennungen bilden die Namen des jeweiligen Ordners.

Hardcopy SAITE

Der Inhalt der beiden Ordner sieht folgendermaßen aus:

Hardcopy SAITE

Uns interessiert jeweils die Datei w1_slave, die zwei Zeilen mit den für uns wichtigen Daten enthält:

  1. Ist die Messung gültig YES oder NO?
  2. Die Temperatur in tausenstel Grad Celsius t=...
Hardcopy SAITE

Da beide Sensoren im obigen Beispiel nebeneinander lagen, lieferten sie auch recht ähnliche (gültige) Temperaturwerte, nämlich 17,312°C und 17,437°C.

1-Wire-Python

Schön und gut - jetzt können wir SAITE über die Kommandozeile in der Konsole auszulesen. Während des Flugs kann aber niemend Befehle eintippen. Wie bringt man CHICK also dazu selbständig die Temperatur zu messen? Und wie schafft CHICK es, sich die Temperaturdaten zu merken?

Alle Messungen, auch die von SAITE, werden in eine mySQL-Datenbank geschrieben. mySQL muss vorher auf CHICK installiert werden (Näheres hierzu auf den Seiten von CHICK). Mit dem folgenden Python-Code werden beide SAITE-Sensoren ausgelesen. Weil dieser Vorgang für beide Sensoren etwas länger als 1,5 Sekunden braucht, wird vor dem anschließenden Messdurchgang keine Warteschleife benötigt.

Hardcopy SAITE

Links die Ausgabe in Python. Die Endlosschleife wurde nach zehn Messungen unterbrochen. Pro Messung werden drei Zeilen ausgegeben:

  1. Die fortlaufende Nummer der Messung
  2. Eine Liste mit Wert und Gültigkeit für die Innentemperatur
  3. Eine Liste mit Wert und Gültigkeit für die Außentemperatur

Mit mehr als 1,5 Sekunden für jede Messung ist SAITE recht langsam, was der Auslesegeschwindigkeit des DS18B20 gesschuldet ist. Zwar ließe sich die Geschwindigkeit durch Herabsetzen der Auflösung von 12 Bit auf niedrigere Werte steigern (eine Verringerung um 1 Bit führt zur Verdopplung der Geschwindigkeit), allerdings ist im Treibermodul w1-therm eine Messung auf 750ms festgelegt,

Hardcopy SAITE

sodass die Herabsetzung der Auflösung nur zu ungenaueren Messungen aber nicht zu einer Geschwindigkeitszunahme führen würde.

Rechts ist der Eintrag in die Tabelle saite der mySQL-Datenbank zu sehen.

Trouble-Shooting

Falls Ihr Euch an die Anleitung gehalten habt, Euer Sensor aber trotzdem nicht im Verzeichnis /sys/bus/w1/devices auftaucht, könnte es daran liegen, dass Eure Raspian-Version so neu ist, dass sie bereits das Device-Tree-Model enthält. Findet mit uname -r Eure Kernel-Version heraus. Wenn sie 3.18.3 oder höher ist, müsst Ihr entweder Euren Code anpassen oder das Device-Tree-Model deaktivieren.

Die Deaktivierung könnt Ihr entweder in dem Advanced Options der raspi-config vornehmen oder Ihr fügt der Datei /boot/config.txt folgende Zeile hinzu:

device_tree=

Technische Daten und Links

BSP-Bezeichnung SAITE
Sensoren zur Außen- und Innen-Temperatur-Erfassung
Handelsname DS18B20
Hersteller ehemals Dallas Semiconductor (DS), jetzt Maxim Integrated
Messbereich
und -genauigkeit
-55°C bis +125°C
±0,5°C im Bereich -10°C bis +85°C
mech. Daten Abmessungen (Länge x Breite x Höhe):
Platine für die Innentemperatur: 38mm x 20mm x 18mm
Platine für die Außentemperatur: 55mm x 20mm x 17mm
Masse: 11,75g (beide Platinen incl. Kabel)
Acht SAITE wiegen weniger als eine Tafel Schokolade!
Vielen Dank an die Raphael-Apotheke, Starnberg für das Wiegen!
Preis 2 x DS18B20: € 2,00
Leiterbahnenplatine: € 1,19
Widerstand 4,7kΩ 0,25W: € 0,10
Steckverbindungen und Kabel: € 6,37
Links Datenblatt des DS18B20
Wikipedia zum 1-Wire-Bus
zurück
zurück