Estou trabalhando em um projeto baseado em AVR de bateria de baixa energia que integra alguns dispositivos diferentes, incluindo uma faixa de neopixel e um duende Adafruit . Quando o dispositivo geral está inativo, eu gostaria que ele usasse menos de 0,1 mA para maximizar a vida útil da bateria do LiPo.
Consegui tudo isso funcionando (medido 0,035mA), mas não tenho certeza se fiz necessariamente da maneira "certa" e pretendo construir um produto com base nisso, para que eu faça o que é certo.
(Não mostrado: um diodo flyback para o relé)
A principal preocupação que tenho é a alimentação "parasitária" dos dispositivos quando o VCC é desconectado por meio da corrente que flui dos pinos de dados. Por exemplo, o Pixie (que se comunica via serial), não possui o modo de desligamento e mesmo quando "off" é drenado por um miliampère. Então, coloquei um pequeno relé para desconectar seu VCC e descobri que o pino serial ainda estava realmente alimentando o duende. Dicas em outros lugares sugeriram que muitos chips possuem um diodo que desvia seus pinos de entrada digital para o VCC como proteção de energia. Para resolver isso, tive que suspender a biblioteca serial e digitalWrite (PIN, LOW) durante o sono.
O mesmo ocorre com o VCC WS2812b, que desconecta a tira, ainda permite que o dispositivo seja alimentado pelo pino de dados. E em outros projetos, quando desconectei o GND com um MOSFET de canal N, vi o inverso - um fluxo de corrente de retorno através da linha de dados para o terra! (Isso teve que ser resolvido com um diodo por post no PJRC.) Os WS2812b na verdade demoram cerca de um miliampere cada, mesmo quando estão apagados,
Portanto, a pergunta: existe uma maneira geral e "limpa" de desconectar o VCC e o GND das partes de um projeto durante a suspensão do sistema quando houver pinos de dados no mix. Qual é a melhor prática?
Algumas ideias:
- Força o VCC ao GND (não sabe ao certo como? Hbridge?). (Se eu fizer isso, o que acontece com os pinos de dados que estão altos?)
- Coloque um buffer de três estados entre todos os pinos de dados e esses dispositivos e, durante o sono, coloque o buffer de três estados em um estado de alta impedância, desconecte o VCC ou o GND apenas com o mosfet P ou N
- Desconecte o GND apenas com o N mosfet e coloque diodos em todos os pinos de dados
- Existe algum tipo de trava de energia que desconecta o VCC e o GND e os coloca em um estado de "alta impedância" (como um buffer de três estados para energia?) Dessa forma, a corrente não tem como fluir "fora" das linhas de dados.
Alguém pode me esclarecer sobre a maneira mais limpa e repetível de lidar com esse tipo de problema de "desconexão de carga"? (Escusado será dizer que passei horas pesquisando esse problema com pouca sorte, embora tenha encontrado esta nota técnica sobre troca de carga, mas ela não trata de alimentação parasitária e de energia parasitária)