在低功率状态下断开IC的正确方法,以避免寄生/反向馈电


10

我正在做一个基于低功耗电池的基于AVR的项目,该项目集成了几种不同的设备,包括neopixel带和Adafruit pixie。当整个设备处于静止状态时,我希望其消耗的电流小于0.1mA,以最大限度地延长LiPo电池的寿命。

我可以正常工作(测得的0.035mA),但是我不确定我是否一定会以“正确”的方式进行操作,因此我计划以此为基础开发产品,因此希望正确进行操作。

在此处输入图片说明 (未显示:继电器的反激二极管)

我最关心的是当VCC通过数据引脚上的电流断开连接时,器件的“寄生”供电。例如,Pixie(通过串行通信)不具有掉电模式,即使“ off”消耗约一毫安。因此,我放置了一个小型继电器以断开其VCC,并发现串行引脚实际上仍在为小精灵供电。其他地方的提示表明,许多芯片都有一个二极管,将其数字输入引脚与VCC并联以作为电源保护。为了解决这个问题,我不得不在睡眠期间挂起串行库并实际上挂起了digitalWrite(PIN,LOW)。

WS2812b插排也是如此—断开VCC仍可通过数据引脚为设备供电。在其他设计中,当我用N沟道MOSFET断开GND时,我看到的反面-电流通过数据线流回地面!(必须在PJRC上的每个接线柱上用一个二极管来解决。)即使不亮,WS2812b实际上每个也要消耗大约1毫安的电流,

所以问题来了:在系统休眠期间,当有数据引脚混用时,是否有一种通用的“干净”方法将VCC和GND与项目的一部分断开。最佳做法是什么?

一些想法:

  1. 将VCC强制为GND(不确定如何?Hbridge?)。(如果这样做,那么高电平的数据引脚会发生什么?)
  2. 在所有数据引脚和这些设备之间放置一个三态缓冲器,并在睡眠期间将三态缓冲器置于高阻抗状态,仅通过P或N MOSFET断开VCC或GND
  3. 仅用N个MOSFET断开GND,并在所有数据引脚上放置二极管
  4. 是否存在某种电源锁存器可以同时断开VCC和GND并将其置于“高阻抗”状态(例如电源的三态缓冲器?),因此电流无法从数据线“流出”。

有人可以启发我解决这种“负载断开”问题的最简洁,最可重复的方法吗?(不用说,我花了好几个小时来摸索这个问题,尽管我确实找到了有关负载切换的技术说明,但它没有解决反向馈电和寄生功率问题)


是的,这很烦人,我实际上已经看到过这样的情况:即使没有电源到达VCC引脚,到达GPIO引脚的电源也可以打开AVR(执行代码)...
vicatcu

2
有趣的观察:自发布此问题以来,我进行了更多Google搜索,该问题在SE上排名最高。Google在不到10分钟的时间内将该页面编入索引。
杰里米·吉尔伯特

仅评论:当无法消除远端电压时,如其他建议的那样,适当的隔离开关是最佳解决方案。可能是,使用肖特基二极管将阴极公共且通常在Vcc处并在需要隔离时接地的情况下使用肖特基二极管输入引脚,可以充分消除高阻抗电压。显然,肖特基钳制低阻抗的馈电线会破坏您的一天。
罗素·麦克马洪

正如Peter Smith和CL所建议的那样,可能以某种方式对所有连接(三态µC引脚,三态缓冲器,模拟开关等)进行高阻抗连接是最好的选择。我不确定哪种方法更好。无论如何:为什么要使用继电器而不是P-MOSFET(或者低端N-MOSFET,尽管在这里低端开关可能会更难)?
FlashCactus

Answers:


5

执行此操作时,通常在受影响的数据线上使用CMOS模拟开关

诸如ADG812之类的器件具有4通道SPST开关,很容易适用于相当快的逻辑,并且在处于关断状态时在开关节点之间提供很高的阻抗。

ADG812漏电

这样做的好处是,该技术适用于单向双向数据线。

这些部分还带有灿烂的笑容:

ADG812电源要求

掉电的通常顺序:

  1. 关闭数据路径开关

  2. 关闭域。

当然,加电是相反的。

[更新]

这些确实确实以其他名称而闻名,例如通过门和传输门

它们与真正的三态缓冲器有很大的不同(如您在上面的链接中的图中所示),但是对于普通逻辑而言,效果更好(这本质上是双向设备),但功耗较低。


原谅问题的无知,但这与三态缓冲器明显不同吗?(感谢您的回答!)
杰里米·吉尔伯特

这些也被称为“通行证”
vicatcu,2016年

3

如果数据信号已连接至您的微控制器,则只需将这些引脚配置为输入即可使其具有高阻抗。(如果另一个芯片使用的功率很小,则可以将其Vcc视为数据信号。)

否则,您可以使用模拟开关(74x66逻辑芯片)断开连接。对于单向信号,也可以使用74x125。


实际上,您不需要将它们设为高Z,您只需将Micro的GPIO线驱动为低电平即可。
DoxyLover

1
如果另一个芯片能够将信号驱动为高电平,那将更加危险。
CL。

就像我完全理解的那样,将引脚切换到输入是否总是与将它们置于高阻抗状态相同?这是普遍适用于大多数MCU还是仅适用于AVR?该状态是否与禁用OE时从74x125获得的状态相同?
杰里米·吉尔伯特

@JeremyGilbert所有CMOS输入都具有高阻抗(它们是MOSFET栅极,其行为就像很小的电容器)。禁用的'125输出没有门,但差异可忽略不计。
CL。

1
@JeremyGilbert在大多数应用中,输入通常为高阻态。毕竟,开车时很难感觉到任何东西。也就是说,至少使用AVR(可能还有其他的AVR,但我不知道具体细节),您必须当心内部上拉:如果引脚处于输入模式(通过DDRx配置),并且将LOW写入(通过PORTx),处于常规Hi-Z模式。但是,如果您在输入模式下写HIGH,则内部上拉电阻被使能,并且从引脚外部看,它类似于VCC的〜50K电阻,而不是浮线。
FlashCactus

1

不幸的是,我认为不可能有一种适合所有策略的规模。完成操作后,将电源切换到子系统。在软件中,在低功率状态下将驱动引脚拉低,除非这样做会导致高功率稳态。在这种情况下,将引脚驱动为高电平。切勿让输入浮动。排序电源以建立安全的初始条件。


1


一世2C

您没有该选项-您必须使用异步串行I / O。一些微控制器允许使用与I2C类似的方法来解决该问题。如果您可以将串行输出引脚设置为仅下拉模式,而不是更常见的上拉为1,下拉为0,则可以将上拉电阻器添加到开关Vcc至建立逻辑高。
该解决方案不像您目前的方法那样抗噪,但它应该解决从AVR向I / O模块供电的问题。这并不是真正的“干净”解决方案,但是对于您的IO模块中的微控制器而言,它要安全得多。

原理图

模拟该电路 –使用CircuitLab创建的原理图

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.