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-adaloggerhttp://www.exp-tech.de/adafruit-feather-m0-adaloggerhttp://www.chip45.com/categories/avr_mikrocontroller_module_boards_sd-karte.phphttp://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
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.
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...
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 ;-)
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.
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.
>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.
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?
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?
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?
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!!
Ich habe bisher noch keine SDHC Karten ausprobiert. Was ist denn da
anders, als bei SD Karten? Sind die nicht kompatibel (wenn entsprechend
formatiert)?
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...
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.
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.