Nota: Eu queria ressaltar que, mesmo que minha resposta tenha sido aceita, o leitor (você) deve realmente ler a resposta de Anindo primeiro se realmente deseja economizar energia com qualquer placa Arduino. Depois de abordar esses itens em seu design, você deve ler minha resposta e se preocupar em como configurar o MCU no modo de baixa energia.
Dito isto, existem várias técnicas para fazer um Arduino economizar energia. Vou listar alguns e depois apontar para uma página que os explique com mais detalhes.
Enquanto o controlador não está fazendo nada importante (entre uma leitura de um sensor e no próximo, por exemplo), você pode colocar o controlador em um dos modos de suspensão abaixo, com o comando set_sleep_mode (SLEEP_MODE_PWR_DOWN)
. Ao lado de cada modo está o consumo aproximado de energia de cada modo.
- SLEEP_MODE_IDLE: 15 mA
- SLEEP_MODE_ADC: 6,5 mA
- SLEEP_MODE_PWR_SAVE: 1,62 mA
- SLEEP_MODE_EXT_STANDBY: 1,62 mA
- SLEEP_MODE_STANDBY: 0,84 mA
- SLEEP_MODE_PWR_DOWN: 0,36 mA
Desative a detecção de queda de energia (o circuito que desliga o controlador quando baixa tensão é detectada).
Desativar ADC (conversão de analógico para digita)
Use o relógio interno
Em seguida, quando você colocar o controlador em suspensão, precisará usar um ou mais mecanismos abaixo para ativar o controlador e fazer algo com ele:
Este é um resumo que fiz de -
Esse artigo se aplica principalmente ao ATmega328P, mas a técnica também se aplica a outros controladores compatíveis com Arduino. Como o TheDoctor disse bem, você precisará verificar o datashet para garantir que seu controlador suporte alguma dessas técnicas e como fazê-lo com mais precisão.
Realisticamente, o maior desperdício de energia em uma placa Arduino é o regulador de tensão linear nela.
Desde que o microcontrolador na placa, os LEDs ou qualquer outro periférico consumam corrente, o regulador linear gasta energia igual a
difference between supply and board voltage
xcurrent drawn
.Portanto, uma primeira correção seria desconectar o LED indicador de energia na placa e não usar nenhum dos outros LEDs o máximo possível. Segundo, forneça à placa a menor tensão possível, suficiente para alimentar o regulador de bordo.
Nos projetos originais, os reguladores de tensão utilizados não possuem baixa corrente quieta. Isso significa que, mesmo sem nada consumindo energia, o próprio regulador gasta bastante energia o tempo todo.
Uma solução fácil é substituir o regulador de bordo por um LDO (regulador linear de baixo abandono) classificado para uma corrente quieta extremamente baixa. Pesquisas paramétricas em vários sites de fornecedores renderão prováveis substitutos.
Mesmo com as etapas acima, a placa Arduino não fornece um mecanismo para configurar o LDO no modo de baixa energia, se o LDO escolhido suportar isso. Projetos com economia de energia geralmente usam um pino "modo de suspensão" nos reguladores de tensão para economizar um pouco de energia - não é uma opção aqui.
Mesmo com todos os modos e truques possíveis de economia de energia aplicados no nível do microcontrolador, o Arduino simplesmente não foi projetado para ser um dispositivo de ultra baixa potência pronto para uso. Tendo experimentado várias aplicações não triviais, descobri que o melhor que é realisticamente possível é de cerca de 10% a 30% de economia de energia, dependendo da aplicação, uma vez que o regulador de tensão e os LEDs consumirão o restante de qualquer maneira.
fonte
Você pode ler a folha de dados de 200 páginas e depois mexer com alguns turnos e registros de bits confusos, mas eu recomendo esta biblioteca: http://playground.arduino.cc/Code/Enerlib
Além disso, se você estiver usando um Uno ou qualquer um com um chip USB-para-serial, poderá desativá-lo ou removê-lo.
fonte
Quando seu projeto estiver funcionando e você precisar implantar no ambiente de "produção", poderá optar por substituir o Arduino por um meta ATMega328 simples ou qualquer um dos chips da família ATTiny. Isso eliminará todos os consumidores de energia que você não precisa na placa Arduino. Eu encontrei:
Mais algumas informações
Programe um ATtiny com Arduino
Arquivos ATTiny para o IDE do Arduino
fonte