Pages: [1] 2   Go Down
Author Topic: Daten Logger - ohne PC/ohne extra Hardware  (Read 3813 times)
0 Members and 1 Guest are viewing this topic.
Darmstadt, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 141
Forum rocks ;o)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich möchte Sensordaten mitloggen, ca. 10 Werte pro Messung, jeder Wert hat ein byte, 24 Stunden, Messungen im Abstand von 5min also mindestens 288 Werte pro Tag - ich könnte die Daten täglich auslesen und überschreiben, dazu möchte ich sie seriell über den PC auslesen, und später in eine Exeltabelle übernehmen.


Wie mache ich das am besten?
- Daten in den Eeprom schreiben?
- Wie lege ich das am besten im Programm an?
- Mit einzelnen Variablen-wie kann ich das machen ohne 288 Variablen einzeln zu deklarieren (in Basic hab ich da früher einfach "Sensorwert x" gemacht und x hochgezählt geht das in Arduino auch?)
- Oder besser ein Array (kenn ich mich nicht mit aus)?

Vielen Dank
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wär vielleicht das hier was für Dich...?
Logged

Darmstadt, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 141
Forum rocks ;o)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja den hab ich auch schon gesehen aber ich denke der interne Eeprom reicht mir aus, ich weiß nur nicht wie ich die ganzen Variablen deklarieren soll und wie ich am geschicktesten vorgehe. Ich könnte einfach immer einen Datensatz aus 10 Variablen abspeichern aber vielleicht gibts da ja was eleganteres? Den Eeprom bekomme ich wahrscheinlich mit der Eeprom Lib. beschrieben und ausgelesen, soweit bin ich bisher.
Logged

Bremen
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
Arduino!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du packst die Werte ins EEPROM, dort sind sie vor Stromausfall sicher. Hast dort Platz für 512 Bytes. Du könntest als erstes Byte einen Zähler anlegen, damit Du weißt, welche Position als nächstes beschrieben werden soll - praktisch nach Stromausfall. Nach dem Auslesen den Zähler einfach auf Null stellen, dann überschreibst Du automatisch. Die Library dazu ist eingebaut: http://arduino.cc/en/Reference/EEPROM
(einziges Problem meiner Idee: da der Zähler nur 1 Byte groß ist bist Du auf 256 Werte beschränkt und kannst das EEPROM nicht voll ausnutzen)
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo
Wenn Du 2 Byte für den Zähler nimmst kannst Du den ganzen Speicher ausnutzen. Du kannst das EEprom auch "inizialisieren" indem Du es nachdem Du die Meßwerte heruntergeladen hast mit einem Wert vollschreibst (0 oder 255) und dann weißt Du was leer ist und was schon verwendet.
 
Der ATmega328 hat 1024 Byte EEprom die du benutzen kannst und mit der Bibliothek EEPROM ansprechen kannst.

Grüße Uwe
Logged

Bremen
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
Arduino!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist eine gansz schlechte Idee, weil man dann den Wert 0 bzw. 255 nicht mehr speichern kann.
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Martin Gerken
Ich würde nicht so absolut die Idee verteufeln.
Es hängt davon ab ob man wirklich den vollen Werteraum braucht oder anstatt mit 256 Werten mit 255 Werten auskommt.
Das muß kimmi wissen und entscheiden.
Viele Grüße Uwe
Logged

germany, cologne
Offline Offline
Newbie
*
Karma: 0
Posts: 47
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo kimmi,

was Du vorhast, hab ich für meinen Temperaturlogger bereits gebaut.

Ich habe mich damals für einen zusätzlich EEPROM-Chip entschieden. Das einzubauen war einfach und erspart irgendwelche Sparsamkeiten beim Daten speichern. Aber das musst Du wissen.

Zum Thema Daten zwischen PC und Arduino austauschen habe ich hier schon mal was geschrieben:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1276463588/4#4

Ich habe mir eine Oberfläch in Visual C# programmiert. Das geht ziemlich gut.

Ein Problem auf das ich gestoßen bin ist, dass sämtliche libraries für den Arduino, die die Uhrzeit berechnen sehr unpräzise sind (mehrere Minuten pro Tag). Deshalb habe ich mich zusätzlich für einen DS1307 entschieden. Das ist ein IC, der eine Uhrzeit zurückliefert. Dafür gibt es ebenfalls eine library.

Vielleicht konnte ich Dir ein paar Tipps geben.
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo domspitze
Hattest Du keine Probleme mit der Zeit die das EEprom braucht um die Daten zu speichern?
Grüße Uwe
Logged

germany, cologne
Offline Offline
Newbie
*
Karma: 0
Posts: 47
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe,

ich versteh Dein Frage nicht so ganz.
Hattest Du keine Probleme mit der Zeit die das EEprom braucht um die Daten zu speichern?

Ich hab das hier benutzt.
http://www.arduino.cc/playground/Code/I2CEEPROM
Zwischen den Schreib- und Lesevorgängen müssen 5ms liegen.

Oder habe ich hier eine Feinheit in der Fragestellung übersehen??? Falls ja, sorry!

Logged

0
Offline Offline
Faraday Member
**
Karma: 19
Posts: 3418
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@kimmi: sobald Du das hinbekommen hast könntest Du danach (auf keine Fall vorher) auf die Idee kommen mal nachzuschauen wie schnell sich die Werte innerhalb 5 Minuten ändern. Ich würde vermuten, daß die Differenzen eher klein sind. Da würde es sich anbieten alle 12 Werte einen "Frame" zu speichern und die jeweils nächsten 11 Werte nur die Differenzen. Das sollte sich sehr gut komprimieren lassen.

Weiterhin hat das Teil ja wohl die ganze Zeit Strom --> warum die Daten nicht einfach im RAM halten? Davon ist noch dazu auch noch mehr da als EEProm.

Udo

Logged

Check out my experiments http://blog.blinkenlight.net

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Domspitze.
Ich verfolge einen Tread im italienischen Teil des Forums.
Der hat Probleme mit 100 Hz Analogdaten zu messen und abzuspeichern. Darum meine Frage.
Grüße Uwe
Logged

Darmstadt, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 141
Forum rocks ;o)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo, danke für die Beiträge, ich werde wohl eine Weile brauchen um das zu verarbeiten, ich bin da wie gesagt nicht so fit.

Ich habe auch schon daran gedacht die Daten einfach im Flsh zu behalten aber das Risiko das mir zwischendurch der Strom doch ausfällt war mir zu hoch aber 1024 byte sind echt wenig... vielleicht muss ich doch einen zusätzlichen Eeprom dranbauen, @ domspitze da wären weitere Infos zu dem Temperaturlogger gerne willkommen!
Logged

germany, cologne
Offline Offline
Newbie
*
Karma: 0
Posts: 47
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Udo Klein: Das mit dem RAM brächte immerhin schon 1KB mehr. Aber das ist auch nicht viel. Ein zweites Problem ist, dass sobald der Arduino Duemilanove (nur darüber kann ich reden) über USB angeschlossen wird,um die Daten an den PC zu schicken, er einen Reset auslöst. Egal, ob er noch eine externe Stromversorgung zusätzlich hat oder nicht. Das würde alle Daten im RAM löschen. Persönliche Erfahrung.
Den Reset lösst natürlich der USB-Port aus. Wahrscheinlich weil kurzfristig der Saft weg geht. USB-Power scheint hier über Externe zu gehen - das ist aber alles Vermutung von mir.

@kimmi: Was würde Dir helfen? Das Sketch schicken macht wenig Sinn, da das schlecht dokumentiert und mittlerweile echt lang ist. Also besser konkrete Fragen stellen.

Logged

Stuttgart
Offline Offline
God Member
*****
Karma: 13
Posts: 510
logic enrichments
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn ich mal ganz vorsichtig dazwischen funken darf...

Warum nicht gleich ein statisches Ram mit externem Adresszähler und Batterierpufferung verwenden ?
Schnell, langlebig beliebig oft beschreibbar. Und heutzutage für diese Speichermengen (32 - 512 MB) geradezu günstig.
« Last Edit: June 29, 2010, 02:38:58 pm by Realizer » Logged

Eine Kuh macht muuhh.
Viele Kuehe machen Muehe

Pages: [1] 2   Go Up
Jump to: