我正在使用Arduino Uno microcrontroller为12 V系统创建控制器。对于输出,我使用继电器屏蔽来切换12 V组件。我有一个12 V拨动开关,可以打开系统中的一些12 V组件,我想使用同一开关的触发信号发送到Arduino数字输入。我知道Arduino最多只能处理5 V电压。将来自开关的12 V降压至5 V输入的最佳方法是什么?
编辑:该系统用于汽车。是否需要以某种方式降低汽车电池的电流强度,以免炸毁组件?
我正在使用Arduino Uno microcrontroller为12 V系统创建控制器。对于输出,我使用继电器屏蔽来切换12 V组件。我有一个12 V拨动开关,可以打开系统中的一些12 V组件,我想使用同一开关的触发信号发送到Arduino数字输入。我知道Arduino最多只能处理5 V电压。将来自开关的12 V降压至5 V输入的最佳方法是什么?
编辑:该系统用于汽车。是否需要以某种方式降低汽车电池的电流强度,以免炸毁组件?
Answers:
好消息!这将很便宜!:-)
一个简单的电阻分压器会将Arduino可以消化的12 V电压降至5V。输出电压可以计算为
电阻值在10kΩ的范围内是一个不错的选择。如果您的R2为10kΩ,则R1应该为14kΩ。现在14kΩ不是标准值,而是15kΩ。您的输入电压将是4.8 V而不是5 V,但是Arduino仍将其视为高电平。如果12 V的电压过高,您还有一点裕量。即使18kΩ仍会为您提供足够高的4.3 V,但随后您必须开始考虑12 V有点太低。电压仍会被视为高吗?我会坚持使用15kΩ。
编辑
您提到了汽车环境,那么您确实需要一些额外的保护。汽车的12 V永远不会是12 V,但大多数时候会更高,峰值比标称12 V高几伏。(实际上标称值更像是12.9 V,每个电池为2.15V。)您可以放置5 V齐纳二极管二极管与R2并联,这将切断高于齐纳二极管5 V的任何电压。但是,齐纳电压会随电流而变化,并且在低输入电流时,电阻器为您提供的电阻将在较低电压下截止。更好的解决方案是在Arduino的输入和5 V电源之间安装一个肖特基二极管。然后,任何高于5.2 V的输入电压都会使肖特基二极管导通,并且输入电压将被限制在5.2V。为此,您确实需要一个肖特基二极管,一个普通的PN二极管为0。
更好的
迈克尔的光耦合器是一个很好的选择,尽管价格稍贵。通常,您将使用光耦合器将输入与输出隔离,但是您也可以在此处使用它来保护输入。
工作原理:输入电流点亮内部红外LED,这会导致通过光电晶体管的输出电流。输入电流和输出电流之间的比率称为CTR,即“电流传输比率”。所述CNY17具有最少40%的点击率,则需要4毫安输出10毫安输入该装置。让我们选择10 mA输入。那么R1应该是(12 V-1.5 V)/ 10 mA = 1kΩ。输出电阻必须在4 mA处产生5 V的压降,然后应为5 V / 4 mA = 1250Ω。最好有一个更高的值,反正电压降不会超过5V。4.7kΩ会将电流限制为约1 mA。
Vcc是Arduino的5 V电源,Vout用于Arduino的输入。请注意,输入将被反相:如果存在12 V,它将为低电平,否则将为高电平。如果您不希望这样做,则可以交换光耦合器输出和上拉电阻的位置。
编辑2
光耦合器解决方案如何解决过电压问题?电阻分压器是成比例的:输出电压是输入的固定比率。如果您在12 V输入下计算出5 V输出,那么24 V输入将给出10 V输出。不好,因此是保护二极管。
在光耦合器电路中,您可以看到连接到Arduino输入引脚的右侧根本没有任何高于5 V的电压。如果光耦合器导通,则晶体管将汲取电流,在上述示例中,我使用了4 mA。根据欧姆定律(电流乘以电阻=电压),1.2kΩ会导致4.8 V电压降。然后,电阻两端的输出电压将为5 V(Vcc)-4.8 V = 0.2 V,这是一个低电平。如果电流较低,则电压降也将较小,并且输出电压将上升。例如,1 mA电流将导致1.2 V压降,输出将为5 V-1.2 V = 3.8V。最小电流为零。然后,电阻两端没有电压,输出将为5V。这是最大值,
如果输入电压过高怎么办?您不小心连接了24 V电池而不是12V。然后,LED电流将增加一倍,形成10 mA至20 mA。40%的点击率将导致8 mA输出电流,而不是计算出的4 mA。通过1.2kΩ电阻的8 mA压降为9.6V。但是用5 V电源供电将是负的,这是不可能的。您不能在这里低于0V。因此,尽管光耦合器非常希望汲取8 mA电流,但电阻会限制这一电流。通过它的最大电流是满5 V时的最大电流。这样,输出实际上将为0 V,电流为5 V / 1.2kΩ= 4.2 mA。因此,无论您使用哪种电源,输出电流都不会高于该值,并且电压将保持在0 V至5 V之间。不需要进一步的保护。
如果你希望过压你必须检查光耦的LED能够处理增加的电流,但20mA的不会是大多数光耦合器的一个问题(他们通常额定在50 mA以下),而且,这对双输入电压,可能不会发生IRL。
您还可以使用二极管和电阻器,如下所示:
模拟该电路 –使用CircuitLab创建的原理图
我会让电阻变得相当坚硬,否则您将从该电路中吸收大量功率。该电路的优点(与分压器相比)在于,它并不关心您的原始电压是12V,14V还是15V:它将为5V(取决于二极管,实际上为5.2-5.3V),无论输入电压。
为了实现电压独立性,请使用电阻器调节电流,并使用齐纳二极管调节电压,如下所示:
模拟该电路 –使用CircuitLab创建的原理图
使用30k电阻器,它将输出4.99V,在12Vin时仅使用约234uA。
在这种情况下:
R1消耗234uA x(12V-4.99V)= 1.64mW
D1消耗234uA x 4.99V = 1.17mW
总功耗:2.81mW(输入高时)
有点晚了,但是在我的车上我使用了LM7805。效果很好,价格便宜。