Armazenamento de cartão micro-SD de baixa potência


18

Estamos construindo um data logger de baixa energia baseado no ATmega328P, a fim de usar o carregador de inicialização e o IDE do Arduino etc. Pilha AA. Os dados do sensor serão armazenados a um máximo de 76 bytes / s por 4 meses, fornecendo cerca de 750 MiB de dados. Portanto, temos a necessidade de um grande dispositivo de memória, que ainda consome pouca energia.

Pelo que sei, a única solução prática para armazenar tantos dados é usar um cartão SD. No entanto, os cartões SD parecem usar um pouco mais de energia do que podemos pagar, corrente ociosa de 0,2 mA para os cartões que temos agora e mais quando estão escrevendo.

Então, algumas perguntas:

  • Um interruptor lateral alto é a única maneira prática de controlar o consumo de energia do cartão SD?
  • Existem advertências de que devemos estar atentos ao trocar a alimentação do cartão? Por exemplo, é o nível de desgaste de um processo que será executado após a gravação de um bloco ou pode acontecer a qualquer momento.
  • Existem outras alternativas que devemos considerar?

11
solarduino.net/?p=58 é um artigo que pode ser do seu interesse
vicatcu

Considere adicionar RAM externa como 23LC1024. Depois, você pode armazenar mais buffer e manter o cartão SD desligado. O microchip também cria uma versão com bateria, se a idéia de dados armazenados em memória volátil o incomodar.
markrages

Respostas:


19

Se você estiver orçando em média 0,3 mA a cada µA conta. Não é um problema para o microcontrolador, mas o cartão SD consumirá dezenas de mAs. Você quer que ele seja ligado o mínimo possível. Mas o ATmega328P possui apenas 2 kB de RAM, o que significa que o buffer de amostra ficará cheio em menos de meio minuto e, então, é hora de gravar no cartão SD. Duas vezes por minuto

Eu consideraria uma TI MSP430 em vez do AVR. Ainda é o controlador de menor potência comumente disponível. Ele economizará o µA necessário ao gravar no cartão SD. O MSP430F5418A também possui 16 kB de RAM, para que você precise ligar o cartão SD apenas uma vez a cada três minutos e meio.

Você pode executar o MSP430 em seu oscilador de baixa frequência e alternar para o DCO de alta frequência (oscilador controlado digitalmente) para gravar no cartão SD, para que isso leve o mínimo de tempo possível.

Para alimentar o cartão SD, eu realmente usaria um interruptor do lado superior. O BSS215P é um P-MOSFET de nível lógico adequado.

editar
Se você não se importa com um pacote BGA, um dispositivo NAND Flash pode ser uma alternativa ao cartão SD. Este pode operar no modo MMC ou SPI. Consome menos que um cartão SD, mas ainda consome 200 µA no modo de espera, portanto, você ainda deseja desligá-lo com o FET do lado superior. Certifique-se de diminuir as entradas / saídas do chip antes de desligar a energia. Isso vale para o cartão SD também.


Obrigado pela informação. Infelizmente, atualmente estamos limitados a MCUs com carregadores de inicialização Arduino disponíveis, mas estamos considerando o Atmega644PA devido ao aumento da RAM. O MCU será acordado por uma interrupção do RTC para realizar as medições e estará desligado em outros momentos. Existem alternativas para o cartão SD? Sua sugestão de obter um MCU com muita memória RAM para um buffer grande é uma boa que eu não pensei. :)
geometrikal

@stevenvh Que características do MOSFET BSS215P o tornam adequado para esta aplicação?
ElecEnthusiast

Um AVR pode até fornecer um cartão SD a partir de um pino GPIO (20mA deve ser possível).
JimmyB

14

(Respondendo ao meu próprio post com informações úteis)

Realizei algumas experiências com um conjunto limitado de cartões SD para verificar o consumo de energia. Eles parecem variar muito entre os fabricantes e dentro dos tipos, alguns cartões consomem 10 vezes mais energia do que outros.

Existem dois resultados abaixo. O primeiro é o consumo atual estimado durante o sono e o segundo é o consumo atual médio de aproximadamente 1 setor de gravação a cada 5 segundos para minha placa .

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

Não incluí corrente de pico porque parece não ser uma medição confiável com o meu multímetro. Provavelmente porque o cartão foi gravado apenas por alguns ms. Mas notei que todas as placas tinham uma medição de pico de 5 - 6mA (suavizada), enquanto o Lexar dava 2 - 3mA (suavizada). Observe que a corrente máxima real é uma ordem de magnitude maior que isso, mas indica que o cartão Lexar tem baixa corrente de gravação e suspensão.

Vencedor atual

Lexar 8GB Classe 6

Atualizarei esta lista à medida que mais testes forem realizados. (Última atualização: 14-08-2014)


Você deseja um uCurrent ( eevblog.com/projects/ucurrent ) para suas experiências. Conectado a um osciloscópio, ele pode fornecer uma boa visão do consumo de energia ao longo do tempo durante várias seqüências em seu programa.
RJR

2

Testes agradáveis. Confira o tutorial do registrador de dados de baixa potência usando os cartões Arduino Pro Mini e SD: http://www.osbss.com/tutorials/temperature-relative-humidity/

Provavelmente contém exatamente o que você precisa (a interrupção do RTC ativa, cerca de um ano de duração da bateria, etc.) Nosso consumo de energia "convencional" é de cerca de 0,195mA a 3,3V, e isso pode diminuir para 0,11mA ou muito mais baixo, se você usar outras placas ou o próprio chip ATmega328P.

Assim como @stevenvh disse, você precisará de um transistor para controlar a energia do leitor de cartão SD quando o processador estiver no modo de suspensão.


0

As menores correntes de sono que eu vi nos cartões SD são de 0,05 mA para os antigos sandisk 256Mb e, como o pessoal do OSBSS, raramente recebo meu data logger com menos de 0,1 mA, porque os cartões SD típicos parecem consumir cerca de 0,07 mA. Ainda assim, ao chegar a esse território, você poderá facilmente obter de 3 a 4 meses de AA, se o seu regulador de inicialização for suficientemente eficiente.

Certifique-se de verificar se você está acessando as conexões não usadas no adaptador de cartão SD ou as correntes de sono podem ser muito maiores. Explore também a biblioteca de baixa energia do Rocket Screem, pois isso permite que você insira diferentes modos de suspensão 328P com facilidade.

Quanto à mudança: o sujeito que escreveu as bibliotecas SD para o arduino adverte contra a retirada de energia dos cartões SD no playground do Arduino, por isso não segui essa abordagem. Eu ficaria curioso para saber como isso funcionou para os caras do OSBSS (?)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.