光电隔离arduino输入

电器工程 Arduino 微控制器 输入 光隔离器
2022-01-19 20:10:17

我想用光隔离器保护一个引脚,以从电表获取外部信号(最大 35VDC,最大 50mA,240ms 脉冲宽度)。目的是计算脉冲。

你有一些示意图例子吗?

谢谢

2个回答

这不应该太难:

在此处输入图像描述

Vcc 是 +5 V Arduino 电源,Vout 连接到 I/O 引脚。

光耦合器的重要参数是其CTR(电流传输比),与晶体管的 HFE 相当。但是,对于通用晶体管,HFE 通常约为 100,而对于光耦合器,它通常小于 1,因此通常以百分比表示,例如 CTR = 50 %,这意味着您在 10 mA 输入中获得 5 mA 输出。

您似乎有足够的可用电流,但我们不需要全部。CNY17-2在 1 mA 输入时的CTR 为 22 % min,因此我们可以输出 0.22 mA。Arduino 工作电压为 5 V,那么上拉电阻应至少为 22.7 kΩ,以允许晶体管将输出拉低。你甚至可以更高,但你必须留意晶体管的漏电流。CNY17-2 的电流低至 50 nA,因此不会造成任何麻烦。AVR 控制器中也有最大 1 µA 的泄漏,但即便如此,在晶体管关闭的情况下也只会导致 100 mV 的压降,所以这是安全的。

100 kΩ 也意味着您只需 50 µA 输出电流即可将输出拉低。在 1 mA 输入时,我们有 220 µA 输出,所以一切都很好。对于 35 V 输入和 1.65 VR1 的 LED 上的最大压降,最大应为 33 kΩ。

您必须使用该电阻值检查最小输入电压下的电流。例如,如果输入电压可以低至 12 V,那么您需要最大 10 kΩ。

反并联二极管可防止反向连接,可以是任何二极管,如 1N4148。

注意:像奥利的 4N32 这样的达林顿输出光耦具有更高的 CTR,但看起来我们可以不用它,而且达林顿器件更昂贵:4N32 是 CNY17 的两倍。

如果您在谷歌上搜索“MCU pin optoisolator”或类似内容,您将获得许多页面,其中包含有关如何执行此操作的信息。

典型电路:

光电

光隔离器可以是与所示类似的任何东西。如果您知道您希望读取的电压,并在数据表中查看输入二极管的典型工作电流,您可以适当调整 R1 的大小。
例如,假设二极管的 Vf 为 1.2V,您的电压为 35V,您希望二极管电流为 10mA:

(35V - 1.2V) / 0.010A = 3380 欧姆。

D1 保护光电输入二极管免受反向电压的影响,因为它们通常在它们死亡之前只能承受几伏的反向电压。如果您的 35V 电源可能会产生奇怪的负尖峰(例如交流/感应),那么这是一个好主意 - 即使不是这样,将它放在那里以防万一也没有什么坏处。
在晶体管方面,在大多数情况下,1k 到 100k 就可以了。