Hallo zur Webseite von
DL1DMW





Datenlogger 2 - Datelogger ohne Löten:
Sechs analoge Kanäle und Sensoren nach Wahl

Vorgestellt wird ein flexibler Datenlogger, der ohne Löten auskommt. Lediglich zwei Platinen sind aufeinander zu stecken, bis zu sechs analoge Sensoren können angeschlossen werden. Die Konfiguration erfolgt bequem über ein Windows-Programm.

<- Bild 1: Die Hardware: Ein Arduino UNO (unten) und ein Ethernet-Shield mit SD-Karte (oben).


Bei der Entwicklung eines Datenloggers kann man es bequemer nicht haben: Entscheidet man sich für das System „Arduino“, entfallen umfangreiche Arbeiten zur Herstellung eines Platinenlayouts, sämtliche Lötarbeiten und ein großer Teil der Programmierarbeit. Der Aufwand, eine für den PC lesbare Datei auf eine SD-Karte zu schreiben, ist immens. Eine einfache Programmierumgebung und viele Programmbibliotheken erleichtern die Arbeit erheblich. Die Hardware besteht aus zwei Platinen – hier einem klassischen Arduino UNO – und einer fertigen Aufsteckplatine (Shield) mit einem SD-Kartenslot. Shields für SD-Karten als Speichermedium existieren in vielfältiger Auswahl, meist zusammen mit anderen Funktionen wie einem Ethernet-Anschluss. Und weil das Arduino Ethernet-Shield mit SD-Kartenanschluss zur Verfügung steht, wird es hier verwendet (Bild 1).


<- Bild 2: Die Arduino IDE zeigt das kleine Programm zur Initialisierung des EEPROMS.


Die Arduino-Entwicklungsumgebung (Arduino IDE) kommt mit zahlreichen Beispielprogrammen und Programmbibliotheken daher, auch mit einem Datenlogger mit SD-Karte. Es sind nur einige Zeilen Code, die zeigen, wie man analoge Werte in eine Datei auf die SD-Karte schreibt. Die SD-Karte entnimmt man später aus dem Kartenslot und schiebt sie in den Kartenleser am PC ein. Alternativ nutzt man einen Kartenleser, den man per USB an den PC koppelt. Die Datei ist nun im PC lesbar und kann beliebig verarbeitet werden. In der Regel werden die Daten in eine Tabellenkalkulation eingelesen – als Ergebnis stehen ansprechende und aussagekräftige Grafiken zur Verfügung. Als Tabellenkalkulationsprogramm kommt Microsoft Excel, Libre Office Calc oder Open Office Calc infrage.

<- Bild 3: Dieser Ausschnitt zeigt alle Anschlüsse, die man für Sensoren benötigt: 5V, 3,3V, GND und die analogen Eingänge A0 bis A5.


Das mit der Arduino-IDE gelieferte Beispielprogramm schreibt lediglich drei analoge Werte auf die SD-Karte. Dieser erweiterte Datenlogger übernimmt bis zu sechs Werte von analogen Sensoren auf die SD-Karte – und zwar wählen Sie, welche analogen Eingänge A0 bis A5 (sind auf der Arduino-Platine bezeichnet) Sie nutzen möchten. Entscheiden Sie sich z.B. für den Anschluss analoger Sensoren für die Eingänge A0, A4 und A5, so werden auch nur diese auf die SD-Karte geschrieben. Ein weiterer, wichtiger Parameter ist das Messintervall. Es bezeichnet die Zeit zwischen zwei Messungen. Sie können das Intervall auf die Millisekunde genau angeben. Möchten Sie beispielsweise die Entladekurve eines Kondensators dokumentieren, werden Sie ein anderes Messintervall wählen, als wenn es sich um die Entladekurve einer Bleigel-Batterie handelt. Auch die Aufheizzeit eines Spannungswandlers z.B. bei Überlast wird eine andere Zeit zwischen den Messungen benötigen als ein Protokoll, welches die Außentemperaturen über eine Woche oder einen Monat dokumentiert. Beim Ausprobieren dieses Datenloggers wurden Messintervalle zwischen 100 ms und 3600000 ms (1 Stunde) getestet. Damit sind recht kurze Ereignisse, aber auch sehr langwierige dokumentierbar.


<- Bild 4: Mit diesem kleinen Windows-Programm übertragen Sie Parameter wie die verwendeten analogen Eingänge und das Messintervall.


Für die Einstellung der Parameter müssen Sie keine Änderungen im Programm ausführen. Um sie auf den Arduino UNO zu übertragen, verfügt dieser über eine USB-Verbindung zum PC, die sich aus Sicht des PC als serielle Schnittstelle (COM-Port) darstellt. Genau diese USB-Verbindung wird auch zur Programmierung des Arduino UNO genutzt. Ein kleines Windows-Programm (Bild 4) wurde erstellt, um die Auswahl der benutzten analogen Eingänge A0 bis A5 einzustellen und das Messintervall festzulegen. Nach der Übertragung der Konfiguration an den Arduino UNO werden diese Daten im EEPROM des Prozessors gespeichert und stehen immer dann zur Verfügung, wenn der Arduino UNO Spannung erhält.

Wie Sie und mit welchen Sensoren Sie die analogen Eingänge beschalten, bleibt Ihnen überlassen: Nutzen Sie den Datenlogger für eine einmalige Anwendung, reicht ein fliegender Aufbau der Sensoren auf einem Steckbrett sicherlich aus. Für feste Installationen bietet es sich an, ein Shield für die Sensoren auf einer Lochrasterplatine zu realisieren und diese wiederum oben aufzustecken. Das ergibt eine mechanisch stabile Konstruktion. Beachten Sie bitte, dass die analoge Eingänge des Prozessors für Spannungen zwischen Null und fünf Volt ausgelegt sind – nicht mehr! Sollte ein Sensor eine höhere Spannung liefern, müssen Sie beispielsweise mit einem Spannungsteiler dafür sorgen, dass die Spannung im gültigen Bereich liegt. Als Sensoren kommen simple Spannungsteiler zur Messung einer Versorgungsspannung eines Gerätes infrage, Strom- und Temperaturmessungen, Lichtempfindliche Widerstände (LDR) zur Ermittlung der Umgebungshelligkeit und alle Sensoren mit analogem Spannungsausgang.


<- Bild 5: Verrichtet der Arduino seine Arbeit, lässt sich das im Seriellen Monitor der Arduino IDE verfolgen.


Die SD-Karte zeichnet die analogen Rohwerte der Sensoren in einer Art und Weise auf, die sich als CSV-Datei leicht in ein Tabellenkalkulationsprogramm einlesen lässt. Das bedeutet, dass eine Textdatei entsteht, deren Messwerte vom Kommata getrennt sind (engl.: csv = comma separated values). Hier wurde das kostenfreie LibreOffice Calc genutzt. Nach dem Öffnen der Datei Sensoren.txt von der SD-Karte mit Calc wird eine Tabelle erzeugt, deren Zellen zur Weiterverarbeitung zur Verfügung stehen. Eine Verarbeitung der Rohwerte wird in der Regel darauf hinauslaufen, diese in Spannungen, Lichtwerte oder Temperaturen oder was auch immer umzurechnen. Mit ein wenig Kenntnis über den Sensor, deren Umrechnung der Roh- in Messwerte und des Kalkulationsprogramms fällt das nicht schwer.


Initialisierung des Arduino UNO

Der Arduino UNO startet sein Tageswerk, sobald der Prozessor Spannung erhält. Da der Datenlogger jedoch zuerst die Parameter aus dem EEPROM ausliest, müssen diese sinnvolle Werte aufweisen. Das leistet das kleine Programm Datenlogger2mSD-Card_EEPROM_Init.ino (in Bild 2 zu sehen), das Sie u. a. Dateien in der Datei datenlogger2.zip unten zum Download finden. Laden Sie es auf den Arduino UNO und lassen es einmal laufen. Damit stehen im EEPROM erste Werte für die Benutzung der Eingänge A0 bis A5 bei einem Messintervall von 1000 ms. Anschließend laden Sie den Sketch Datalogger2mSD-Card.ino auf den UNO. Im Seriellen Monitor der Arduino IDE können Sie sein Treiben verfolgen (Bild 5). Um die Parameter zu verändern, verlassen Sie zunächst den Seriellen Monitor, um den COM-Port des UNO freizugeben. Starten Sie das Windows-Programm Datenlogger2Config.exe, wählen Ihre analogen Eingänge und ein geeignetes Messintervall. Mit Betätigen des Buttons Konfiguration übertragen werden diese über den COM-Port an den UNO gesendet. Nach dem Verlassen des Windows-Programms können Sie die Veränderungen wieder im Seriellen Monitor verfolgen.


<- Bild 6: Mit beispielsweise LibreOffice Calc importiert man die Datei Sensoren.txt einfach durch öffnen im Dateimenü. Hier sieht man die Spaltenüberschriften.


Anwendungsfall Temperaturmessungen

Der TC1047A ist ein winziger Temperatursensor für den Betriebsspannungsbereich von 2,5 bis 5,5 Volt. Die Ausgangsspannung berechnet sich mit Vout = 10 mV je Grad Celsius + 500 mV. Wir rechnen:

Spannung (am analogen Eingang in Volt) = Vcc / 1024 * gemessener Rohwert

Spannung = 5 Volt / 1024 * Rohwert

Celsius = (Spannung / 0.01) – 50.0

Dies kann man nun in die Zellen der Tabellenkalkulation einfügen und mit einer Formel die Temperatur in Celsius berechnen. Aus der Spalte Temperatur schließlich lässt sich ein schickes Diagramm berechnen. Bei der Spannungsversorgung der Sensoren ist deren maximale Betriebsspannung zu beachten. Der TC1047A ist für den Betrieb an 5 Volt geeignet, der TC1046 arbeitet mit 3,3 (toleriert laut Datenblatt jedoch 5 Volt).

Bild 7: Umrechnung eines Temperatursensors: Links die Rohwerte, daneben die berechneten Temperaturwerte und die anschauliche Grafik aus 600 Messwerten.


Da der Arduino UNO über eine 3,3 Volt-Ausgang verfügt, den man gering belasten darf, versorgt man 3,3-Volt-Sensoren über diesen Ausgang (Bild 3) und berücksichtigt das bei der Umrechnung.

Datei datenlogger2.zip laden






Mehr Zeugs
  • Schaun mer mal
  • Moin
  • Bast scho

Hier gibt es was zu lesen

Adresse etc.

  • Op: Michael, DL1DMW
  • ITU Region 1, Zone 14, DL, JO41CO
  • Bad Sassendorf
  • NRW / Germany