Almacenamiento de tarjeta micro SD de baja potencia


18

Estamos construyendo un registrador de datos de baja potencia basado en el ATmega328P, para utilizar el cargador de arranque Arduino y el IDE, etc. Idealmente, el consumo de energía debe ser inferior a 0.3mA @ 3.3V para obtener alrededor de 4 meses de vida en un solo Batería AA. Los datos del sensor se almacenarán a un máximo de 76 bytes / seg durante los 4 meses, dando alrededor de 750 MiB de datos. Por lo tanto, tenemos la necesidad de un dispositivo de memoria grande, que todavía sea de baja potencia.

Por lo que puedo decir, la única solución práctica para almacenar esta cantidad de datos es usar una tarjeta SD. Sin embargo, las tarjetas SD parecen usar un poco más de energía de la que podemos permitirnos, 0.2 mA de corriente inactiva para las tarjetas que tenemos ahora, y más cuando están escribiendo.

Entonces algunas preguntas:

  • ¿Es un interruptor de lado alto la única forma práctica de controlar el consumo de energía de la tarjeta SD?
  • ¿Hay alguna advertencia que debemos tener en cuenta al cambiar la alimentación a la tarjeta? Por ejemplo, es un proceso de nivelación de desgaste que se realizará después de una escritura en bloque, o puede suceder en cualquier momento.
  • ¿Hay alguna otra alternativa que debamos considerar?

1
solarduino.net/?p=58 es un artículo que podría ser de su interés
vicatcu

Considere agregar RAM externa como 23LC1024. Luego puede almacenar más y mantener la tarjeta SD apagada. Microchip también hace una versión respaldada por batería, si la idea de datos almacenados en una memoria volátil te molesta.
markrages

Respuestas:


19

Si está presupuestando un promedio de 0.3 mA, cada µA cuenta. No es un gran problema para el microcontrolador, pero la tarjeta SD consumirá decenas de mA. Desea encenderlo lo menos posible. Pero el ATmega328P tiene solo 2 kB de RAM, lo que significa que su búfer de muestra estará lleno en menos de medio minuto, y luego es hora de escribir en la tarjeta SD. Dos veces por minuto

Consideraría un TI MSP430 en lugar del AVR. Sigue siendo el controlador de menor potencia disponible comúnmente. Le ahorrará el µA que necesitará cuando escriba en la tarjeta SD. El MSP430F5418A también tiene 16 kB de RAM, por lo que debe encender la tarjeta SD solo una vez cada tres minutos y medio.

Puede ejecutar el MSP430 en su oscilador de baja frecuencia y cambiar al DCO (oscilador controlado digitalmente) de alta frecuencia para escribir en la tarjeta SD, de modo que esto tome el menor tiempo posible.

Para alimentar la tarjeta SD, de hecho, usaría un interruptor de lado alto. El BSS215P es un P-MOSFET de nivel lógico adecuado.

editar
Si no le importa un paquete BGA, un dispositivo NAND Flash puede ser una alternativa a la tarjeta SD. Este puede funcionar en modo MMC o SPI. Consume menos que una tarjeta SD, pero aún consume 200 µA en modo de espera, por lo que aún querrá apagarlo con el FET de lado alto. Asegúrese de que las E / S del chip estén bajas antes de desconectar la alimentación. Eso también se aplica a la tarjeta SD.


Gracias por la info. Desafortunadamente, actualmente estamos limitados a MCU con cargadores de arranque Arduino disponibles, pero estamos considerando el Atmega644PA debido al aumento de RAM. La MCU se activará con una interrupción RTC para realizar las mediciones y se apagará en otras ocasiones. ¿Hay alternativas a la tarjeta SD? Su sugerencia para obtener una MCU con mucha RAM para un búfer grande es una buena que no pensé. :)
geometrikal

@stevenvh ¿Qué características del BSS215P MOSFET lo hacen adecuado para esta aplicación?
ElecEntusiast

Un AVR incluso puede suministrar una tarjeta SD desde un pin GPIO (20mA debería ser posible).
JimmyB

14

(Respondiendo mi propia publicación con información útil)

He realizado algunos experimentos con un conjunto limitado de tarjetas SD para verificar su consumo de energía. Parecen variar mucho entre fabricantes y dentro de los tipos, algunas tarjetas consumen 10 veces más energía de reposo que otras.

Hay dos resultados a continuación. El primero es el consumo de corriente estimado al dormir, y el segundo es el consumo de corriente promedio para aproximadamente 1 sector de escritura cada 5 segundos para mi pizarra .

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

No he incluido el pico de corriente porque parece que no es una medición confiable con mi multímetro. Probablemente porque la tarjeta solo se escribe durante unos pocos ms. Pero noté que todas las tarjetas dieron alrededor de una medición de pico de 5 - 6 mA (suavizado) mientras que el Lexar dio 2 - 3 mA (suavizado). Tenga en cuenta que la corriente máxima real es un orden de magnitud mayor que esto, pero indica que la tarjeta Lexar tiene una corriente de escritura baja, así como inactiva.

Ganador actual

Lexar 8GB Clase 6

Actualizaré esta lista a medida que se realicen más pruebas. (Última actualización: 2014-08-14)


Querrás un uCurrent ( eevblog.com/projects/ucurrent ) para tus experimentos. Conectado a un osciloscopio, puede darle una buena idea del consumo de energía a lo largo del tiempo durante varias secuencias en su programa.
RJR

2

Buenas pruebas. Consulte nuestro tutorial de registrador de datos de baja potencia con Arduino Pro Mini y tarjetas SD: http://www.osbss.com/tutorials/temperature-relative-humidity/

Probablemente contiene exactamente lo que necesita (la interrupción RTC lo activa, casi un año de duración de la batería, etc.) Nuestro consumo de energía "principal" es de alrededor de 0.195mA a 3.3V, y esto puede bajar a 0.11mA o mucho más bajo, si usa otras placas o el propio chip ATmega328P.

Al igual que @stevenvh dijo, necesitará un transistor para controlar la alimentación del lector de tarjetas SD cuando el procesador esté en modo de suspensión.


0

Las corrientes de sueño más bajas que he visto para las tarjetas SD son de alrededor de 0.05 mA para los viejos sandisk 256Mb, y al igual que la gente de OSBSS, rara vez obtengo que mi registrador de datos se construya por debajo de 0.1 mA porque las tarjetas SD típicas parecen consumir aproximadamente 0.07 mA. Aún así, cuando llegue a ese territorio, debería poder obtener fácilmente 3-4 meses de un AA si su regulador de arranque es lo suficientemente eficiente.

Asegúrese de comprobar que está conectando las conexiones no utilizadas en su adaptador de tarjeta SD, o las corrientes de reposo pueden ser mucho más altas. También explore la biblioteca de baja potencia de Rocket Screem, ya que esto le permite ingresar fácilmente a diferentes modos de suspensión 328P.

En cuanto a la conmutación: el tipo que escribió las bibliotecas SD para el arduino advierte contra la desconexión de las tarjetas SD en el patio de Arduino, por lo que no he seguido ese enfoque. Me gustaría saber cómo les fue a los chicos de OSBSS (?)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.