Answers:
这不应该太难:
Vcc是+5 V Arduino电源,Vout连接到I / O引脚。
光耦合器的重要参数是其CTR(电流传输比),与晶体管的HFE相当。但是对于通用晶体管来说,HFE通常在100左右,而对于光耦合器,HFE通常小于1,因此通常以百分比表示,例如CTR = 50%,这意味着10 mA的输入可获得5 mA的输出。
您似乎有足够的可用电流,但我们不需要全部。该CNY17-2具有22%min的CTR在1mA输入,所以我们可以得到0.22毫安出来。Arduino的工作电压为5 V,则上拉电阻应至少为22.7kΩ,以允许晶体管将输出拉低。您甚至可以走得更高,但随后必须注意晶体管的泄漏电流。CNY17-2具有50 nA的低电流,因此不会造成任何麻烦。AVR控制器中也有最大1 µA的泄漏,但即使这样,在晶体管关闭的情况下也只会造成100 mV的压降,因此是安全的。
100kΩ也意味着您只需要50 µA的输出电流即可将输出拉低。在1 mA输入下,我们的输出为220 µA,因此一切都是桃红色的。对于35 V输入,LED两端的最大压降为1.65 VR1,最大应为33kΩ。
您必须使用该电阻值检查最小输入电压下的电流。例如,如果输入电压可以低至12 V,则您需要最大10kΩ。
反并联二极管可防止反向连接,并且可以是任何二极管,例如1N4148。
注意:像Oli的4N32这样的达林顿输出光耦合器的点击率要高得多,但是看起来我们可以做到这一点,达林顿器件更贵:4N32的价格是17元人民币的两倍。
如果您用Google搜索“ MCU引脚光电隔离器”或类似名称,您将获得许多页面,其中包含有关如何执行此操作的信息。
典型电路:
光电隔离器可以是与所示相似的任何器件。如果您知道希望读取的电压,并在数据表中查找输入二极管的典型工作电流,则可以适当调整R1的尺寸。
例如,假设二极管的Vf为1.2V,您的电压为35V,并且您希望二极管电流为10mA:
(35V-1.2V)/ 0.010A = 3380欧姆。
D1保护光电输入二极管免受反向电压的影响,因为它们通常在死亡之前只能承受几伏的反向电压。如果您的35V电源可能会产生奇数个负尖峰(例如,交流电/电感性),那么这是个好主意-即使不是这样,以防万一。
在晶体管方面,大多数情况下为1k至100k。