Я работаю над проектом на базе AVR с низким энергопотреблением, который объединяет несколько различных устройств, включая полосу неопикселя и пикант Adafruit . Когда устройство в целом не работает, я бы хотел, чтобы оно потребляло менее 0,1 мА, чтобы продлить срок службы батареи LiPo.
У меня все это работает (измерено 0,035 мА), но я не уверен, что я обязательно сделал это «правильным» способом, и я планирую создать продукт, основанный на этом, поэтому хотел бы сделать это правильно.
(Не показано: обратный диод для реле)
Основная проблема, с которой я столкнулся, - это «паразитное» питание устройств, когда VCC отключен через ток, протекающий от выводов данных. Например, Pixie (который общается через последовательный порт), не имеет режима отключения питания, и даже когда «выключен» истощает около миллиампер. Поэтому я установил маленькое реле для отключения его VCC и обнаружил, что последовательный контакт все еще питает пикси. Подсказки в другом месте предполагают, что многие микросхемы имеют диод, шунтирующий свои выводы цифрового входа к VCC в качестве защиты питания. Чтобы решить эту проблему, мне пришлось приостановить последовательную библиотеку и фактически digitalWrite (PIN, LOW) во время сна.
То же самое с полосой WS2812b - отключение VCC все еще позволяет устройству получать питание от контакта данных. И в других конструкциях, когда я отключил GND с N-канальным MOSFET, я видел обратное - обратный поток тока через линию передачи данных на землю! (Это должно было быть решено с помощью диода в каждом посте на PJRC.) WS2812b на самом деле занимает около миллиампера каждый, даже когда не горит,
Итак, вопрос: существует ли общий, «чистый» способ отключить VCC и GND от частей проекта во время сна системы, когда в миксе есть выводы данных. Какова лучшая практика?
Некоторые идеи:
- Заставить VCC к GND (не уверен, как? Hbridge?). (Если я это сделаю, что случится с выводами данных, которые высоки?)
- Поместите буфер с тремя состояниями между всеми выводами данных и этими устройствами, и во время сна переведите буфер с тремя состояниями в состояние высокого импеданса, отсоедините VCC или GND только с помощью P или N mosfet
- Отсоединяйте GND только от N mosfet и устанавливайте диоды на все выводы данных
- Существует ли какая-то защелка питания, которая отключает как VCC, так и GND и переводит их в состояние «высокого импеданса» (например, трехфазный буфер для питания?). Таким образом, ток не может вытекать «из» линий данных.
Может ли кто-нибудь рассказать мне о самом чистом и наиболее повторяемом способе решения такого рода проблем с отключением нагрузки? (Излишне говорить, что я потратил часы на поиски этой проблемы без особой удачи, хотя я нашел эту техническую заметку о переключении нагрузки, но она не касается обратной подачи и паразитного питания)