901
31.3
Messreihen aufzeichnen
#7: Die Funktion show() wird in einem eigenen Thread aufgerufen. Denn ihre Ausführung
wird wegen der Endlosrekursion nie beendet und würde sonst den Hauptprozess blockie-
ren.
31.3 Messreihen aufzeichnen
Automatisiertes Messen mit dem Computer ist vor allem dann sinnvoll, wenn viele Mess-
werte über einen längeren Zeitraum aufgenommen werden sollen. In diesem Projekt ent-
wickeln Sie ein Programm, das in regelmäßigen Abständen die Temperatur misst, die Daten
in einer CSV-Datei speichert und zusätzlich noch auf dem Bildschirm ausgibt. Die Abkür-
zung CSV steht für comma separated values. In einer CSV-Datei werden Daten gespeichert,
die man mit einem Tabellenkalkulationsprogramm darstellen und verarbeiten möchte.
Zwei Werte, die in benachbarten Zellen der Kalkulationstabelle stehen sollen, werden durch
ein bestimmtes Symbol getrennt. In Deutschland verwendet man als Trennsymbol nicht das
Komma, sondern das Semikolon, weil das Komma schon in Dezimalbrüchen verwendet
wird.
Zu Beginn des Programmlaufs kann der Benutzer die Rahmenbedingungen der Messung
bestimmen. Hier ein Beispieldialog.
Sensoren für digitale Multimeter
Mit einem digitalen Multimeter können Sie Spannung, Stromstärke und Widerstand mes-
sen. Sie können deshalb beliebige Sensoren, die ein analoges elektrisches Signal liefern, mit
dem DMM auslesen.
Zum Beispiel liefert ein Thermoelement eine Spannung, die von der Temperatur abhängt.
Ein Thermoelement besteht aus zwei unterschiedlichen Metallen, die an einer Stelle
zusammengelötet sind. Ein Typ-K-Thermoelement (erhältlich ab etwa fünf Euro) hat an
der einen Seite eine Legierung aus Nickel und Chrom und an der anderen Seite reines
Nickel. Der Vorteil dieses Sensors ist, dass er zur Messung höherer Temperaturen verwen-
det werden kann (etwa bis 1300 °C). Das Typ-K-Thermoelement liefert Spannungen zwi-
schen –6,458 mV bei –270 °C und 52,410 mV bei 1300 °C mit einer Empfindlichkeit von
etwa 40 V/°C. Damit können Sie z.B. die Temperatur in einer Kerzenflamme messen.
Mit einem Fotowiderstand (LDR = Light Dependent Resistor) können Sie über den elektri-
schen Widerstand die Helligkeit messen.
Wie lange soll gemessen werden?
Sekunden: 600
In welchen Zeitabständen?
Sekunden: 30
0 Sekunden 72.3 °C
30 Sekunden 71.0 °C
60 Sekunden 68.2 °C
90 Sekunden 66.2 °C
...
Kapitel 31
Messdaten verarbeiten
902
Die Messwerte werden schön formatiert auf den Bildschirm geschrieben. Gleichzeitig wer-
den sie auch in einer CSV-Datei gespeichert. Die kann später in eine Kalkulationstabelle
importiert werden.
Abb. 31.7: Die importierte CSV-Datei wird als Tabelle dargestellt, die mit dem
Tabellenkalkulationstool als Diagramm visualisiert werden kann.
Skript:
Hinweis
Bei Open Office geht der Import der CSV-Datei so:
Wählen Sie den Befehl DATEIFFNEN.
Suchen Sie die CSV-Datei, wählen Sie sie aus und klicken Sie unten auf die Schaltflä-
che Ö
FFNEN.
Es öffnet sich eine Dialogbox zum Textimport. Stellen Sie als Sprache Englisch ein,
damit die Punkte in Dezimalbrüchen als Komma interpretiert werden. (Wenn als
Sprache Deutsch eingestellt wäre, würde das Programm gar nicht verstehen, dass es
sich z.B. bei
23.3 um eine Zahl handelt.)
Achten Sie darauf, dass als Trennoption Semikolon eingestellt ist und in der Checkbox
vor Erweiterte Zahlenerkennung ein Haken ist.
Klicken Sie oben rechts auf die Schaltfläche OK.
from dmm import get_digits
from time import sleep
f = open('daten.csv', mode='w') #1
t = 0
print('Wie lange soll gemessen werden?')
max_time = int(input('Sekunden: '))
903
31.3
Messreihen aufzeichnen
Erläuterung:
#1: Eine Text-Datei mit dem Namen daten.csv wird zum Schreiben geöffnet. Sie ist im
gleichen Verzeichnis wie das Programm. Wenn eine Datei mit diesem Namen existiert, wird
ihr Inhalt komplett gelöscht. Gibt es die Datei noch nicht, wird sie neu angelegt.
#2: In die Datei wird ein Text geschrieben, der die obersten zwei Zellen der Tabelle
beschreibt. Das sind die Überschriften der Tabellenspalten. Die beiden Zelleninhalte sind
durch ein Semikolon (
;) getrennt. Die Escape-Sequenz \n bewirkt den Zeilenumbruch.
#3: An das Ende der Datei wird eine Zeile mit Daten (Zeit und Temperatur) geschrieben.
Diese Textzeile beschreibt zwei Zellen der Tabelle. Die Abbildung erklärt die Formatierung
an einem Beispiel.
#4: Hier werden die gleichen Daten als Textzeile auf dem Bildschirm ausgegeben. Dafür
wird eine ganz andere Formatierung benötigt.
print('In welchen Zeitabständen?')
dt = int(input('Sekunden: '))
f.write('Zeit (s); Temperatur (°C)\n') #2
while t < max_time:
n = get_digits()
temp = (n/10 - 100)/0.39
f.write(' %i;%.1f;\n' % (t, temp)) #3
print(' %4i Sekunden %5.1f °C ' % (t, temp)) #4
sleep(dt)
t += dt
f.close() #5
71.02345
30;71.0;\n
%i
%.1f
ganze Zahl,
beliebige Länge
Gleitpunktzahl, beliebig viele Stellen,
eine Stelle hinter dem Punkt
30
t
temp
71.02345
%4i
%5.1f
ganze Zahl
rechtsbündig in 4 Stellen
Gleitpunktzahl rechtsbündig in insgesamt 5 Stellen,
eine Stelle hinter dem Punkt
30
t
temp
30 Sekunden 71.0°C

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.