Se eu tiver um Arduino, posso ligar e desligar abruptamente a energia sem danificá-lo? Se estou projetando um produto que possui uma chave liga / desliga, preciso incorporar um atraso antes de desligar a energia, para que o microcontrolador possa fazer algum tipo de desligamento limpo? Ou é bom apenas conectar um comutador SPST à linha de energia do Arduino?
(Ao projetar um produto, quero dizer, usar um ATmega com código Arduino de forma independente em uma placa personalizada com outros componentes.)
Edit: Por Arduino, quero dizer apenas piscando o gerenciador de inicialização do Arduino para que eu possa programar no Arduino em vez do AVR. O chip que desejo usar é o Atmel atmega328P. Não preciso de nenhum uso de EEPROM.
Respostas:
Sim, é seguro desligar abruptamente um Arduino.
Bem, principalmente seguro.
Os processadores usados nos vários Arduinos têm três tipos de memória:
Flash - Onde seu programa está armazenado. Seu programa pode ler coisas daqui, mas não pode escrevê-las.
RAM - Onde as variáveis do seu programa são mantidas enquanto o programa está em execução. Os dados aqui desaparecem quando você desliga o Arduino. Seu programa lê e grava aqui constantemente.
EEPROM - Onde seu programa pode armazenar coisas, ele precisará da próxima vez em que for executado. Geralmente coisas que mudam raramente, mas são necessárias sempre que o programa é executado. Como dados de calibração para um sensor.
A maioria dos programas usa apenas Flash e RAM. Você pode ligar e desligar o Arduino a qualquer momento com esses programas.
Se o seu programa gravar na EEPROM, desligar a energia enquanto estiver gravando na EEPROM poderá corromper os dados.
Como isso afeta o seu programa depende de quais são os dados.
Se ele corromper os dados de calibração de um sensor, você obterá medições ruins para o que o sensor estiver detectando.
Se você escrever somas de verificação com os dados da EEPROM, poderá detectar a corrupção e o programa poderá desligar em vez de usar dados incorretos.
Obviamente, você saberia se o seu programa grava na EEPROM - você precisa carregar uma biblioteca separada e usar comandos especiais para ler e gravar na área da EEPROM.
O perigo é realmente apenas naquele breve momento em que você escreve para a EEPROM. Como isso acontece raramente (e geralmente apenas sob condições controladas), também será raro corromper os dados da EEPROM.
Resumo:
Você pode ativar e desativar um Arduino à vontade, sem perigo, a menos que esteja usando a EEPROM - e mesmo assim você poderá se safar na maior parte do tempo.
fonte
Sim, você pode desligar rapidamente a energia sem danificá-la.
A única razão que vejo para colocar um atraso no desligamento do circuito seria por motivos de segurança ou funcionais dos seus periféricos externos.
Por exemplo, ao desligar, é necessário salvar os dados na memória não volátil. Ou, ao desligar, é necessário garantir que um mecanismo esteja em uma posição segura ao desligar.
Isso exigiria monitoramento do suprimento e capacidade de retenção suficiente para executar o processador e qualquer função que fosse necessária para ser executada.
fonte
O termo Arduino refere-se a um espectro muito amplo de placas de microcontroladores que possuem vários chips diferentes e, portanto, o efeito da perda de energia varia. Portanto, recomendo que você coloque o número exato da peça do chip ATmega que está sendo usado. Mas, de maneira geral, para chips como o ATmega328, o seguinte é válido.
Sim, você pode remover a energia de um Arduino sem danificar ou danificar nada, mas lembre-se do seguinte:
Se o seu código utiliza EEPROM, o flash pode ficar corrompido ou os dados podem não ser armazenados com precisão quando o dispositivo está piscando e a energia é removida.
A única maneira de uma súbita perda de energia causar danos além da EEPROM é nos dispositivos que estão sendo usados com o Arduino (por exemplo, um cartão SD).
fonte