Archiviazione su scheda micro-SD a bassa potenza


18

Stiamo costruendo un data logger a basso consumo basato su ATmega328P, al fine di utilizzare il caricatore di avvio Arduino e IDE, ecc. Idealmente il consumo energetico dovrebbe essere inferiore a 0,3 mA a 3,3 V per ottenere circa 4 mesi di vita su un singolo Batteria AA. I dati del sensore verranno archiviati a un massimo di 76 byte / sec per i 4 mesi, fornendo circa 750 MiB di dati. Pertanto abbiamo bisogno di un dispositivo di memoria di grandi dimensioni, che è ancora a basso consumo.

Da quello che posso dire, l'unica soluzione pratica per archiviare così tanti dati è usare una scheda SD. Tuttavia, le schede SD sembrano consumare un po 'più di energia di quanto possiamo permetterci, una corrente di inattività di 0,2 mA per le carte che abbiamo ora e più quando scrivono.

Quindi alcune domande:

  • Uno switch high-side è l'unico modo pratico per controllare il consumo di energia della scheda SD?
  • Ci sono alcuni avvertimenti di cui dovremmo essere a conoscenza quando si cambia alimentazione alla scheda? Ad esempio, sta livellando l'usura un processo che verrà eseguito dopo una scrittura a blocchi o può accadere in qualsiasi momento.
  • Ci sono altre alternative che dovremmo considerare?

1
solarduino.net/?p=58 è un articolo che potrebbe interessarti
vicatcu

Prendi in considerazione l'aggiunta di RAM esterna come 23LC1024. Quindi è possibile bufferizzare di più e mantenere la scheda SD spenta. Microchip crea anche una versione con batteria, se l'idea dei dati che si trovano nella memoria volatile ti dà fastidio.
segna il

Risposte:


19

Se hai un budget medio di 0,3 mA ogni µA conta. Non è un grosso problema per il microcontrollore, ma la scheda SD consumerà decine di mA. Vuoi averlo acceso il meno possibile. Ma l'ATmega328P ha solo 2 kB di RAM, quindi il buffer di campionamento sarà pieno in meno di mezzo minuto, quindi è il momento di scrivere sulla scheda SD. Due volte al minuto

Vorrei prendere in considerazione una TI MSP430 invece dell'AVR. È ancora il controller a basso consumo comunemente disponibile. Ti farà risparmiare l'µA di cui avrai bisogno quando scrivi sulla scheda SD. Il MSP430F5418A ha anche 16 kB di RAM, in modo da avere il potere sulla scheda SD solo una volta ogni tre anni e mezzo minuto.

È possibile eseguire MSP430 sul suo oscillatore a bassa frequenza e passare al DCO (oscillatore a controllo digitale) ad alta frequenza per scrivere sulla scheda SD, in modo che ciò richieda il minor tempo possibile.

Per alimentare la scheda SD utilizzerei davvero un interruttore high-side. Il BSS215P è un P-MOSFET a livello logico adatto.

modifica
Se non ti dispiace un pacchetto BGA, un dispositivo NAND Flash potrebbe essere un'alternativa alla scheda SD. Questo può funzionare in modalità MMC o SPI. Consuma meno di una scheda SD, ma consuma comunque 200 µA in standby, quindi ti consigliamo di spegnerlo con il FET high-side. Assicurarsi di ridurre gli I / O del chip prima di spegnere l'alimentazione. Questo vale anche per la scheda SD.


Grazie per le informazioni. Sfortunatamente, attualmente siamo limitati alle MCU con caricatori di avvio Arduino disponibili, ma stiamo considerando l'Atmega644PA a causa della maggiore RAM. L'MCU verrà riattivato da un interrupt RTC per eseguire le misurazioni e spegnersi altre volte. Esistono alternative alla scheda SD? Il tuo suggerimento di ottenere un MCU con molta RAM per un buffer di grandi dimensioni è buono a cui non avevo pensato. :)
geometrikal

@stevenvh Quali caratteristiche del MOSFET BSS215P lo rendono adatto a questa applicazione?
ElecEnthusiast,

Un AVR potrebbe anche essere in grado di fornire una scheda SD da un pin GPIO (20mA dovrebbe essere possibile).
JimmyB,

14

(Rispondere al mio post con informazioni utili)

Ho eseguito alcuni esperimenti con un set limitato di schede SD per verificarne il consumo. Sembrano variare notevolmente tra i produttori e all'interno dei tipi, alcune carte consumano 10 volte più potenza del sonno rispetto ad altre.

Di seguito sono riportati due risultati. Il primo è il consumo di corrente stimato durante il sonno, e il secondo è il consumo di corrente medio per circa 1 settore scrivere ogni 5 secondi per la mia tavola .

Card                     Sleep (mA)         Cyclic write (mA)   Number of cards tested

Sandisk 4GB Class 4      0.34-0.95 (0.69)   0.64-1.25 (1.05)    5
Verbatim 4GB Class 4     0.06-0.12 (0.09)   0.12-0.17 (0.16)    6
Kingston 4GB Class 4     1.34-1.34 (1.34)   1.47-1.47 (1.47)    1
Lexar 4GB Class 4        0.09-0.09 (0.09)   0.11-0.12 (0.12)    2

Lexar 8GB Class 6        0.06-0.09 (0.08)   0.09-0.12 (0.10)    4 (best so far)

Toshiba 16GB Class 10    0.12-0.12 (0.12)   0.18-0.18 (0.18)    1

Non ho incluso la corrente di picco perché non sembra una misura affidabile con il mio multimetro. Probabilmente perché la scheda è scritta solo per pochi ms. Ma ho notato che tutte le carte hanno dato una misura di picco di 5 - 6 mA (livellata) mentre la Lexar ha dato 2 - 3 mA (levigata). Nota, la corrente massima reale è un ordine di grandezza maggiore di questo, ma indica che la scheda Lexar ha una corrente di scrittura bassa e una sospensione.

Vincitore attuale

Lexar 8GB Classe 6

Aggiornerò questo elenco man mano che verranno eseguiti altri test. (Ultimo aggiornamento 2014-08-14)


Ti consigliamo un uCurrent ( eevblog.com/projects/ucurrent ) per i tuoi esperimenti. Collegato a un oscilloscopio, può darti una buona visione del consumo di energia nel tempo durante varie sequenze del tuo programma.
RJR

2

Bei test. Dai un'occhiata al nostro tutorial sul datalogger a basso consumo con le schede Arduino Pro Mini e SD: http://www.osbss.com/tutorials/temperature-relative-humidity/

Probabilmente contiene esattamente ciò di cui hai bisogno (l'interruzione RTC lo riattiva, vicino alla durata della batteria di un anno, ecc.) Il nostro consumo di corrente "mainstream" è di circa 0,195 mA a 3,3 V, e questo può scendere fino a 0,11 mA o molto più in basso, se si utilizzano altre schede o il chip ATmega328P nudo stesso.

Proprio come ha detto @stevenvh, è necessario un transistor per controllare l'alimentazione del lettore di schede SD quando il processore è in modalità di sospensione.


0

Le correnti di sonno più basse che ho visto per le schede SD sono di circa 0,05 mA per i vecchi sandisk da 256 Mb e, come la gente OSBSS, raramente il mio data logger si sviluppa sotto 0,1 mA perché le schede SD tipiche sembrano assorbire circa 0,07 mA. Tuttavia, quando raggiungi quel territorio dovresti essere in grado di ottenere 3-4 mesi da un AA se il tuo regolatore di avvio è abbastanza efficiente.

Assicurati di verificare che stai tirando su le connessioni non utilizzate sull'adattatore della scheda SD, o che le correnti di sonno possano essere molto più alte. Esplora anche la libreria a basso consumo di Rocket Screem, in quanto ti consente di accedere facilmente alle diverse modalità di sospensione 328P.

Per quanto riguarda il passaggio: il collega che ha scritto le librerie SD per Arduino mette in guardia contro il depotenziamento delle schede SD nel parco giochi di Arduino, quindi non ho seguito questo approccio. Sarei curioso di sapere come ha funzionato per i ragazzi OSBSS (?)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.