Ligue o Arduino com timer a cada 24 horas

9

Atualmente, estou trabalhando em um projeto Arduino que envia a carga da bateria do meu carro uma vez por dia através de um ESP8266 para mim. Durante o inverno, eu não dirijo meu carro e gostaria de ser informado quando a bateria cair além de um valor crítico, para que eu possa carregá-la e evitar danos.

Portanto, a eficiência energética é importante para o projeto, para não descarregar a própria bateria. Eu leio muito sobre o modo de suspensão, reguladores de queda eficientes, etc. Todos têm em comum que o regulador de tensão está sempre funcionando, o que não é o que eu quero.

Eu estou procurando por algum tipo de "circuito de troca rápida". Ele deve contar em 24 horas e depois ligar um relé ou MOSFET, que conecta o regulador de tensão à energia e, com isso, liga o Arduino e o ESP8266. Quando o Arduino termina a transmissão, ele redefine o temporizador, que desconecta o regulador de tensão da energia, e assim por diante. Obviamente, o circuito do temporizador deve usar apenas muito pouca energia.

Alguém conhece um circuito como esse? Pesquisei no AliExpress com todas as variações de palavras que me vieram à mente, sem sucesso. Ou talvez um IC que possa ser usado (facilmente) para criar esse circuito?

Dirk Pitt
fonte
11
Nem todos os reguladores de tensão são iguais. Alguns usarão apenas alguns micro-amplificadores.
Gerben
Pensando fora da caixa ... Um interruptor de timer padrão não será suficiente?
usar o seguinte comando

Respostas:

5

Uma abordagem seria o uso de um módulo DS3231 (Precision Real Time Clock). Esses módulos são vendidos no Ebay por menos de US $ 1. Pesquise por ds3231 arduino.

Normalmente, esses módulos possuem um conector de seis pinos, com pinos rotulados 32K, SQW, SCL, SDA, VCC e GND. Conforme observado nas especificações do DS3231, o pino INT / SQW é usado para saída de onda quadrada ou para saída de interrupção. Na página 13 das especificações, na seção Registro de Controle, diz:

Bit 2: Controle de interrupção (INTCN). Este bit controla o sinal INT / SQW. Quando o bit INTCN está definido para a lógica 0, uma onda quadrada é emitida no pino INT / SQW. Quando o bit INTCN está definido para a lógica 1, uma correspondência entre os registros de registro de horas e qualquer um dos registros de alarme ativa a saída INT / SQW (se o alarme também estiver ativado).

Inicialmente, você executaria um esboço para configurar o DS3231: ativar um alarme diário, ativar uma interrupção em vez de uma onda quadrada, definir a hora atual, etc. e age de maneira adequada.

O pino DS3231 INT / SQW seria conectado ao portão de um mosfet de canal P que alterna energia de 12V no Arduino. O P-fet liga quando o pino de saída de dreno aberto INT / SQW do alarme é ativado. O programa operacional faz seus negócios e limpa o sinalizador de interrupção DS3231, para desligar a energia até que o próximo alarme ocorra. (Para depuração, defina intervalos mais breves do que um dia; por exemplo, uma vez por minuto, conforme descrito na Tabela 2, Bits de máscara de alarme, na página 12 de especificações.)

Normalmente, o DS3231 consome 0,84 μA ao operar com uma bateria de 3,3V ou 1 μA de 5V. Consulte Características elétricas, página 3 de especificações.

James Waldby - jwpat7
fonte
11
A porta P-fet provavelmente deve ser puxada para +12 através de algo como um resistor de 1 megaohm; então seria efetivamente aberta quando o pino INT / SQW está fora, e poderia flutuar para níveis arbitrários
James Waldby - jwpat7
3

O cronômetro ou o próprio circuito do cronômetro precisaria consumir alguma corrente. Qualquer um dos chips AVR de potência máxima consome muito pouca corrente no modo de suspensão - nos 10s de micro-amp para o 328, se bem me lembro. A suspensão de um AVR para o menor consumo de corrente precisa de quase tudo desligado, exceto o temporizador do cão de guarda e o período WDT máximo é de 8 segundos. Uma biblioteca como o Narcoleptic gerenciará períodos mais longos para você. O que você precisa fazer, no entanto, é fornecer uma fonte de alimentação regulada muito mais eficiente do que a embutida na placa Arduino (se é isso que você usará). Feito isso, a carga do Arduino na bateria do seu carro deve ser microscópica.

Um design possível para um suprimento eficiente é um conjunto de baterias alcalinas, digamos 3 em série, para uma saída de 4,5 (enquanto fresca) vezes 2 ou mais dessas seqüências em paralelo, conectadas diretamente ao barramento de 5V.

Eu não fiz o orçamento de energia para saber a capacidade que você precisaria e se precisaria de células D ou poderia criar uma matriz prática a partir de unidades menores, por exemplo, AAs, mas essa é uma maneira de obter carga zero na bateria do carro (descontando a exigência do sensor de tensão da bateria do carro). Convém incluir a integridade do conjunto de baterias do Arduino no relatório diário ou, pelo preço de alguns alcalinos, você pode projetar demais a bateria do Arduino para que seu monitoramento se torne desnecessário.

Alguns pontos de dados sugerem que uma bateria separada é uma abordagem viável:

  • Um único 9v alcalino opera um detector de fumaça por mais de um ano, incluindo o inverno excessivo em um sótão sem aquecimento (na minha própria experiência), e os 9v alcalinos não são conhecidos por sua capacidade.
  • Meu termostato de retrocesso digital funciona há alguns anos em 2 células AA, antes de a) morrerem e b) eu saber e começar a trocá-las anualmente. :)
JRobert
fonte
Eu tenho um ATmega48 (muito semelhante ao 328P) executando duas células AA desde junho de 2012. Ele fica acordado por pouco mais de 4 minutos por dia, dormindo o resto do tempo. Não mudou as baterias até agora.
Edgar Bonet
Esse é um tempo de execução impressionante - obrigado pelo ponto de dados adicional, @EdgarBonet! Eu esperava que um Arduino adormecido e uma bateria alcalina pudessem ser um sistema "faça-o-esqueça-e-esqueça", mas sem calcular o consumo de energia, acho que não teria um desempenho tão bom. Então, @DirkPitt, existem alguns dados de suporte do mundo real.
JRobert #
Não é um Arduino completo: não consegui ficar abaixo de ~ 40 mA com o meu Uno, enquanto o ATmega nu SLEEP_MODE_PWR_SAVE, com apenas o temporizador assíncrono ativo, levou algo como 2 µA.
Edgar Bonet