Forum: Mikrocontroller und Digitale Elektronik Möglichst stromsparend auf uSD Karte loggen


von Hauke Haien (Gast)


Lesenswert?

Moin,

Ich möchte Daten (16bit Integer Zahlen) einigermaßen hochfrequent 
(16..32..64Hz, gerne auch öfter) per I2C einlesen und auf eine SD Karte 
Schreiben.

Grundsätzlich kein großes Problem, jedoch soll das ganze auch 
einigermaßen Stromsparend werden, am liebsten würde ich mit einem 
18650er Akku einige Tage durchmessen. So lange wie möglich eben.

Es gibt eine große Auswahl an fertigen Boards mit AVR oder gar ARM 
Prozessor + uSD Sockel, jedoch finden sich kaum Informationen zum 
ungefähren Energiebedarf, schon garnicht bei Benutzung der einer SD 
Karte.

http://www.exp-tech.de/adafruit-feather-32u4-adalogger

http://www.exp-tech.de/adafruit-feather-m0-adalogger

http://www.chip45.com/categories/avr_mikrocontroller_module_boards_sd-karte.php

http://pjrc.com/teensy/index.html

uva.

Hat hier jemand Erfahrung mit solchen Boards oder wenigstens dem 
Energiebedarf einer uSD Karte?

Ein eigenes Layout käme grundsätzlich auch in Frage, aber wenn man sowas 
für 20 oder 30€ kaufen kann...

Vielen Dank, ich bin gespannt!

Hauke

von schnarchnase (Gast)


Lesenswert?

Hauke Haien schrieb:
> am liebsten würde ich mit einem
> 18650er Akku einige Tage durchmessen.

Wenn alles ständig wach bleibt wirds wohl schwierig.
 Besser Controller mit 13,32,64,gern auch öfter, Hz aufwecken und Daten 
im RAM sammeln.
Wenn RAM voll, SD-Karte wecken, Daten schreiben und alle weiterschlafen 
lassen.

von Hauke Haien (Gast)


Lesenswert?

Danke, den Gedanken hatte ich auch schon.
Insgesamt habe ich noch keine Erfahrung mit SD Karten am 
Mikrocontroller. Weiss jemand, mit welchen Zeiträumen man für das 
Schreiben einiger Bytes oder auch Kbytes aus einem Buffer rechnen muss? 
Also eher uS oder ms? Angenommen ich habe einen AVR mit 1, 4 oder 8 MHz?
Hängt das nur vom SPI Clock ab?

Sorry, ich versuche mir gerade etwas Wissen zusammen zu picken...

von Peter C. (peter_c49)


Lesenswert?

Hallo Hauke,

fast schon ein 99% passendendes Board welches auch gut im Stromverbrauch 
ist wäre das MSP-EXP430FR5994.
für ca 15€ ist da sogar eine 8G SD Karte mit dabei, auch ein kleiner 
SuperCap.
Die Demo-Apps decken deine Anwedung auch ab.
http://www.ti.com/tool/msp-exp430fr5994
Der interessanteste part ist das FRAM, erst zyklisch ins FRAM 
schreiben....und wenn der FRAM buffer genügend gross ist mal die SD 
anmachen und dort ablegen.
Kenne nichts was weniger Strom verbraucht und ohne selbst zu löten bei 
dem Preis auskommt.

mfG
Peter ;-)

von Hauke Haien (Gast)


Lesenswert?

Danke, Peter.
Den MSP430 hatte ich garnicht mehr auf dem Schirm.
Leider finde ich keine Abmessungen dazu, am liebsten wäre mir aber ein 
schmales, längliches Layout wie die meisten von mir verlinkten Boards.

von S. Landolt (Gast)


Lesenswert?

Vermutlich ist es eher die Karte, die den Unterschied im Stromverbrauch 
ausmacht; vor Jahren fand ich bei Messungen an normalen SDCs Werte 
zwischen 35...90 mA, dazu kommen noch die beim Schreiben recht 
unterschiedlichen Verzögerungen.

von holger (Gast)


Lesenswert?

>Weiss jemand, mit welchen Zeiträumen man für das
>Schreiben einiger Bytes oder auch Kbytes aus einem Buffer rechnen muss?

Geschrieben werden kann immer nur mindestens ein ganzer Sektor (512Byte)
oder mehre Sektoren.

>Also eher uS oder ms?

Millisekunden. Ich habe da gelegentlich schon mal 300ms Peak gemessen.
Die Zeit ist bei allen meine Karten unterschiedlich.

>Angenommen ich habe einen AVR mit 1, 4 oder 8 MHz?
>Hängt das nur vom SPI Clock ab?

Nein, dann wären alle SD Karten ja gleich schnell.
Steig besser auf einen SPI-Flash um. Da sind wenigstens
min.-max. Zeiten fürs Schreiben im Datenblatt.

von Hauke Haien (Gast)


Lesenswert?

Hm, bei 64Hz kommen da über ein paar Tage ziemliche Datenmengen 
zusammen. Deshalb wünsche ich mir die sd Karte, die man schnell im PC 
auslesen kann.
Mein Plan war, einfach die Startzeit der Messung zu loggen und danach 
die Sensorabfrage  per Timer interrupt zu machen. Nun frag ich mich, wie 
sich das wohl mit variierenden Schreibzeiten verträgt. Und wie macht man 
das, wenn man die Daten buffert?

von Stefan F. (Gast)


Lesenswert?

Du musst die Daten ohnehin im RAM sammeln und dann Blockweise auf die SD 
Karte schreiben. Ich meine, ein Block hat 512 Bytes, fall ich mich da 
richtig erinnere.

Solange du nicht auf die Karte zugreifst und sie nicht taktest, 
verbraucht sie nur wenig Strom. Notfalls kannst du sogar die 
Stromversorgung ganz unterbrechen, allerdings musst du sie dann bei 
jedem Zugriff neu initialisieren.

> Mein Plan war, einfach die Startzeit der Messung zu loggen
Und wo kommt die Uhrzeit her?

von eagle user (Gast)


Lesenswert?

holger schrieb:

> Steig besser auf einen SPI-Flash um. Da sind wenigstens
> min.-max. Zeiten fürs Schreiben im Datenblatt.

+1
Der MX25L25735F z.B. hat 32MB, sollte also für 3 Tage reichen, schreibt 
immer 256 Byte auf einmal und braucht dafür max. 1.5ms und 20mA. Die 
restliche Zeit braucht er max. 50uA oder optional 20uA.

Am PC hast ja Strom ohne Ende und der Akku muss wieder geladen werden. 
Bei der Gelegenheit kannst die Daten auf eine SD-Karte kopieren. Evt. 
kann man sie auch per Netzwerk übertragen?

von Wolle G. (wolleg)


Lesenswert?

Stefan U. schrieb:
>> Mein Plan war, einfach die Startzeit der Messung zu loggen
> Und wo kommt die Uhrzeit her?
Ganz einfach. z.B. : Es wird ein Uhrenschaltkreis, z.B. DS32C35, 
installiert, welcher von einer Knopfzelle gepuffert, mitläuft.
Im Prinzip alles schon fertig. Nur nicht auf absolut niedrigen 
Stromverbrauch getrimmt und die Verwendung von SDHC-Karten ist bei mir 
auch nicht möglich. (nur SD-Karte bis 2GB)
Für ein transportables EKG-gerät läuft bei mir ein MSP430F1610.
Alle 5ms werden 4 Spannungswerte gemessen, auf einer graph. 
Flüssigkristallanzeige als Kurve visualisiert und in einem Feld 
gesammelt. Nach 512Bytes (entspricht 1 Sektor) werden die Daten  über 
SPI auf die SD-Karte geschoben. (es gibt auch schnellere Protokolle, 
aber keine Ahnung davon)
Die Karte wird am PC ausgelesen, um die Daten zu bewerten.
Ähnliche Projekte sind Temperatur-, Feuchte- und Druckmessungen mit 
Abtastzeiten im Sekundenbereich.
kein Wochenendprojekt!!

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich habe bisher noch keine SDHC Karten ausprobiert. Was ist denn da 
anders, als bei SD Karten? Sind die nicht kompatibel (wenn entsprechend 
formatiert)?

von Hauke Haien (Gast)


Lesenswert?

eagle user schrieb:
> Am PC hast ja Strom ohne Ende und der Akku muss wieder geladen werden.
> Bei der Gelegenheit kannst die Daten auf eine SD-Karte kopieren. Evt.
> kann man sie auch per Netzwerk übertragen?

Nun, die Idee ist eigentlich, den Akku einfach zu tauschen und die Karte 
flott auszulesen oder ebenfalls zu tauschen.

Ich könnte mir allerdings auch vorstellen, statt sd ein entnehmbares spi 
Flash Modul zu verwenden. Da bräuchte es dann eben noch ein 
auslesegerät, aber das ließe sich wohl machen...

von Wolle G. (wolleg)


Lesenswert?

Stefan U. schrieb:
> Was ist denn da
> anders, als bei SD Karten? Sind die nicht kompatibel

keine Ahnung.
Ich verwende Teile einer Bibliothek von Texas Instruments, welche 
vorwiegend für  SD-Karten an einem MSP430Fxx gedacht sind.

von Niklas G. (erlkoenig) Benutzerseite


Angehängte Dateien:

Lesenswert?

Eventuell ist das Olimexino-STM32 für dich interessant, das enthält 
alles für den Betrieb von einer Lithium-Zelle (inkl. Ladeschaltung) und 
auch einen µSD-Slot (allerdings nur SPI, sollte bei der Geschwindigkeit 
aber reichen). Der Controller ist "nur" ein STM32F1 welcher nicht 
besonders sparsam ist, könnte aber trotzdem reichen. Eine RTC brauchst 
du auch nicht, denn der Controller hat eine eingebaut und würde dann 
permanent (im Stromsparmodus) laufen.
Ich habe mal den Stromverbrauch beim Schreiben auf eine microSDHC-Karte 
mit einem STM32F4 gemessen. Dabei wurden jede ms 1KiB an Zufallsdaten 
generiert und alle 16ms ein 16KiB-Block herausgeschrieben. Im Anhang 
sieht man das Ergebnis (Messung am 1Ω-Shunt, also 1mV = 1mA) - die 
kleinen Peaks sind das Rechnen, der 200mA-Peak das Schreiben. Ist aber 
wohl nicht besonders genau aufgrund des großen Shunts.
Wie meine Vorredner würde ich auch stark dazu raten, so viele Daten wie 
möglich im RAM zu sammeln (mind. 16 KB), die Karte einzuschalten, am 
Stück rauszuschreiben, und wieder auszuschalten. Ggf. sogar die Karte 
zwischendurch komplett ausschalten. Je größer der Datenblock, desto 
größer die Effizienz der Karte und desto schneller ist der Vorgang 
beendet (kumulativ) und desto geringer ist der Energieverbrauch.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.