Messwerterfassung mit dem Arduino und dem "Data

Messwerterfassung mit dem Arduino und dem "Data
Messwerterfassung mit dem Arduino und dem "Data logging shield"
Mai 2011
(Data logging shield von Adafruit: http://www.ladyada.net/make/logshield )
Kauft man sich zu seinem arduino noch ein Data-logging-shield für etwa
18 Euro dazu, so hat man ein Messwert-Erfassungssystem. Nach etwas
Lötarbeit und dem Download zweier Bibliotheken kann es losgehen: Es
stehen bis zu 6 Kanäle zur Verfügung. Die Daten werden auf eine SDKarte in eine csv-Datei geschrieben, so dass man die Daten mit excel
auswerten kann. Bei Verwendung eines Kanals sind etwa 1000
Messungen pro Sekunde möglich, bei Verwendung von allen 6 Kanälen
etwa 250 Messungen pro Sekunde.
Hier werden die Ergebnisse von durchgeführten Testmessungen
vorgestellt, um die Qualität des Mess-Systems beurteilen zu können. Die
Signale wurden zum Großteil vom "Power-Cassy" der Firma LD-Didaktik
erzeugt.
Die Messungen mit dem arduino sind nicht perfekt, aber – wie ich finde – doch erstaunlich gut und brauchbar.
Eigenschaften des Systems:

6 Kanäle

Messgrößen: jeweils (positive) Spannung von 0V bis 5V über GND (gemeinsame Masse),


mit geeigneten Sensoren ist damit z.B. möglich:
o
direkt: Spannung von einer Solarzelle oder von einem Peltier-Element oder von einem kleinen Generator (mit Kondensator geglättet)
o
Potentiometer (Winkel, Höhe, z.B. Wasserhöhe)
o
LDR (Helligkeit, z.B. einer Glühlampe: 100Hz-Signal)
o
NTC (Temperatur)
o
Ultraschallsensor „Ping“ (Entfernung)
o
Infrarotsensor (Entfernung)
o
Magnetfeldsensor (Magnetfeldstärke)
o
Nunchuck der Spielkonsole „Wii“ (Beschleunigung, Neigung)
o
Drucksensor (Druck)
o
Spannung an einem Widerstand als Stromstärkesensor (Stromstärke)
o
Sound-Sensor (Lautstärke), siehe ebay: „arduino sound sensor“
Messfrequenz:
o 1 Kanal: bis etwa 1000 Hz
o 4 Kanäle: bis etwa 400 Hz
o 6 Kanäle: bis etwa 250 Hz
o als Messintervall sind auch beliebige Zeiten von z.B. 4ms bis z.B. 1 Stunde möglich (auch länger)
beschränkt man sich auf 4 Kanäle, kann auch die Uhrzeit und das Datum jedes Messwertes gespeichert
werden
(Batterie-gepufferte Real-Time-Clock)




Daten werden auf eine SD-Karte geschrieben (z.B. 4 GB) (in eine "Comma-Separated Values"-Datei: .csv)
Auswertung mit Excel (für das Diagramm sind bei excel 2007 maximal 32 000 Werte pro Spalte möglich)
gemessen werden kann so lange, bis die Batterie des arduino leer wird (z.B. 24 Stunden), bei Anschluss an
einen Trafo auch 50 Tage (dann läuft millis() über)
Kosten:
o arduino uno:
25 Euro
(oder arduino duemilanove mit 328-chip)
o data logging shield:
18 Euro
(Bausatz, z.B. bei watterott.com)
o SD-Karte, z.B.
10 Euro
Auswertung mit Excel 2007:
 Menu: "Daten"
 "externe Daten abrufen"
 "Aus Text" -> csv-Datei auf der SD-Karte auswählen und importieren
 "Datentyp Getrennt"
 "Trennzeichen Komma" -> "Fertig stellen", "OK"
 Spalten markieren, Einfügen-Menu, Punkt (XY)-Diagramm, also: Werte über millis
Test-Messungen
A) Der Basis-sketch, mit millis (∆t = 1ms)
// schreibt etwa jede Millisekunde einen Wert in die Datei
#include <SdFat.h>
#include <Wire.h>
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
void setup(void)
{
card.init();
volume.init(card);
root.openRoot(volume);
char name[] = "LOGGER00.CSV";
// Hier wird eine neue csv-Datei angelegt, durchnummeriert von 00 bis 99
for (uint8_t i = 0; i < 100; i++) {
name[6] = i/10 + '0';
name[7] = i%10 + '0';
if (file.open(root, name, O_CREAT | O_EXCL | O_WRITE)) break;
}
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop(void)
{
for(int kk=0;kk<4000;kk++)
{
file.print(millis());
file.print(',');
file.println(analogRead(2));
//delay(1);
}
file.println("sync");
digitalWrite(3, HIGH);
file.sync();
digitalWrite(3, LOW);
//
//
//
//
Anzahl der vergangenen Millisekunden seit Start des arduino
das Komma trennt die Werte
println beendet die Zeile
delay nach Bedarf
// "sync" schreibt die Werte fest auf die Karte
}
Zum Starten der Messung wird der Reset-Taster des data logging shields gedrückt, zum Beenden wird einfach die SDKarte herausgezogen.
Sägezahnspannung (10 Hz, von 0,5V bis 4,5V):
Sägezahnspannung (10 Hz, von 0,5V bis 4,5V):
Sägezahnspannung (100 Hz, von 0,5V bis 4,5V):
Sägezahnspannung (100 Hz, von 0,5V bis 4,5V):
sinusförmige Spannung (50 Hz, Amplitude 2V, Mitte 2.5V):
sinusförmige Spannung (50 Hz, Amplitude 2V, Mitte 2.5V):
B) Der Basis-sketch, ohne millis (∆t = 0,55ms)
in der for-Schleife nur: file.println(analogRead(2));
In excel wird dann ein Liniendiagramm anstelle des Punkt (XY)-Diagramms verwendet. Eine direkte Zeitinformation
hat man dann nicht.
sinusförmige Spannung (50 Hz, Amplitude 2V, Mitte 2.5V):
etwa 36 Punkte in 20ms, also etwa ∆t = 0,55 ms, entspricht 1800 Hz
C) Der Basis-sketch, mit millis und vier Werten (∆t = 2,5ms)
in der for-Schleife steht jetzt:
file.print(millis());
file.print(',');
file.print(analogRead(0));
file.print(',');
file.print(analogRead(1));
file.print(',');
file.print(analogRead(2));
file.print(',');
file.println(analogRead(3));
1: Helligkeit (Glühbirne, also 100 Hz)
2: 5V
3: von Cassy (sin mit 50 Hz)
4: 0V
1: Helligkeit (Glühbirne, also 100 Hz)
2: 5V
3: von Cassy (sin mit 50 Hz)
4: 0V
1: Helligkeit (Glühbirne, also 100 Hz)
2: 5V
3: von Cassy (sin mit 50 Hz)
4: 0V
etwa 24 Punkte in 60ms, also∆ t = 2,5 ms, entspricht 400 Hz
D) Der Basis-sketch, ohne millis und vier Werten (∆t = 2ms)
wieder Liniendiagramm in excel
1: Helligkeit (Glühbirne, also 100 Hz)
2: 5V
3: von Cassy (sin mit 50 Hz)
4: 0V
1: Helligkeit (Glühbirne, also 100 Hz)
2: 5V
3: von Cassy (sin mit 50 Hz)
4: 0V
etwa 30 Punkte in 60ms, also ∆t = 2 ms, entspricht 500 H
E) Der Basis-sketch, mit millis und sync nach jeder Messung (∆t = 15ms)
file.print(millis());
file.print(',');
file.println(analogRead(2));
file.sync();
sinusförmige Spannung (10 Hz, Amplitude 2V, Mitte 2.5V):
sinusförmige Spannung (10 Hz, Amplitude 2V, Mitte 2.5V):
etwa 65 Punkte in 1 Sekunde, also etwa 65 Hz, dann gilt etwa: ∆t = 15 ms
Beachte:
Man muss nach einer gewissen Anzahl von Messungen eine Pause der sync-Schleife einbauen, um in dieser Pause die
SD-Karte herauszuziehen! Sonst wird keine csv-Datei gespeichert.
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising