Datenlogger: Messen im Modellbau

Jeder Modellbauer, der Helis fliegt, stellt sich irgendwann die gleichen Fragen… Wie stark bricht die Drehzahl ein bei spontanem Vollpitch? Wie viel Strom wird im Schwebeflug benötigt? Hält der Akku in allen Flugphasen die Spannung? Wie heiß wird der Regler? Solche und ähnliche Fragen können mit einem Datenlogger beantwortet werden.

Einführung

Der Beitrag beschreibt den Aufbau eines Datenloggers zum Aufzeichnen von Spannungen von 0 V bis 25 V, Strömen von 0 A bis 128 A, Temperaturen von 0 °C bis 125 °C und Drehzahlen von 115 1/min bis 7.500.000 1/min. Der Datenlogger (nachfolgend auch „Minilogger“ genannt) stammt ursprünglich von Chris Benndorf und wurde von zahlreichen Mitgliedern des RC-Line-Forums weiterentwickelt.

Komponenten

Der Minilogger besteht wesentlich aus einem Microcontroller für die Messwertaufnahme und -verarbeitung, einem EEPROM zur Messwertspeicherung und einigen Sensoren zur Messwertaufnahme. Die Software des Microcontrollers, die sogenannte Firmware, steuert den Microcontroller.

Die Stromversorgung mit 5 V erfolgt über den Empfängerakku oder das BEC des Reglers. Der Minilogger kann über das Empfangssignal eines Kanals am Empfänger per Fernbedienung gesteuert werden.

Das Auslesen der Messwerte aus dem EEPROM und das Schreiben der Firmware in den Flash-Speicher und den EEPROM des Microcontrollers erfolgen über einen einfachen Programmer, welcher an eine serielle Schnittstelle des PCs angeschlossen wird.

Microcontroller

Der hier verwendete Microcontroller von Atmel hat einen 8-Bit-RISC-Prozessor, 2 kByte Flash-Speicher, 128 Byte RAM, ein 128 Byte EEPROM, UART- und I2C-Schnittstellen, zwei Timer und diverse A/D-Wandler.

Die Familie der 8-Bit-Microcontroller von Atmel werden auch AVR genannt und sind aufgrund ihres einfachen Aufbaus und ihrer leichten Programmierbarkeit weit verbreitet.

EEPROM

Ein EEPROM ist ein nicht-flüchtiger, elektronischer Speicherbaustein – hier mit einer Speicherkapazität von 64 kByte, welcher über I2C mit dem Microcontroller zum Lesen und Schreiben der Messwerte verbunden ist.

Sensoren

Für die Messungen von Strom und Spannung gilt, dass die Genauigkeit mit zunehmendem Messbereich abnimmt und umgekehrt. Der Messbereich der Spannung ist mit dem Datenlogger bei 0 V bis 25 V auf Ströme von 0 A bis 128 A begrenzt.

Spannung

Es können Spannungen mit einer Auflösung von 8 Bit (2^8 = 256 Schritte) , in diesem Fall von 0 V bis 25,6 V mit einer Genauigkeit von 0,1 V aufgezeichnet werden.

Der Messbereich für Spannungen ergibt sich aus dem Verhältnis der Widerstände R4 (1 kOhm) und R5 (10 kOhm) gemäß Schaltpan – 1:10 für 256 * 1/10 = 25,6 V. Ein Verhältnis von z. B. 1:5 ergäbe einen Messbereich von 0 V bis 256 * 1/5 = 12,8 V mit einer Genauigkeit von 12,8 V / 256 = 0,05 V.

Strom

Der Strom wird ebenfalls mit einer Auflösung von 8 Bit indirekt über den Spannungsabfall an einem möglichst konstanten, niederohmigen Widerstand (sogenannter Shunt) gemessen.

Der hier gewählte Shunt mit 0,001 Ohm erlaubt 128 mV / 1 mOhm = 128 A für den maximal messbaren Strom mit einer Genauigkeit von 128 A / 256 = 0,5 A. Ein Shunt mit 0,005 Ohm ergäbe 128 mV / 5 mOhm = 25,6 A als maximal messbaren Strom und 25,6 A / 256 = 0,1 A für die Genauigkeit.

Der Spannungsabfall am Shunt sollte 128 mV nicht überschreiten, d. h. der gewünschte, maximal messbare Strom sollte am Shunt maximal 128 mV abfallen lassen.

Die Herstellung eines solchen Shunts kann bestenfalls mit Widerstandsdraht, aber auch mit einem einfachen Kupferdraht erfolgen. Der spezfische Widerstand von Kupfer beträgt 0,0175 Ohm * mm² / m bei 20 °C. Ein Kupferdraht mit einem Durchmesser von 2,0 mm² mit einem gewünschten Widerstand von 0,001 Ohm hat eine Länge von (0,001 Ohm * 2,0 mm²) / 0,0175 Ohm ~ 0,1143 m = 11,43 cm. Der Nachteil von Kupfer ist, dass der spezifische Widerstand relativ stark von der Temperatur abhängig ist. Durch hohe Ströme, bedingt durch den relativ kleinen Durchmesser, wird das Kupfer erwärmt, wodurch sich der Widerstand erhöht und die Messung verfälscht wird. Der praktische Messbereich von Strömen liegt bei der Verwendung von Kupfer in dieser Größenordnung bei maximal 40 A bis 50 A.

Bei der Benutzung eines externen BEC kann es durch Masseschleifen zu Fehlmessungen beim Strom kommen. In so einem Fall das Massekabel der Stromversorgung vom Empfänger zum Minilogger getrennt werden.

Temperatur

Die Temperatur wird mit einem NTC-Widerstand (auch Heißleiter genannt) ermittelt. Solche Widerstände haben einen negativen Temperaturkoeffizienten, d. h. mit steigender Temperatur veringert sich ihr Widerstand. Sie ermöglichen so den Fluss von höheren Strömen. Der Messbereich mit dem hier verwendeten NTC liegt zwischen 0 °C und 125 °C.

Drehzahl

Die Messung der Drehzahl wird über einen CNY70-Reflexkoppler realisiert. Der CNY70 ist eine Kombination aus Emitter (IR-LED) und Detektor (Fototransistor). Der Fototransistor schaltet, wenn das (reflektierte) Infrarotlicht des Emitters detektiert wird. Der Reflektor (z. B. weißes Papier) sollte zwischen 3 mm und 6 mm vom Reflexkoppler entfernt sein. Das emitterte Infrarotlicht kann zur Kontrolle z. B. durch eine Handy-Kamera beobachtet werden. Der Abstand zwischen zwei Schaltungen bildet eine Periodendauer, mit welcher die Drehzahl berechnet werden kann.

Die Drehzahl wird mit einem der Timer im Microcontroller über die durchgeführten Takte während einer Periodendauer ermittelt. Der Microcontroller hat eine Taktfrequenz von 1 MHz. Durch einen internen Vorteiler (Prescale) von 2^3 = 8 wird die Taktfrequenz auf 1 MHz / 8 = 125.000 Hz (1 Hz = 1/s) verringert. Der Timer hat eine Größe von 16 Bit (2^16 = 65.536). Bei jedem Takt wird der Zähler des Timers um 1 erhöht. Es finden somit 125.000 Hz / 65.536 ~ 1,9073 1/s = 114,4409 1/min Überfläufe statt, d. h. der Timer erreicht 1,9073 mal in der Sekunde bzw. 114,4409 mal in der Minute den Wert von 65.535 und beginnt dann wieder bei 0. Der Abstand zwischen den Überläufen beträgt demnach 1 / 1,9073 s = 0,5243 s. Ein Takt hat eine Länge von 0,5243 s / 65.536 = 125.000 Hz = 8 Millionstel einer Sekunde.

Eine Drehzahl von z. B. 3.000 1/min enspricht 50 Hz. Die Periodendauer von 50 Hz beträgt 1 / 50 s = 0,02 s. In 0,02 s finden 65.536 / 0,5243 s * 0,02 s ~ 2.500 Takte statt. Eine Anzahl von 2.500 Takten entspricht einer Drehzahl von 125.000 Hz / 2.500 Takte = 50 Hz = 3000 1/min.

I2C

I2C ist ein synchroner serieller Zweidraht-Bus (eine Daten- und eine Taktleitung), welcher für die Kommunikation zwischen ICs über kleine Distanzen gut geeignet ist. Entwickelt wurde er Anfang der 80er Jahre von Philips. Aus Lizenzgründen heißt der I2C-Bus bei manchen Herstellern auch TWI (two wire interface).

In einem I2C-Bus gibt es mindestens einen Master und bis zu 128 Slaves. Der (oder die) Master sprechen die Slaves an; ein Slave kann nie selbständig Daten senden. Dazu übernimmt der Master, der Daten senden oder empfangen möchte, den Bus und gibt die 7-bit- bzw. 10-bit-Adresse des Slaves aus, mit dem er kommunizieren möchte. Nach der Adresse teilt der Master dem entsprechenden Slave mit, ob er Daten senden oder empfangen möchte. Danach werden die eigentlichen Daten (entweder vom Master oder Slave) auf den Bus gelegt. Hat der Master den Lese- oder Schreibvorgang abgeschlossen, so gibt dieser den Bus wieder frei. Sofern mehrere Master vorhanden sind, stellt ein Protokoll sicher, dass diese sich nicht gegenseitig stören.

Ein Java-Programm mit Quellcode als Demo zum Auslesen der Messwerte aus dem EEPROM über I2C befindet sich im Download-Bereich. Das Programm nutzt eine native Win32-Bibliothek (Port.dll), welche zur Kommunikation mit der seriellen Schnittstelle und zum Setzen der Pegel der einzelnen Leitungen benötigt wird. Die Funktionsaufrufe aus dem Java-Programm erfolgen über JNI (Java Native Interface).

Firmware

Der Quellcode der Firmware (Software, welche auf dem Microcontroller laufen soll) wurde in einem Basic-Dialekt geschrieben, welcher auf einem PC mit BASCOM-AVR von MCS Electronics kompiliert werden kann.

Quellcode

Vor dem Kompilieren müssen je nach verwendeter Hardware (anderes EEPROM, externer Operationsverstärker), Größe des EEPROM, gewünschter Kanalöffnung zum Starten des Logging und gewünschte Abtastrate im Quellcode der Firmware entsprechende Änderungen vorgenommen werden. Im Kopfbereich sowie im unteren Bereich des Quellcodes befinden sich die Konstanten zur Anpassung.

Compiler

Das Programm BASCOM-AVR ist eine Entwicklungsumgebung für AVRs und unterstützt in der kostenlosen Demo-Version eine Code-Größe bis maximal 4 kB, was für die hier genutzte Firmware völlig ausreicht.

Der Compiler von BASCOM-AVR erzeugt aus dem Quellcode der Firmware neben einigen anderen Dateien eine HEX- und eine EEP-Datei. Die HEX-Datei beinhaltet das kompilierte Programm für den Microcontroller.

Die EEP-Datei beinhaltet einige Einstellungen, z. B. die EEPROM-Größe des verwendeten EEPROMs, die Datensatzgröße, die Abtastrate und die minimale Kanalöffnung zum Starten einer Aufzeichnung. Diese Einstellungen werden von der eigentlichen Firmware beim Startvorgang ausgelesen.

Programmer

Die HEX- und die EEP-Datei müssen in den Flash- und EEPROM-Speicher des Microcontrollers übertragen werden. Dazu wird ein Programmer benutzt, welcher am PC mit einer passenden Software genutzt wird. Die Übertragung kann z. B. mit PonyProg 2000 von LancOS oder AVRDUDE und einem SI-Prog-Interface von LancOS erfolgen.

Für die Übertragung mit PonyProg 2000 wird im Hauptmenü unter Setup und dort unter Interface Setup die SI Prog API und der entsprechende COM-Port gewählt. Die Polaritäten der Leitungen Reset, SCKL, D-IN und D-OUT werden nicht invertiert. Das Ziel der Übertragung ist ein ATtiny26, welcher im Hauptmenü unter Device und dort unter AVR micro ausgewählt werden kann. Vor der Übertragung werden die Programm-(HEX-)Datei und die Daten-(EEP-)Datei geöffnet. Die Übertragung wird im Hauptmenü unter Command und dort mit Write All gestartet.

Die meisten PCMCIA-Karten mit serieller RS232-Schnittstelle für Notebooks sind für die sehr hardwarenahe Steuerung der Pegel an einzelnen Leitungen zum Auslesen und Beschreiben des EEProm nicht geeignet. Einige Karten können jedoch eine serielle Schnittstelle sehr gut abbilden und lassen sich so wie eine eingebaute Schnittstelle nutzen. Eine Empfehlung für eine solche Karte ist die EX-1350 von Exsys aus der Schweiz.

Bedienung

Das Servoanschlusskabel des Miniloggers für die Stromversorgung und Steuerung kommt an einen freien Kanal des Empfängers oder wird parallel zum Gaskanal angeschlossen. Ein einfacher 2-Stufen-Schalter kann für die Steuerung über einen freien Kanal verwendet werden. Bei Verwendung des Gaskanals gilt unterhalb der in der Firmware eingestellten Kanalöffnung der Kanal als „aus“, darüber als „an“.

Die folgenden Funktionen können durchgeführt werden:

  • Der Kanal steht auf „aus“, das Servoanschlusskabel wird angeschlossen.
    • Stand-by-Modus (LED blinkt: aus lang, an kurz)
  • Das Servoanschlusskabel ist angeschlossen, der Kanal wird von „aus“ auf „an“ geschaltet.
    • Aufzeichnung gestartet (LED blinkt: aus kurz, an lang)
  • Das Servoanschlusskabel ist angeschlossen, der Kanal wird von „an“ auf „aus“ geschaltet.
    • Aufzeichnung beendet und Stand-by-Modus
  • Der Kanal steht auf „an“, das Servoanschlusskabel wird angeschlossen.
    • Löschung aller Aufzeichnungen (LED leuchtet)

Noch ein paar Hinweise:

  • Eine blinkende LED mit gleich langen Phasen bedeutet, dass das EEPROM voll ist.
  • Eine Aufzeichnung muß ordentlich beendet werden. Wird während einer Aufzeichnung die Stromversorgung zum Minilogger getrennt, so geht die letzte Messung verloren und es entsteht bei der nächsten Aufzeichnung „Datenmüll“.
  • Der Programmer darf nicht angeschlossen sein, wenn eine Aufzeichnung durchgeführt wird. Dieser würde die I2C-Verbindung zwischen Microcontroller und EEPROM blockieren.
  • Zum Auslesen der Aufzeichnungen wird erst der Programmer und dann das Servoanschlusskabel angeschlossen.

Bilder

Die Bilder zeigen den Nachbau des Miniloggers und der Sensoren.

Downloads

 


Fehlt etwas? Ist etwas falsch? Kritik bitte hier als Kommentar hinterlassen.