Правильні способи відключення ІМС у станах малої потужності, щоб уникнути подачі паразитів / резервного живлення


10

Я працюю над проектом на базі AVR з низькою потужністю від акумулятора, який інтегрує кілька різних пристроїв, включаючи неопіксельну смужку і Adafruit pixie . Коли загальний пристрій у спокої, я хотів би отримати менше 0,1 мА, щоб збільшити час роботи акумулятора LiPo.

У мене все це працює (вимірюється 0,035 мА), але я не впевнений, що я обов'язково робив це "правильним" способом, і я планую створити продукт на основі цього, тому хотілося б зробити це правильно.

введіть тут опис зображення (Не показано: провідний діод для реле)

Основне занепокоєння, яке я маю, - це "паразитне" живлення пристроїв, коли VCC відключається за допомогою струму, що надходить від штифтів даних. Наприклад, Pixie (який спілкується серійно) не має режиму відключення живлення, навіть коли «вимкнено» стікає близько міліампер. Тому я розмістив невелике реле для відключення його VCC і виявив, що серійний штифт насправді все ще живить піксі. Підказки в іншому місці свідчать про те, що багато мікросхем мають діод, що маніпулює своїми цифровими вхідними штифтами на VCC як захист живлення. Щоб вирішити це, мені довелося призупинити серійну бібліотеку та фактично digitalWrite (PIN, LOW) під час сну.

Те ж саме і з смугою WS2812b - відключення VCC все ще дозволяє пристрою живитись від штифта даних. А в інших проектах, коли я відключав GND з N-канальним MOSFET, я бачив зворотне - зворотний потік струму через лінію передачі даних на землю! (Це потрібно було вирішити за допомогою діода на посаді в PJRC.) WS2812b насправді займає приблизно мільярд кожного, навіть якщо не вимикається,

Отже, питання: чи існує загальний "чистий" спосіб відключення VCC та GND від частин проекту під час системного сну, коли в суміші є шпильки даних. Яка найкраща практика?

Деякі ідеї:

  1. Примусити VCC до GND (не впевнений, як? Hbridge?). (Якщо я це роблю, що відбувається з високими шпильками даних?)
  2. Помістіть тривісний буфер між усіма штифтами даних та цими пристроями, а під час сну поставте тривісний буфер у стан високого опору, відключіть VCC або GND лише за допомогою P або N MOSFET
  3. Від'єднуйте GND тільки за допомогою N MOSFET та розміщуйте діоди на всіх штифтах даних
  4. Чи існує якась засувка живлення, яка відключає як VCC, так і GND і переводить їх у стан "високого опору" (як тридержавний буфер для живлення?). Таким чином, струм не має можливості витікати "з каналів даних".

Чи може хтось просвітити мене до найчистішого, найбільш повторюваного способу вирішення подібної проблеми "відключення завантаження"? (Потрібно говорити, що я витратив години на вирішення цієї проблеми з невеликою удачею, хоча я знайшов цю технічну записку щодо перемикання навантаження, але вона не стосується зворотної подачі та паразитарної потужності)


Я це дуже дратує, я фактично бачив випадки, коли потужність, що досягає штифта GPIO, може вмикати AVR (виконуючи код), навіть не маючи сили, щоб досягти штифтів VCC ...
vicatcu

2
Кумедне спостереження: я здійснив ще кілька пошукових запитів у Google, оскільки розмістив це запитання, і це питання на SE вийшло як найвищий рейтинг. Google проіндексував цю сторінку менш ніж за 10 хвилин.
Джеремі Гілберт

Тільки коментар: Правильні вимикачі ізоляції, як запропонували інші, є найкращим рішенням, коли віддалене напруга неможливо усунути. МОЖЕ бути так, що використання діодів Шоткі для введення штифтів із катодами, що перебувають у сполученні та, як правило, на Vcc та затискається на землю, коли потрібна ізоляція, забезпечить адекватне усунення високих напруг опору. Очевидно, що Шоткі, затискаючи лінію живлення з низьким опором, може зіпсувати ваш день.
Рассел Макмахон

Ймовірно, привіт-Z-ing всі ваші з'єднання якимось чином (тришарові µC-штифти, тришарові буфери, аналогові комутатори, як би там не було), як запропонували Пітер Сміт та CL, є найкращою ставкою. Який із методів кращий, я не впевнений. У будь-якому випадку: чому ви використовуєте реле для комутації, а не P-MOSFET (або низький N-MOSFET з цього приводу, хоча комутація нижньої сторони, мабуть, буде дещо складніше)?
FlashCactus

Відповіді:


5

Коли я це роблю, я зазвичай використовую аналогові перемикачі CMOS на постраждалих лініях даних.

Щось подібне до ADG812 має 4 канали перемикачів SPST, які легко підходять для досить швидкої логіки і забезпечують дійсно високий опір між вузлами комутатора, коли вони перебувають у вимкненому стані.

ADG812 від витоку

Приємно в цьому те, що методика працює як для однонаправлених, так і для двонаправлених ліній даних.

Ці частини також працюють на яскравій усмішці:

Вимоги до потужності ADG812

Звичайна послідовність відключення живлення:

  1. Вимкніть комутатори шляхів передачі даних

  2. Вимкніть домен.

Звичайно ж, живлення - навпаки.

[Оновлення]

Вони справді відомі іншими назвами, такими як прохідні ворота та ворота передачі .

Вони суттєво відрізняються від справжнього тридержавного буфера (як ви бачите на діаграмі за посиланням вище), але для звичайної логіки ефект кращий (це по суті двосторонній пристрій), але з меншою потужністю.


Пробачте про невігластво питання, але чи це помітно відрізняється від тридержавного буфера? (І дякую за відповідь!)
Джеремі Гілберт

Вони також відомі як "прохідні ворота"
vicatcu

3

Якщо сигнали даних підключені до вашого мікроконтролера, ви можете просто зробити їх високим опором, налаштувавши ці штифти як входи. (Якщо інший чіп використовує дуже мало енергії, ви можете ставитися до його Vcc як до сигналу даних.)

В іншому випадку ви можете використовувати аналогові вимикачі (логічні мікросхеми 74x66) для їх відключення. Для однонаправлених сигналів також буде працювати 74x125.


Насправді не потрібно робити їх високими-Z, ви можете просто знизити GPIO-лінії мікро-мікрофона.
DoxyLover

1
Це було б більш небезпечно, якби інший чіп міг коли-небудь підняти сигнал.
ЗР.

Просто я повністю розумію, чи перемикання штифтів на входи завжди те саме, що переведення їх у високий опір? Це узагальнено для більшості MCU чи лише AVR? Чи такий стан, як у 74x125, коли OE відключений?
Джеремі Гілберт

@JeremyGilbert Всі входи CMOS мають високий опір (це MOSFET ворота, які ведуть себе як дуже маленькі конденсатори). Вихід з обмеженими можливостями 125 не має воріт, але різниця незначна.
ЗР.

1
@ JeremyGilbert Вводи, як правило, з великим Z в більшості застосувань; зрештою, важко щось відчути, коли ти їдеш по лінії. Це означає, що принаймні з AVR (і, мабуть, з іншими теж, але я не знаю специфіки), ви повинні стежити за внутрішніми перемиканнями: якщо штифт перебуває в режимі введення (налаштований через DDRx), і ви пишете LOW в це (через PORTx), він перебуває у звичайному режимі Hi-Z. Однак якщо ви пишете ВИСОКИЙ у режимі введення, увімкнено внутрішнє підключення, а зовні штифт виглядає як резистор ~ 50K до VCC замість плаваючої лінії.
FlashCactus

1

На жаль, на жаль, не існує одного розміру, який відповідає всій стратегії. Переключіть живлення на підсистеми, як ви вже зробили. У програмному забезпеченні приводні штифти з низькою потужністю, якщо тільки це не призведе до стаціонарного стану великої потужності. У такому випадку засуньте штифт високо. Ніколи не дозволяйте входам плавати. Послідовна потужність, необхідна для встановлення безпечних початкових умов.


1


Я2С

У вас немає такого варіанту - ви змушені використовувати асинхронний послідовний ввід / вивід. Деякі мікроконтролери дозволяють подібний підхід, як I2C, для вирішення проблеми. Якщо ви можете запрограмувати послідовний вихідний штифт тільки на розсувний, а не на більш поширений підтягуючий за 1, висувний-на-0 , тоді ви можете додати підтягуючий резистор до переключеного Vcc на встановити логіку високу.
Це рішення не настільки шумоподібне, як ваш теперішній підхід, але воно повинно вирішити проблему резервного живлення ваших модулів вводу / виводу від AVR. Це насправді не "чисте" рішення, але це набагато безпечніше для мікроконтролерів (-ів) у ваших модулях вводу-виводу.

схематичний

імітувати цю схему - Схематично створено за допомогою CircuitLab

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.