3.3 V GPIO 上的 12 V 输入,TVS 下拉还是肖特基上拉?

电器工程 GPIO 输入 二极管钳位
2022-01-15 09:49:08

我正在构建自己的 PLC,它必须接受高达 30 V DC 的永久输入到具有 3.3 V 输入的 STM32F 中。

开关输入必须在 8-30 V 下工作,但 90% 的时间输入电压将固定在 12 V 或 24 V。输入只会是诸如限位开关之类的开关,所以我不介意检测低于 8 V 的输入或来自传感器等的输入,我也不担心速度,因为实际上开关移动的最快速度是每 1 秒;我只需要确保我的微控制器受到保护。

我想要一个可以在多个类似类型的产品/项目中使用的通用电路,因此元件数量、成本和 PCB 空间必须最少,所以我真的不想使用光耦合器。

两位电子工程师推荐了以下方法,但我不太确定哪种方法最好:

在此处输入图像描述

我应该使用顶部的还是底部的?有什么理由吗?

3个回答

这实际上是 PLC 的一个古老问题,并不像您预期​​的解决方案那么简单。

您遇到的最大问题是,您需要能够处理各种潜在的逻辑电压,实际逻辑电平可能远高于您在内部使用的 3.3V 电压轨。一些传感器和设备的逻辑阈值高于 5V。因此,仅使用您所指出的截止电路不会检测到此类传感器的低电平。

PLC 的输入级需要更加灵活。

即使低电平逻辑电平是可以接受的,这些电路也都存在不同的问题。

齐纳/TVS 限制。

在此处输入图像描述

该电路的好处是,对于已知的输入电压,齐纳二极管的大小可以使电压永远不会超过轨电压。通常,您会选择反向电压小于电源轨但高于高电平逻辑阈值的齐纳二极管。

但是,齐纳二极管会在其使用寿命中大量使用反向偏置,因此当输入信号下降时,您会以反向恢复时间的形式付出代价,这将延迟您的信号一点点。

齐纳二极管的另一个问题是,它所限制的实际电压取决于通过它的电流。因此,电压将在一定程度上取决于信号电压。因此,您需要针对最大输入电压设计电阻器,并针对较低电压重新计算,以查看齐纳二极管是否没有将电压限制在您的\$V_{IH}\$电平以下。

过轨限流二极管

在此处输入图像描述

使用二极管至电源轨的问题是输出电压仍然会超过 Vcc,只是一点点。但是,这仍然可能对输入有害。此外,在这种情况下,反向恢复时间意味着,对于快速输入边沿,高电压将使其通过非常短暂。

所以

由于这两个电路在输入端都包含一个高电阻,因此它们都需要驱动输入的任何东西都具有低输出阻抗。两者中,齐纳版本提供更好的保护,但以性能为代价。如果连接的传感器的\$V_{OL}\$ > 1.5V 左右,它们都将不起作用。

备择方案


光耦合。

PLC 使用的一种常用方法是使用光耦合器。

示意图

模拟此电路- 使用CircuitLab创建的原理图

这种方法为您提供了隔离和接地分离的额外好处。它的问题是您需要在传感器和输入之间进行某种形式的信号调节,以确保 LED 在正确的阈值处点亮,并且正确的电流量通过 LED 馈送。这种调节可以是上面显示的简单电阻器,也可以是包含某种比较器的复杂电路。

光耦合器的速度也是一个限制因素。但是,这种方法很常用,因为它为您提供了完全的灵活性。

模拟输入调理

另一种方法是接受模拟形式的信号,将其与具有滞后的变量参考进行比较,然后以这种方式生成逻辑电平。

示意图

模拟这个电路

显然,需要选择包括比较器在内的组件以适应最大输入电压。显示的电路相当简单,它可以通过滤波器、稳压器、ESD 保护等变得更加复杂。

组合

出于隔离原因,您可以结合上述方法,并让比较器为光耦合器的 LED 提供恒流驱动器。

如果我正在开发一种产品,我会将所有这些组装在一个小型插件模块上,该模块可以插入“母”板上的卡边缘插座,就像它们用于 PC 中的卡一样。这样一来,您就可以轻松地更换它们,以防油炸。该方法还允许您使用其他输入类型,例如光纤输入。

100k太高了。它几乎可以从附近的任何继电器或开关操作中触发。如果你问我,对于 PLC 来说不是很可靠。

实际上有PLC 的标准和规定由于您希望所有 PLC 供应商在安装中都有类似的行为,如果各种型号可以毫无问题地相互连接会很好。

例如,输入仅在其下沉至少 ~2 mA 且高于 10V时才将其视为开启。(IEC 61131-2) iec 61131-2

您无法使用无源器件精确地做到这一点,这就是为什么会有像 SN65HVS880 这样的部件。

在我之前的回答中,我给出了一个示意图示例,说明如何尝试使用被动*接近这种行为。

一个简单的 100K 和一个 BAT54S 是不可靠的,我可以从经验告诉你。

plc输入示例
上一个答案

*单独的施密特触发器不是必需的

两者都可以接受。您需要确保电阻器的尺寸正确,以便输入电流不会导致输入电压降至 V_IH 以下,但对于 CMOS,这是微不足道的,因为输入电流非常小(100k 几乎肯定没问题)

第二个唯一需要注意的是,您需要确保 3.3v 上的总负载永远不会低于 30V/100k(无论您拥有多少输入),否则 3.3 V 电源轨可能会被拉高到电压可能会损坏其上的设备。如果您将微型计算机置于睡眠模式,它可能会吸引那么一点。

另一个需要注意的是,在这两种情况下,100k 电阻器都与输入电容一起充当低通滤波器,从而减慢输入速度。如果输入电容为 10pF,它们的最大切换速率约为 100kHz,延迟约为 2 微秒。