zoukankan      html  css  js  c++  java
  • 设计 逻辑电路 的 开关元件

    这篇文章 的 起因 是  《用 逻辑电路 实现一个 开平方 算法》   https://www.cnblogs.com/KSongKing/p/13385387.html    。

     

    在 《用 逻辑电路 实现一个 开平方 算法》    里 提到了 一些  开关元件,  比如 延时开关,  一次性开关   。

     

    本文 来 设计 实现  这些 开关元件  。

     

    首先,   要 设计一个 最基本 的 开关,   其实 就是一个 继电器,   就是 控制端 有 电 时,  开关导通,  控制端 没 电 时,  开关关闭 。  这样 的 作用 是 用 电 控制 电,  用 信号 控制 信号 。

     

    实际中 的 逻辑电路 ,  比如 计算机,  数字设备,    是用 晶体管电路 和 集成电路 实现 的 ,    早期 的 也有用 电子管 的,   比如 第一台 计算机 “埃尼阿克”    。

     

    本文 主要 采用 继电器 ,    为什么 用 继电器 呢 ?     因为 继电器   简单 和 理想化  。

     

    继电器 的 构造图 :

     

                                  

     

     

     

    控制端 正负极 接通 电源 时,   线圈 产生 磁性,   把  弹簧  上 的 铁片  吸引 到 和 输入端 和 输出端 的 铁片 接触,    于是,  输入端 和 输出端 之间 接通,  相当于 是 用 导线 连接,     电流 可以 通过   。

     

    控制端 断开 电源 时,    线圈 的 磁性 消失,   弹簧 的 拉力 把  铁片 拉回 原位,   也就 离开了 输入端 和 输出端 的 铁片,   于是 输入端 和 输出端 之间 断开,   电流 不能 通过  。

     

    控制端 的 正极 负极  其实 没有 区别,  倒过来 倒过去 用 都一样  。    输入端 输出端 也 没有 区别,    倒过来 倒过去 用 都一样  。

     

    继电器 的 示意图 :

     

                                 

     

     

    在  电路 里  会 使用  这个 示意图 表示 继电器   。

     

     

     

    逻辑电路  基本 的 逻辑门 (gate)  有  与门 、或门 、非门  。

     

    把    两个 继电器 串联 起来 就是  与门,   把 两个 继电器 并联 起来 就是 或门  。

     

    非门 的 话,  需要 对 继电器 作一下 改造 :

                           

     

     

    这个 改造版 里 ,    开始时,    弹簧 上 的 铁片  和  输入端 、输出端 接触,  输入端 和 输出端 之间 导通,  电流 可以 通过  。  当 控制端 接通电源 时,  线圈 产生 磁性,   吸引 铁片 离开 输入端 、输出端 ,  于是,    输入端 和 输出端 之间断开,  电流 不能 通过  。

     

    这样,  当 控制端 没 电 时,    输入端 输出端 导通,   当 控制端 有 电 时,   输入端 输出端 断开  。

     

    有 电 为 1,   没 电 为 0,   导通 为 1,   断开 为 0,    这样 ,  控制端 为  0  时,    输入端 输出端 为  1,    控制端 为  1 时,   输入端 输出端 为  0  。

     

    也就是     ! 1 = 0 ,   ! 0 = 1  ,       这就是 非门  。

     

     

    其实 非门 也可以用  未经改造 的,  正常 的 继电器 来 构造 :

     

                                 

     

     

     

     

    +  表示 接 电源 正极,  - 表示 接 电源 负极  。

     

     

    设 电源 电压 为 1 伏,    正极 电位 为 1 伏 ,     负极 电位 为 0 伏 ,   和 电源断开 的 电位 也是 0 伏 ,    1 伏 表示 逻辑 1,   0 伏 表示 逻辑 0   。

     

    当 输入端 输入 1 时,    J1 导通,   对  J2  的 控制端 造成 短路,    J2 控制端 电压 为 0,   J2 断开,  输出端 输出 0  ,

    当 输入端 输入 0 时,    J1 断开,   J2 控制端  有 电压,   可 正常工作,    J2 导通,   输出端 输出 1   。

     

    于是,   输入 1, 输出 0,  输入 0, 输出 1 ,     也就是    ! 1 = 0 ,   ! 0 = 1  ,       这就是 非门  。

     

     

    用 三极管 电路 表示  这个 非门 :

     

                             

     

     

    接下来  看 一个 重要 的 基本 开关元件,     双稳态开关  。

     

    在 百度百科 词条 “双稳态电路” 里,   说 双稳态电路 是 由  两个 或非门 组成,     大概 是 这样 :

     

                                   

     

     

     

    in 1 、in 2  为 输入端,    out 1 、out 2 为 输出端,     在  in 2 输入 为 0 的 情况 下,   当  in 1  输入 1 时,   无论 当前 是 什么状态,   out 1 会 输出 1,   out 2 会 输出 0,  之后 无论 in 1 输入 1 或 0,   都将 保持 这个 状态  。

    在  in 1 输入 为 0 的 情况 下,     当  in 2  输入 1 时,   无论 当前 是 什么状态,   out 1 会 输出 0,   out 2 会 输出 1,  之后 无论 in 2 输入 1 或 0,   都将 保持 这个 状态  。

     

    但是 我记得 小时候 看过的  一些  80 年代 初期 或者 80 年代 以前 的 书 上 讲 的 双稳态电路 是 2 个 三极管 互相 反馈 组成 的  。  嗯  ?

     

    实际上,   确实 可以用 2 个 继电器 或者 三极管 互相反馈 形成 双稳态电路  。

     

             

     

     

    in 1 、in 2  为 输入端,   out 1 、out 2 为 输出端,     开始时,   J2 导通,   out 2 输出 正极电位, 也就是 高电位, 也就是 有电压,  也就是 1  。

    此时,   J2 导通 对  J1 控制端 造成 短路,    J1 控制端 电压 为 0,  无电流 通过,  J1 断开,  out 1  输出 低电位,  也就是 0  。

     

    当 in 1 输入 1 时,   R1 、J2 控制端 串联电路 的 两端 都是 高电位,  电压 为 0,   J2 控制端 线圈 无电流 通过,  线圈 无磁性,   J2 断开  。

    J2 断开,   J1 控制端 的 短路 取消,    J1 控制端 正常工作,   J1 导通,    out 1 输出 正极电位, 也就是 1  。

    J2 断开,    out 2 输出 低电位,  也就是 0  。

     

    之后,   无论   in 1 输入  高电位 还是 低电位, 有电压 还是 无电压,   1 或 0,     都将 保持   out 1 输出 1,  out 2 输出 0 的 状态   。

     

    当   in 2 输入 1 时,    上述 状态 将 发生 反转,     out 1 输出 0,  out 2 输出 1 ,  且 之后 无论  in 2  输入 1 或 0,   都将 保持 这个 状态,  原理同上  。

     

     

    应该指出,    in 1 输入 1 时,   out 2 输出 0,   in 2 输入 1 时,  out 1 输出 0,   这个 0  是 低电压,   不是 无电压  。

    低电压 是 一个 相对较低 的 电压,  称为 低电平  。     相对 是 和 1 相对,   1 为 高电压,  0 为 低电压,   0 是 比 1 的 电压 相对 低 的 一个 电压  。

     

    为什么 0 是 低电压 而不是   无电压 呢 ?

     

    从 电路 中 可以看到,    out 1  连接 了   J2 控制端,  out 2 连接 了  J1 控制端,   控制端 有一定 的 电阻  。  假设 此时  J1 断开,   J2 导通,    out 1 应该 输出 0  。

     

    此时  J1 断开,  out 1  不能 和 正极 直接 相连,  不能 直接 输出 正极电位,   但   out 1 和  J2 的 控制端 相连,   电流 从 正极 出发, 通过 J2 控制端  仍然 可以 到达   out 1 ,    也就是说,   out 1 仍然 可以 输出 一定 的 电位,   如果  J2 控制端 的 电阻 不大,   那么  out 1 输出 的 电位 可能接近  正极电位,  也就是 高电位  。

     

    所以,   还需要 加 一个  R1  来 增加 电压降,  就是 让 电压 经过  J2 控制端 到达  out 1 时  降低 更多,  这样  out 1 输出 的 就是 相对较低 的 电位,  也就是 低电位  。

     

    严格的说,    out 1 输出的是  较小 的 电流,   较小 的 功率 。     加上 R1 是 为了 让 out 1 输出 较小 的 电流,   较小 的 功率 。

     

    严格的说,    out 1 输出 的 电位 还和   out 1 连接 的 外部电路 (外部元件)  的 电阻  有关,   这需要 和 外部电路 (外部元件) 、整体电路  结合 起来 看,  对 整体电路 进行 分析计算 ,    得出 适当 的 参数 。

     

    在 这样 的 电路 设计 中,         “1” (高电位) 和 “0” (低电位)  之间 的 电位 的 差值  是 一个 重要参数  。

     

     

    事实上,    out 1 、out 2 和 外部电路 (外部元件)  相连 会 造成 和 外部系统 的 耦合 很大,  基本上,  是 无法 用于 实用 的  。

    和 外部系统 的 耦合 很大 是指   双稳态电路 和 外部电路 之间 的 关联程度 很高,   电路参数 受 彼此 影响,  需要 将 双稳态电路 和 外部电路 一起 纳入 评估计算 电路 参数  。

    电路参数 指 组成 电路 的 各个 元器件 的 参数,  如 继电器 控制端 的 有效工作电压 、有效电流 、有效功率,    电阻 的 阻值,    等等  。

     

    要 让 这个 双稳态电路 可以 实用,   需要 在 out 1 、out 2 上 再加  两个 继电器 来 与 外部电路 解耦,  如下 :

     

                     

     

     

     

     

     

     

    增加 2 个 继电器  J3 、J4 ,    将 原来 的  out 1 、out 2 连接 到   J3 、J4  ,    让  J3 、J4  的  输出端 来 作为   out 1 、out 2  ,

    这样,   当  J1 导通,  输出 高电压 时,   可以 让 J3 导通,  out 1 输出 正极电压,  也就是  1  。 

    当  J1 断开,   R1 向 J3 控制端 输出 低电压 时,    J3 的 控制端 线圈 产生 的 磁性 不足以 让 J3 导通,  J3 断开,   out 1 输出 无电压,  也就是  0  。

     

    J2 和 R1 连接 的 是  J3 的 控制端,  不会 直接 连到 外部电路,    J1 和 R2 连接 的 是  J4 的 控制端,  不会 直接 连到 外部电路,

    out 1 、 out 2  是   J3 、J4 的 输出端 ,   J3 、J4 的 输入端 连 的 是 电源正极,   

    当  J3 导通 时,  out 1 直接输出 正极电压,    J3 断开 时,   out 1 输出 无电压,

    当  J4 导通 时,  out 2 直接输出 正极电压,   J4 断开 时,   out 2 输出 无电压  。

     

    这样 就 实现了 和 外部电路 解耦   。      解耦 的 效果 是,    双稳态电路 是 一个 独立 的 元件,   有 独立 、确定 、固定 的 电路参数,  不受 外部电路 的 影响  。  用 软件设计 的 话说,  就是 封装性好,   模块化  。

    电路参数 包括   继电器 控制端 的 有效工作电压 、有效电流 、有效功率,    电阻 的 阻值,     这是 内部参数  。

    内部参数  决定 了 双稳态电路 的 工作电压,   即 正负极 的 电压,    工作电压 是 外部参数 ,   这告诉 外部系统 应该 提供 多大的 电压,  使得 双稳态电路 正常工作  。

    out 1 、out 2 输出 多大 电压 表示 1,  多大电压 表示 0,  这也是 外部参数,    从 上面 的 设计图 中 可以知道,  输出 正极电压 是  1,  输出 无电压 是  0  。

     

     

    到现在,  我们 讨论 了 双稳态电路 的 两种 设计方法,  一种 是  2 个  或非门,  称为 设计 1,     一种 是 两个 继电器 互相反馈, 称为 设计 2   。

     

    设计 1   是  数字电路,    设计 2  是 电气电路  。      如果 用 三极管 实现  设计 2,  就是 电子电路,  也是 模拟电路  。

     

    数字电路 的 设计 简单, 结构清晰  。    模拟电路 的 设计 比较 底层 和 细节,   需要 较多 电路分析 、计算 和 调试 获得 适当 的 参数  。

    比如  设计 2  的 双稳态电路,   需要  获得  适当 的 R1 、R2 和 其它 电阻 的 阻值,   以及 继电器 的 控制端 有效工作电压 范围,  以及 继电器 控制端 电阻,  使得 R1 输出 低电压 时,   J3 处于 断开 状态  。

    具体 的 说,  就是  R3 和 J3 控制端 并联, 再 和 R1 、J2 控制端 串联,   这个电路 的 两端 接到 电源 正负极,  使得   J2 导通,  J3 断开  。

    这需要 适当 的 参数,  包括  R1 、R3 、继电器 控制端 电阻 的 阻值,  和 继电器 控制端 有效工作电压  。

     

    有效工作电压 分 2 个,   一个 是 导通电压,  一个 是 断开电压,     这 2 个 都是 指 一个 电压 的 范围,  不是 一个 唯一值  。

     

    导通电压 是  继电器 控制端 电压 在 导通电压 范围 内,    继电器 必然 且 稳定 的 导通  。

    断开电压 是  继电器 控制端 电压 在 断开电压 范围 内,    继电器 必然 且 稳定 的 断开  。

     

    显然,   R1 并不是  越大越好,   R1 太大会 让 流过 J2 控制端 的 电流 太小 导致  J2 无法 导通  。

     

    可以  给  J3  加 一个 电阻 R5,   就是  让  J3 控制端 先和 R5 串联,  再 和 R3 并联,  再 和  R1 和 J2 控制端 串联  。

     

    数字电路 可能 使用 的 元器件 会 多一些,   但 模拟电路 好像 也 省不了多少,  比如 为了 和 外部电路 解耦,  又 增加了  J3 、J4    两个 继电器  。

     

     

    用 三极管电路 表示 设计 2,   也就是 用 两个 三极管 互相反馈 组成 双稳态电路,  如下 :

                           

     

     

     

     

     

     

     

    未完,   后面 的 内容 见  《设计 逻辑电路 的 开关元件 (2)》  https://www.cnblogs.com/KSongKing/p/13454068.html   。

     

  • 相关阅读:
    [root@192 ~]# ls /etc/sysconfig/network-scripts
    解决unknown import path "golang.org/x/sys/unix": unrecognized import path "golang.org/x/sys"
    Centos 修改IP地址、网关、DNS
    Centos7 下安装golang
    yum国内镜像配置
    grep -R --include=*.log warning /var/log
    第五章 单例模式(待续)
    第四章 工厂模式(待续)
    第三章 装饰者模式(待续)
    第二章 观察者模式(待续)
  • 原文地址:https://www.cnblogs.com/KSongKing/p/13412340.html
Copyright © 2011-2022 走看看