Selbstbau:

Vier-Kanal-Datenlogger


Features:

  • Aufzeichnung vier analoger Kanäle
  • Ein Kanal bereits mit Temperatursensor bestückt
  • Speichern als CSV-Datei
  • Import in Excel möglich
  • mit ATmega8 oder ATmega328P

Sich langsam veränderliche Parameter, etwa die der Temperatur oder die nachlassende Spannung einer Batterie, kommt man mit einem Datenlogger auf die Spur. Dieses Exemplar zeichnet bis zu vier Messwerte parallel auf und sichert sie in einem preiswerten EEPROM.

So sieht es aus: Daten in Excel

Mögliche Anwendungen sind vielfältig. Ob es die Temperatur im Gewächshaus ist oder die Wärmeentwicklung innerhalb der PA zu beobachten gilt, ein Datenlogger ist hier die richtige Wahl. Er misst autark – also ohne PC - analoge Spannungen (0-5V), digitalisiert sie und speichert den gewonnenen Zahlenwert in einem eigenen Speicher ab. Später, im Anschluss an die Mess- und Aufzeichnungsphase, übergibt der Datenlogger seine Information an den PC. Das Exemplar eines Datenloggers, das im folgenden vorgestellt wird, wurde mit Blick auf die Kosten entworfen: Es verzichtet bewusst auf kostspielige Extras wie LCD-Anzeige, Menüfunktionen, einstellbare Parameter und viele Knöpfe.

Wie bekannt, stehen vier Messkanäle zur Verfügung, die jeweils nach einer gewissen, einstellbaren Zeitintervall vom Datenlogger erfasst werden. Kanal Nummer vier ist bereits fest mit dem Temperaturfühler LM35 bestückt, da die Temperaturmessung eine häufige Anwendung darstellt. Die Kanäle eins bis drei stehen frei zur Verfügung, mit der Einschränkung, dass die daran angeschlossene Spannung Null bis 5 Volt betragen darf. Negative Spannungen sind nicht gestattet und können dem Mikroprozessor Schaden zufügen. Bei Beachtung diese einfachen Prämisse ist der Datenlogger (im folgenden kurz Logger genannt) für vielerlei Messungen einsetzbar: Zunächst sind Spannungen aller Art zu nennen. Parameter wie Luftfeuchtigkeit, Windstärke und dergleichen werden über entsprechende Sensoren erfasst und geloggt. Allen Messungen sollte gemeinsam sein, dass sie sich über mittlere bis lange Zeiträume verändern. Mittel- bzw. langfristig ist aber relativ. Der Logger misst und speichert jeweils nach einem einstellbarem Zeitintervall. Dessen Einstellung geschieht simpel über einige DIP-Schalter. Der Wert in Sekunden ergibt sich aus einem digital einzustellenden Basiswert (4 Bit mit den möglichen Werten von Null bis 15), der mit einem Multiplikator (2 Bit) na was wohl, natürlich multipliziert wird. Ein Beispiel: Der Basiswert sei auf drei und der Multiplikator auf 1 s eingestellt, dann beträgt der Messzyklus 3 Sekunden. Der längste Zeitraum zwischen zwei Messungen ergibt sich aus einem maximalen Basiswert von 15 und dem Multiplikator von 60 Sekunden, was einem Zeitraum von 15 Minuten zwischen den Messungen entspricht. Das kürzeste Messintervall beträgt 100 ms, also zehn Messungen je Sekunde.

Ansicht der DIP-Switches zur Einstellung u.a. des Zeitintervalls

Über DIP-Schalter sind weiterhin die zu messenden Kanäle einstellbar. Damit zeichnet der Logger nur die benötigten Messkanäle auf, das spart Platz im Speicher. Der ist nicht unendlich groß, besteht jedoch immerhin aus einem EEPROM mit 512 KBit, was 64 KB entspricht.

Rechnen wir einmal:

64 KB entsprechen 65536 Byte. Einige wenige Bytes werden zur „Verwaltung“ benötigt, es bleiben aber noch weit über 65500 Bytes. Rechnen wir der Einfachheit halber mit nur 64000 Bytes weiter. Bei vier Kanälen und einer Zykluszeit von 100 ms ist der Speicher schon nach etwa 26 Minuten Messzeit erschöpft (64000 Bytes / 4 Kanäle = 16000 Messungen / 10 (wg. 100ms) = 1600 Sek. / 60 = 26 Min). Das war der ungünstige Fall bei kürzestem Messintervall.

Nun eine andere Rechnung:

Die Zykluszeit sei 1 Minute, ein Kanal wird benötigt: 64000 Bytes = 64000 Messungen = 64000 Minuten Messdauer = 64000 / 60 = 1066 Min = 17 Stunden). Diese siebzehn Stunden erweitern wir auf maximal 266 Stunden - also auf etwa 11 Tage - sofern die Zeit zwischen den Messungen eine Viertelstunde beträgt.

Diese Beispiele zeigen, dass mit dem Logger allerhand Langzeitmessungen möglich sind, seien sie auch recht zeitraubend.

Daten aufbereiten

Nach den Messungen sollte die Aufbereitung der gewonnenen Daten auf dem PC möglichst einfach zu bewerkstelligen sein. Der Logger sendet seine Informationen dazu als Textdatei im CSV-Format an den PC. CSV ist in Wikipedia wie folgt beschrieben: „Das Dateiformat CSV beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfach strukturierter Daten. Die Dateiendung CSV ist eine Abkürzung für Comma-Separated Values (seltener Character Separated Values oder Colon Separated Values). In CSV-Dateien können Tabellen oder eine Liste unterschiedlich langer Listen abgebildet werden.“ Zitat Ende.

Der Vorteil der CSV-Textdatei ist, dass gängigen Tabellenkalkulationsprogramme wie Excel von Microsoft oder Calc aus dem kostenfreien und leistungsstarken OpenOffice-Paket (OpenOffice.org) CSV-Dateien unterstützen. Das Dateiformat ist dabei völlig von der PC-Hardware und dem Betriebssystem unabhängig: Ob Windows, Linux oder MacOS auf dem jeweiligen Rechner installiert ist, spielt dabei keine Rolle. Sogar ein kleiner PDA mit Windows CE an Board kann die Textdatei lesen und aufbereiten.

Der Import in ein Tabellenkalkulationsprogramm verspricht darüber hinaus weitere Vorteile: Aus den wenig aussagekräftigen Zahlenkolonnen entstehen in kurzer Zeit ansehnliche Grafiken, zum Beispiel Torten- und Balkendiagramme und vieles mehr. Zudem ist ein Tabellenkalkulationsprogramm unentbehrlich zur Aufbereitung der Messwerte der Kanäle 1-3, denn der Logger „weiß“ ja nicht, dass es sich um Luftfeuchtigkeit oder die Batteriespannung des Solarpanels handelt. Er gibt lediglich die Messwerte preis. Und die können mit Excel und Co. leicht in die entsprechenden Spannungen, Ströme, Leistungen oder was auch immer umgerechnet werden.

Wie genau kommen die Messwerte nun auf den PC? Nach Anschluss des Loggers an eine USB-Schnittstelle des PC wird unter Windows eine neue Hardware gemeldet. Unter ftdichip/FTDrivers sind die Treiber für verschiedenste Betriebssysteme kostenlos verfügbar. Nach kurzer Installation steht eine neue, virtuelle serielle Schnittstelle zur Kommunikation bereit. Zwischen Logger und PC läuft der Datenaustausch nun ab wie bei einer seriellen Schnittstelle, einem COM-Port. In den Abbildungen hat der virtuelle COM-Port die Bezeichnung COM9 erhalten.

Nun kommt ein Terminalprogramm ins Spiel: Ein Terminalprogramm empfängt Daten, die über eine reale oder virtuelle serielle Schnittstelle auf den PC gelangen – also auch die vom Logger. Tippt der Anwender auf der Tastatur, sendet das Programm diese Zeichen an den COM-Port und damit an den Logger. Der letzte Fall ist allerdings hier nicht wichtig. Interessant in diesem Zusammenhang ist, dass viele Terminalprogramme, z.B. das Hyperterm, das mit Windows geliefert wird, auch Dateien senden und empfangen kann. Letzteres ist wichtig, um die vom Logger kommenden Messwerte in einer Textdatei mit der Dateiendung CSV speichern zu können. Damit ist die Signalkette komplett: Vom Logger gelangen die Messwerte zunächst in das Terminalprogramm, das sie als Textdatei auf der Festplatte ablegt. Die wiederum wird nach Excel importiert und dort weiter verarbeitet. Die daraus entstandenen Grafiken können später z. B. der Öffentlichkeit auf einer Webseite zugänglich gemacht werden.

Im StandBy-Betrieb liefert der Logger laufend aktuelle Werte.

Die Funktion „Text aufzeichnen“ in Hyperterm ermöglicht das Speichern von Messwerten in eine Textdatei, die z.B. später in Excel importiert wird.

Bedienung des Loggers

Der besitzt zwei Taster, einer für RECORD (Aufnahme), der andere für PLAY (Ausgeben der Messwerte). Nach einmaliger Betätigung der Record-Taste bestätigt der Logger dies mit einem kurzen Piep aus dem Summer. Der Logger füllt nun den Speicher mit Messwerten, wie der DIP-Schalter es vorgibt. Wird der Play-Taster wiederum betätigt, bestätigen zwei kurze Piep das Ausschalten der Aufnahmefunktion. Also: Einmal Piep = eingeschaltet, zweimal Piep = ausgeschaltet.

Aufnahme

Aufnahmemodus: Record-Taste wurde gedrückt zum Start und einige Sekunden später für Stopp.

Wiedergabe

Play-Taste wurde betätigt: Der Logger spielt die Werte zum PC.

Und so funktioniert auch die Play-Funktion. Einmal drücken startet die Ausgabe der Messwerte an den PC, nochmaliges drücken der Play-Taste bricht die Funktion ab. Wieder wird mit einem Piep (eingeschaltet) oder zwei Piep (Funktion aus) jeder Tastendruck bestätigt. Das gezeigte Verfahren erspart eine LCD-Anzeige, die bei niedrigen Temperaturen, insbesondere im Winter, kritisch ist und einfrieren kann und seine Funktion möglicherweise für immer einstellt.

Aufbau der Schaltung

Zunächst ist die Platine zu bohren. Danach wird die USB-Buchse in die Platine eingepasst, ohne sie zu verlöten. Der IC FT232RL, welcher die Anbindung an den USB (Universellen Seriellen Bus) realisiert, ist als SMD verfügbar, lässt sich aber noch gut mit einem üblichen Lötkolben mit spitzer Lötspitze verlöten. Dabei kommt es nicht darauf an, jeden IC-Pin einzeln zu verlöten, mit etwas Entlötlitze wird überflüssiges Lötzinn nach der Lötung entfernt. Ein paar SMD-Bauelemente sollten niemanden vom Aufbau der Schaltung abhalten. Ist der IC auf der Platine, verbleiben nur wenige SMD-Widerstände und einen Kondensator. Der weitere Aufbau beschränkt sich auf konventionelle Bauteile. Bevor die an die Reihe kommen, sind einige Drahtbrücken zu verlegen. Die kleine Brücke unter den Prozessor nicht vergessen! IC’s bitte sockeln. Der Atmel MEGA8 Prozessor hat 28 Pins, wer keine passenden IC-Sockel hat, behilft sich mit einer 20-poligen und einer 8-poligen IC-Fassung, die prima hinter einander auf die Platine passen. Danach die weiteren Bauelemente bestücken.

Bestückungsplan

Der Bestückungsplan weist einige Drahtbrücken auf, z.B. unter und direkt neben dem Prozessor und eine kurze Brücke am SMD-IC.

Der 10-polige Programmiersockel (mit Atmel-Standard-Pinbelegung) neben dem DIP-Schalter ist nur zu bestücken, falls der Prozessor in der Schaltung programmiert wird. Platinen und programmierte Prozessoren gibt es unter [1] im Platinenservice. Der Summer ist von der Art, der bei Anlegen einer Spannung nur einen Klick von sich gibt. Er wird vom Prozessor mit einem Rechtecksignal zu einem Ton veranlasst. Sofern die Anzeige der USB-Aktivität von Interesse ist, setzt die beiden 2-mA-LED’s samt ihrer Vorwiderstände in die Platine Die LED’s flackern, wenn über USB Daten fließen. Das Gerät sollte für Einsätze im Außenbereich ein spritzwassergeschütztes Gehäuse erhalten. Die Spannungsversorgung kann aus einer 9-Volt-Batterie erfolgen, sofern kein Netzteil zur Verfügung steht. Wer statt des 7805 (Spannungsregler) einen Low-Drop-Regler für 5 Volt verwendet, kommt mit einer Versorgungsspannung von 6 Volt aus (vier Mignonzellen zu je 1,5 Volt oder 5 Mignon-Akkus zu je 1,2 V).

Daten vom Logger importieren, so geht's:

Bevor die Textdatei fertig für den Import in Excel ist, werden überflüssige Zeilen entfernt und Dezimalpunkte in Kommata ersetzt.


  1. Mit Terminalprogramm Textdatei unter der Bezeichnung „logger.txt“ speichern. Diese Datei enthält die Zeilen der Messungen.
  2. Datei in Wordpad öffnen – oder eine andere Textverarbeitung mit Ersetzen-Funktion.
  3. Überflüssige Zeilen ober- und unterhalb der Messwerte entfernen. Mit der Ersetzen-Funktion alle Punkte durch Kommata ersetzen. Das ist nötig, weil das deutsche Excel Dezimalzahlen nur mit Komma erkennt.
  4. Datei speichern und Wordpad verlassen.
  5. Excel starten
  6. Menü Datei, „Öffnen“ wählen. In der Dateibox den Dateityp „txt“ einstellen, logger.txt auswählen.
  7. Der Textkonvertierungs-Assistent startet, dort als Trennzeichen das Semikolon wählen.
  8. Die Messwerte erscheinen in der Tabelle. In der Spalte „A“ ist die laufende Nummer der Messung zu sehen. Die Daten können nun – soweit nötig - weiter bearbeitet oder daraus eine Grafik erzeugt werden.

Blick auf USB-B-Buchse, DIP-Schalter und Programmierstecker für den Prozessor.


OM Norbert, DG1KPN, hat den Datenlogger aufgebaut, ist damit sehr zufrieden und hat ein Bild seines Aufbaus beigelegt:

Er hat folgende Erfahrunge gemacht: Statt des klassischen Spannungsreglers uA7805 benutzte er einen Low-Drop-Regler vom Typ 2950. Im Betrieb zeigte sich folgender Effekt: Die Messergebnisse stimmten nicht mit der Realität überein, so lagen einmal zu tief, ein anderes Mal zu hoch. Es konnte nur an der Referenzspannung des Analog-Digital-Wandlers liegen. Abhilfe: Der Regler 2950 benötigt an seinem Ausgang einen Elko von 1..10µF, um korrekt zu funktionieren.

Weiterhin ist ihm aufgefallen, dass die möglichen Messzeiten länger sind, als im Text angegeben. Er hat das große EEPROM mit 64KB eingesetzt. An seiner Heizungsanlage hat er bereits über mehrere Tage gemessen, konnte neue Erkenntnisse gewinnen und ist von dem kleinen Logger begeistert.


Update 2018: Statt des Atmega8 nimmt man heute den ATmega328P, der dieselbe Pinbelegung aufweist, softwarekompatibel ist und über mehr Speicher verfügt. Thomas Zetsche hat sich die Mühe gemacht, eine kleinere, doppelseitige Platine zu layouten. Im Download-Bereich kann man die Eagle-Dateien laden. Es werden zwei Versionen geboten: Eine mit USB und eine mit einer RS232. Wer also noch einen alten Laptop mit RS232 hat... Für den ATmega328P wurde der Bascom-Code neu kompiliert und steht nun auch zum Download bereit.

Download von Dateien zu diesem Projekt

Schaltbild, Platinenlayout, beide Bascom-AVR-Sourcecodes, Hexdateien zum Brennen des Prozessors (für ATmega8 und ATmega328p) sowie andere nützliche Dateien stehen zum Download bereit. Und hier geht es zum Download.