Hallo zusammen,
ich möchte die Auswertung meiner Messdaten (Temperaturwerte) mit dem
Arduino automatisieren. Dabei soll direkt nach der Messung über eine
bestimmte Zeit ein entsprechendes Diagramm erstellt werden.
Ich habe allerdings keine Idee, wie man sowas umsetzen kann. Hoffe ihr
könnt mir ein paar Anregungen geben.
Grüße
kogl
Wieso Arduino ? Nimm nen Pi, lass den die Messwerte erfassen und via
HTML visualisieren. Dazu muss der Pi nen Web Server betreiben und die
Daten z.B. per PHP dynamisch in HTML umwandeln. Darstellung dann auf
jedem Tablett oder PC im browser.
Wo möchtest Du anzeigen?
- auf einem (grafik-?) Display am µC?
- im Webbrowser
- am PC (der per USB/RS232/LAN oder sonstwas angeschlossen ist)
- Drucker, bekannte Visualisierungseinheit,...
Je nach Antwort stellen sich dann so fragen wie
- wer bedient das (automatisch, skalierbar, ...)
- Format (HTML, JPG, direkte Grafikbefehle, ..)
- ....
kogl schrieb:> Hallo zusammen,>> ich möchte die Auswertung meiner Messdaten (Temperaturwerte) mit dem> Arduino automatisieren. Dabei soll direkt nach der Messung über eine> bestimmte Zeit ein entsprechendes Diagramm erstellt werden.>> Ich habe allerdings keine Idee, wie man sowas umsetzen kann. Hoffe ihr> könnt mir ein paar Anregungen geben.>> Grüße>> kogl
Im einfachsten Fall besorge Dir einen SD card oder Data logging shield,
Probier die Arduino bereitgestellten SD Karten Demos aus, so dass Du
sicher bist, daß alles funktioniert.
Dann nimm das getestete Demo Programm und fange an die notwendigen
zusätzlichen Funktionen für Dein Interessengebiet einzufügen. (wieviel
Kanäle, Zeitintervall...)
In weniger als einer Stunde, besitzt Du dann ein Minimal Program welches
in einfachster Weise ohne "Glocken und Pfeifen" Analogwerte mißt, die
Werte im z.B CSV Excel Format speichert. Wenn Du mit dem Loggen fertig
bist, öffne die Sd-Datei im PC und arbeite nit den erfassten Daten im
Spreadsheet Deiner Wahl und fertig. So einfach ist das.
Achim S. schrieb:> - am PC (der per USB/RS232/LAN oder sonstwas angeschlossen ist)
Mein Arduino ist über ein USB-Kabel mit dem PC verbunden und kann die
Daten daher durch den Seriellen Monitor der Arduino IDE anzeigen lassen.
Aber wie lasse ich mir dadurch ein Diagramm erstellen?
Achim S. schrieb:> - wer bedient das (automatisch, skalierbar, ...)
Über einen Taster soll die Messung gestartet werden und dann nach
einstellbarer Zeit die Messdaten ausgewertet werden und ein Diagramm
entworfen werden.
Achim S. schrieb:> - Format (HTML, JPG, direkte Grafikbefehle, ..)
Am besten wäre direkt eine Bilddatei (JPG,PNG). Wenn das automatisch mit
Excel geht, wäre dies auch eine akzeptable Möglichkeit. Oder gibt es
vielleicht eine fertige Software für den Arduino, die so etwas kann?
Gerhard O. schrieb:> Im einfachsten Fall besorge Dir einen SD card oder Data logging shield,
Das habe ich mir auch schon überlegt. An dieser Lösungsvariante stört
mich allerdings, dass dies nicht wirklich automatisch abläuft und man
stattdessen die SD-Karte erst in den PC stecken muss und danach
"manuell" eine Excel-Datei erstellen muss. Hätte eben gerne alles
automatisch.
@kogl (Gast)
>Mein Arduino ist über ein USB-Kabel mit dem PC verbunden und kann die>Daten daher durch den Seriellen Monitor der Arduino IDE anzeigen lassen.>Aber wie lasse ich mir dadurch ein Diagramm erstellen?
Im einfachsten Fall als ASCII-Grafik im Terminal.
>Über einen Taster soll die Messung gestartet werden und dann nach>einstellbarer Zeit die Messdaten ausgewertet werden und ein Diagramm>entworfen werden.
Wenn es schön aussehen soll, braucht man Zusatzsoftware, welche die
Daten vom Arduino empfängt und darstellt. Das geht in Excel über ein
Makro, damit kann man die serielle Schnittstelle ansteuern.
>Am besten wäre direkt eine Bilddatei (JPG,PNG). Wenn das automatisch mit>Excel geht, wäre dies auch eine akzeptable Möglichkeit. Oder gibt es>vielleicht eine fertige Software für den Arduino, die so etwas kann?
Keine Ahnung.
kogl schrieb:> Dabei soll direkt nach der Messung über eine> bestimmte Zeit ein entsprechendes Diagramm erstellt werden.>> Ich habe allerdings keine Idee, wie man sowas umsetzen kann. Hoffe ihr> könnt mir ein paar Anregungen geben.
Zumindest eine Anregung hätte ich. Ich mach das folgendermaßen unter
Linux. Wie das unter was anderem geht müsstest du ggf. selbst
rausfriemeln:
Ich regele ein System und kann mir auf diese Weise recht komfortabel
Sprünge ansehen und mir davon z.B. 1 Sekunde mit 100 Samples ausgeben
lassen.
Ich stelle meine Messdaten in Echtzeit mit feedgnuplot dar. Das ist ein
frontend für gnuplot, mit welchem man streams plotten kann. Ich habe mir
damit eine Art Speicheroszilloskop mit single shot function gebaut, um
Sprungantworten aufzunehmen
Die Daten hole ich mir aus einer FIFO (siehe mkfifo), wo die Messdaten
auf der anderen Seite einlaufen. Das starte ich mit diesem script:
1
#!/bin/bash
2
3
tail-f ./fifo | feedgnuplot \
4
--lines\
5
--stream 0.01 \
6
--xlen 120 \
7
--dataid\
8
--extracmds"set yrange [-50:50];"
Man könnte die Daten auch direkt aus dem serial port holen, aber so hat
man bequem die möglichkeit, den stream zu steuern. Ich habe eine GUI mit
Processing (processing.org) gemacht, die mir den Zustand meines System
grafisch darstellt (und mit welchem ich auch den Arduino steuern kann).
Die einkommenden Daten werden also dargestellt und dann in die FIFO
geschrieben. Das kann ich per Klick an und aus schalten (einfach eine
Variable setzen und dann if-Abfrage). Außerdem kann ich mit Klick auf
einen anderen Knopf auch das Schreiben in die FIFO ein- und ausschlaten
aber zusätzlich einen counter setzen, der runtergezählt wird und im
Arduino den Sollwert ändern. Wenn er 0 ist, wird nichts mehr in die FIFO
geschrieben. Damit habe ich den single shot realisiert.
kogl schrieb:> Achim S. schrieb:>> - am PC (der per USB/RS232/LAN oder sonstwas angeschlossen ist)>> Mein Arduino ist über ein USB-Kabel mit dem PC verbunden und kann die> Daten daher durch den Seriellen Monitor der Arduino IDE anzeigen lassen.> Aber wie lasse ich mir dadurch ein Diagramm erstellen?
Statisch indem du die Daten mit nem eigenen Programm entgegennimmst, in
ne csv Datei packst und dann Excel öffnest.
Wenn das Live am Bildschirm vorbeiscrollen soll, könntest du dir da mit
C# was schnell zusammenhacken.
Aber wie immer: Viele Wege führen nach Rom. Man kann auch nen PWM
Channel für die Datenausgabe auf dem Oszi nutzen. Ist auch ein Diagramm.
Wenn man über längere Zeit Daten erfasst, also eine lange Liste als
ergebnis hat, wird in Excel (oder auch Calc) das warten auf das Diagramm
zur Geduldsprobe. Da hab ich gnuplot lieben gelernt, auch weil man ein
einmal gemachtes Template auf beliebige Log-Dateien anwenden kann.
Ich hatte zum Test mein Solardatenlogger im Sekundentakt aufzeichnen
lassen - Solarzelle U und I, Akku U und I, Temperatur, Zeitstempel. Die
Datei wurde schnell groß, bei einer Stunde (=3600) Datensätzen ging
Excel in die Knie, an einen ganzen 24h-Tag (=86400) Datensätze wäre da
nicht im Traum dran zu denken gewesen. Ok, das braucht man vielleicht
auch nicht - aber gnuplot macht innerhalb weniger Sekunden mit nur einem
Klick daraus eine hübsche Grafik. Auch per Batch aus einem Ordner voll
mit einem Monat Solar-Logs eine ganze Reihe Bildchen.