本篇是关于继电器使用中的一些注意事项, 及疑惑解答. 我们会深入分析下继电器外在行为表现的内在原因, 并针对一些异常情况提出解决方案.
两个输出端点都显示为高电平
在你使用继电器的过程中, 你可能注意到一种令人困惑的现象, 两个输出端有一个明明没有连接到电源, 却也显示为高电平的红色, 这是怎么回事呢?
这与系统对继电器的内部实现方式有关.
内部的真实结构
通过双击(或者 右键--属性
)继电器, 在弹出的属性调整窗口中, 所谓 被控制开关 的通(on)和断(off)是利用一个极小的导通电阻(50m, 即 50 毫欧姆)和一个极大的开路电阻(1M, 即 1000000 欧姆)实现的, 而 控制开关 的作用则是交换这两个电阻:
你可能已经注意到, 当弹性开关一端接入电源时, 而另两端悬空时, 没有被开关连上的那一端同样是高亮的红色, 表示它同样处在高电压状态, 而下图下边的电路是它的等价模型:
悬空状态下, 没有回路, 没有电流, 也就不会形成 电压降, 所有直接跟电源连着的器件均处在高电压状态.
如果你站在一个绝缘的椅子上, 用手去触摸 220V 的 火线, 你身上也会带上 220V 的悬空电压.
不过你实际上并没有危险, 只要你另一只手不要去触摸 零线, 同时因为你脚站在绝缘的椅子上, 也就没有接地, 此时, 虽然你握着 220V 的火线, 但没有回路也就没有电流, 你实际上还是安全的.
警告! 尽管理论上是安全的, 你还是千万不要去做这个实验, 我不清楚你家的椅子的绝缘性!
同理, 小鸟站在高压线上实际上也不会被电死, 因为也没有回路, 也就没有电流, 除非小鸟能够脚跨两条不同电压的线.
蛇则有可能会被电死, 因为它身子长, 有可能缠在两条不同电压的线上, 然后"啪"的一声, 灰飞烟灭…
避免悬空的一些措施
而一旦引入负载, 形成回路, 情况立马就不同了, 电流流过一个极小电阻时, 电压基本没有损失.
注: 就跟流过导线类似, 在模拟器的实现中, 导线被认为是零电阻, 但客观世界里并非如此. (前面也提到了, 而继电器最初就是为了解决这样的问题而诞生的)
在下面的对比图中, 通过菜单下的 绘制--输出和标签--添加测试点
的方式在一些组件连接的端点上增加一些 测试点(TP: test point), 相当于在那些点上挂一些电压表, 可以测试出各个端点上的电压:
可以看到当电流流过一个大电阻时, 电压降到了 1V 左右(颜色变为接近 0 电压的淡红色), 尽管电压不为零, 但已经无力驱动后面连着的 LED 灯, 因此一个极大的电阻几乎就等价于断开.
但实际上仍然是有电流的, 只是非常小.
细心的同学可能注意到通断两种情况下的电压测量点数值似乎不能符合欧姆定律, 其实, LED 灯的电阻也不是固定的, 导通前它的电阻是极大的, 几乎可以与那个一百万欧的电阻在量级上匹配;
但导通后的电阻又会变得极小, 并没有违反欧姆定律, 或者说不能简单套用欧姆定律.
这些属于半导体元器件的特性, 此处不展开详述, 有兴趣的同学可以自行查找资料了解.
而流过一个小电阻时, 电压还有 3.6v 左右, 仍然足够驱动 LED 灯点亮.
理想情况下的断开可以等价认为是两个端点之间存在一个无穷大电阻, 但模拟器的具体实现显然不是这种情况.
比如, 电源插孔的两个端口之间可以认为是无穷大, 因为它们彼此间被各种绝缘材料及空气隔开了.
但严格地讲, 连空气都不是绝对的绝缘体, 当电压足够高, 连空气都可以被"击穿", 所谓闪电就是这么回事.
当然了, 空气的电阻是极大的, 所以哪怕你站在高压线下, 只要不是离得特别近, 你不用担心被电到. 虽然你跟高压线通过 空气 实质上还是连在一起了, 但要电到你, 电流先要流过空气这个大电阻, 但这样一来电压就降到微不足道的地步了.
换言之, 可能你跟高压线之间确实是有电流通过的, 但因为空气这个大电阻隔在你们中间, 使得这个电流非常小, 以至于小到你根本感觉不到.
继电器与 7 段数码管配合使用的注意事项
另一方面, 前面说到, LED 数码管有几种模式: 逻辑输入, 共阴极以及共阳极. 而缺省的 “逻辑输入” 模式它恰恰不去模拟这个电流的流动, 它不需要接地的, 没有回路存在, 它完全是一种接触式的.
当接着一个高电压, 它就亮, 反之就灭.
当给输出端添加一个电阻及接地时, 这个旁支会形成回路, 虽然与 LED 数码管间依然没有回路的存在, 但旁支回路的存在已经足以改变它们共同触点的电压值.
这样的电阻称为 下拉电阻(pull-down resistor), 其作用就是把开路(断路)时的悬空电压拉低, 与一个等价电路的对比如下:
可以看到旁支电路的存在消除了悬空, 使得在大电阻的情况下, 接触点的电压会降至几乎为零(4.995mV, 约为 5毫伏), 也就模拟了正确的断开的状态. 而在小电阻的情况下, 则几乎不会产生电压降.
图中显示仍然为 5V, 实际应该是小于 5V 的, 但可能因为太接近 5V, 可能在四舍五入后还是 5V.
闭合开关, 显示 1 的情况同理, 这里不再具体截图演示, 读者可自行再模拟器上验证.
如果去掉这些下拉电阻, 就会有异常, 如下所示, 断开端的 LED 数码管也同样点亮了, 这不是我们想要的:
简单讲, 就是继电器得一定有回路存在, 不然它的行为可能就不是像你预期的那样. 当然, 你也可以认为这是模拟器实现上的一些缺陷, 如果在实际中去做实验, 则不会有类似问题.
单个的 LED 灯也是如此, 仅让它一端接着高电平, 它是不会亮的;
但缺省模式下的 LED 数码管则没有接地及回路等约束, 它只做一个逻辑判断, 是否跟高电压毗连, 如果是就点亮.
应该说, 这个问题的存在是继电器的模拟实现与 LED 数码管的缺省模式下的显示行为不一致造成的.
在后面, 我们将主要使用那些 数字电路 器件, 而不再使用(或很少使用)像继电器这样的 模拟电路 器件, 也就不会有这些问题了, 也无需用各种接地或电阻的方式去修正.
目前使用继电器是因为它的工作原理更好理解, 它的通与断也更加形象.
当下, 为解决这种不匹配的问题, 或者采用共阴极接地方式的 LED 数码管, 或者使用旁支回路 “修正” 继电器的行为.