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

    这篇文章  是 《设计 逻辑电路 的 开关元件》  https://www.cnblogs.com/KSongKing/p/13412340.html   的 续篇  。

     

    先来 设计 延时开关  。

     

    延时开关 是 利用 电容器 充电 时,  电容器 两端 的 电压 逐渐 上升 的  特点 来 实现 的 。

     

    看一下  RC 电路 :

                             

     

     

     

    接通电源 后,   电容器 开始 充电,  开始时,  充电电流 最大,   电容器 可以看作是一个 较小 的 电阻,  根据 欧姆定律 分压定理,   C 两端 的 电压 较小,

    当 C 充电 完成 后,  C 相当于 一个 断路, 电阻无穷大,   根据 分压定理,   C 两端 的 电压 等于 电源电压  。

     

    R 越大 、C 越大,  充电时间 越长,   R 越小 、C 越小,   充电时间 越短 。

     

     

    在 RC 电路 里 接入 一个  继电器 ,     就可以 组成 延时开关  。

                          

     

     

    设  R = 10 欧,    J1 的 控制端 电阻 为  R1,   R1 = 10 欧,   电源电压 为 2 伏,    J1 控制端 的 工作电压 是 1 伏,  即 当 控制端 电压 为 1 伏 时, J1 导通  。

     

    开关 K  闭合 后,  RC 电路 接通电源,     C 开始充电,   C 充电过程 中,  C 可以看作是 一个  电阻 和  J1 控制端 并联,  设 并联电阻 为  R2,   可知 R2 < R1 = R ,

    即  J1 控制端 两端 的 电压 小于  1 伏,   J1 处于 断开状态  。

     

    当 C 充电 充满 时,   C 为 断路,  电阻无穷大,   此时 , 电路 就变成了   R 、R1 的 串联电路,   R1 两端 的 电压为 1 伏,  达到 J1 控制端 工作电压,  J1 导通  。

     

    J1 导通 就是 延时开关 导通 。      从 K 闭合 到  J1 导通,  中间 会 经历 C 的 充电时间,   这就是 延迟时间  。

     

    当  R 和 R1  的 阻值 确定 时,   C 越大,  充电时间 越长,  C 越小,  充电时间 越短 。

     

    也可以 把 R 、R1 和 C 一起 纳入 参数 计算,   计算出 符合 要求 的 充电时间 的  R 、R1 、C  。  就是说,  不单 可以 调节 C 的 大小 来 获得 要求 的 充电时间,  也可以 调整  R 、R1 的 阻值 来 调节 充电时间  。

     

    实际上,   这里  R1 和 C 并联,  对 充电时间 的 影响 可能有点 复杂  。

     

    但 实际上,   也不需要 精确计算,  根据 经验 和 一些 调试,  可以获得 适当 的  R 、R1 、C ,   满足 要求 的 充电时间  。

     

    用 三极管电路 表示 延时开关 :

                             

     

     

     在 电路 中,  延时开关 的 示意图 :

                                 

     

    输入端 接通 电源正极 后,   延迟一段时间 后,   输出端 输出 1,   也就是 高电位,  也可以说是 正极电压  。

    注意,  输入端 接通 电源正极 后 要 一直 接通 电源正极,   延时开关 才能 正常工作  。

     

     

    再来看  脉冲延时开关,       《设计 逻辑电路 的 开关元件》  https://www.cnblogs.com/KSongKing/p/13412340.html   里 介绍 了  双稳态开关, 

    双稳态开关 的 示意图 :

                                         

     

     

    因为  一般 只用得到 一个  输出端,  所以 只 画出  out 1   。

     

    延时脉冲开关 的 电路图 :

                        

     

     

    输入端 输入 一个 1 脉冲 时,   双 1 的 out 1 变为 1 ,   触发 延 1,  延 1 开始 充电,  到 延迟时间 后,  延 1 输出 1,  输出端 输出 1,  双 2 的 out 1 变为 1, 触发 延 2,   延 2 开始 充电,  到 延迟时间 后,  延 2 输出 1,   双 1 、双2 的 out 1 都 变为 0,   本次工作过程 结束 。

    在 本次工作过程 中,    输入端 输入 1 脉冲 后,  经过 延 1 的 延迟时间,  输出端 输出 1,  从此时 又 经过 延 2 的 延迟时间,   输出端 输出 0,  双 1 、双 2 的 out 1  变为 0,  延 1 、延 2 放电,  放电 到 一定程度 后 断开,  断开后 仍然 放 没放完 的 电,  放电完成 后   整个电路 恢复 为 初始状态 。

    在 本次工作过程 中,  输出端 输出了 一个 1 脉冲,  脉冲宽度 是 延 2 的 充电时间,  也就是 延 2 的 延迟时间  。

     

    其实 这个 设计 是 存在问题 的,   延 2 输出 1 是 双 2 out 1 = 1 支持 的,   若 双 2 out 1 = 0,  则 延 2 输出 0,  而 延 2 输出 1 使 双 2 out 1 变为 0,  双 2 out 1 变为 0 则 延 2 输出 0,   这就 形成了一个 循环依赖,  这可能会导致 不稳定 的 问题 。

    总的来说,   这是一种 直接反馈,   这种 直接反馈 可能 导致 不稳定 ,  或者说  预期外 的 结果  。

    但 这 似乎 又和 实际 的 元件 和 电路 的 品质表现 有关,   对于 理想 的 元件 和 电路,   这样 的 设计 似乎 没问题  。

     

    理想 的 元件 和 电路,   对 信号 的 响应 是 即时 的,   大概 可以说是 只需要 “很短的时间”,   且 各 元件 对 响应 保证 完成 和 保证 按 顺序完成,   这样就不存在问题  。

     

    实际中,   延 2 输出 1,  使得  双 2 out 1 变为 0,  需要 确保一小段时间, 在这段时间内,  即使 双 2 out 1 变为 0,  但 延 2 仍然可以 输出 1,  确保 双 2 out 1 变为 0,   这段时间后,   延 2 才 输出 0  。

     

    如果 这个 问题 存在,  要怎么 改进设计 ?      留给大家思考,   我懒得画了,  哈 。

     

    我们 假设 这个 问题 不存在,  接着分析  。

     

     

    电容器 的 充电放电 是一个 挺麻烦 的 事情,   以 延 1 为例,   电容器 充电 充满,  则 延 1 接通 。  双 1 输出 0 时,  相当于 延 1 和 电源断开,  电容器 放电,  而 放电 必须 在 下一次 充电 之前 完成 ,  也就是 必须 在 延时开关 下一次 被 触发 前 完成  。

     

    最快的情况,   本次操作 后 执行 下一次 操作, 下一次操作 完成后 又 返回 调用 本次操作,  这类似于 程序 里 的 循环 和 goto  。

     

    这就要求 本次操作 的 放电时间 要 小于 下一次操作 的 充电时间  -   对 下一次操作 输出 1 的 时间 (1 脉冲 的 脉冲宽度) ,     且 越小越好  。

     

    如果 本次操作 的 时间很长,   就 意味 着 本次操作 的 充电时间 很长,   如果 下一次操作 的 时间很短,  就 意味着 下一次 操作 的 充电时间 很短,  这要求 本次 操作 的 放电时间 更短,

    于是,   这就要求  本次操作  的 充电时间 很长 而 放电时间 很短,   这在 技术 上 做到 比较 有 难度  。

    因为 这要 权衡 充电电阻 和 放电电阻,  从 上文 电路图 可以看到,  充电电阻 是 R,   放电电阻 是 继电器控制端 线圈电阻  。

    对于  NPN 型 三极管电路,   放电电阻 是  基极电阻  +  基极 和 发射极 之间 的 电阻  +  发射极电阻  。

     

    基极电阻 是 连在 基极 上 的 电阻,   发射极电阻 是 连在 发射极 上 的 电阻,

    基极 和 发射极 之间 的 电阻   =   三极管内部  基区电阻 + 发射区电阻 + 基区 和 发射区 之间 PN 结 的 电阻

     

    当然, 事实上,  还有一部分 放电电流 是 通过 充电电阻 R,  流到 集电极,   又流到 发射极,  又通过 发射极电阻  来到 电容器 负端 。

     

    所以,  要 权衡设计 这些电阻,   而 发射极电阻 还关系 到 输出电压,   这跟 连在 发射极 上 的 外部电路 的 电阻(阻抗) 又有关系 。  这是不是  “输出阻抗”  问题 ?

     

    电容器放电 刚开始 的 一段时间 内,   延 1 可能 仍然 是 导通 的,   这段 时间 要不要 算到 延时开关 的 导通时间 里,  也就是 输出 的 1 脉冲 的 脉冲宽度 里 ?

     

    而  延 1 的 输出端 一方面 作为 延时脉冲开关 的 输出端, 一边 和 双 2 的 in 1 相连,  双 2 的 in 1 在 out 1 为 0 时,  in 1 会输出 一定 的 低电压,  这会 通过 输出端  和 外部电路 产生 耦合,  要不要 在 延 1 和 输出端 之间 加一个 继电器 或者 三极管开关 解耦 ?

     

    又或是 在  延 1 和 双 2 之间 加 一个 继电器 或者 三极管开关 解耦  ?

     

    或者 把 输出端 设 在 双 2 的 out 1,  以 双 2 的 out 1   作为 延时脉冲开关 的 输出端,  但 这样  延 2 的 输入端 会 和 外部电路 产生 耦合,  延 2 放电 的 时候, 放电电流 会 流向 外部电路  。

     

    这似乎 引出 了 “输入阻抗” 和 “输出阻抗” 的 问题,   两个 元件 要 连在一起用,  输入阻抗 和 输出阻抗 要 匹配, 或者说 符合 彼此 给出 的 规格 ,  大概 就是 输入阻抗 和 输出阻抗 问题 吧 。

    规格 是指 阻抗 的 范围 ,    两个元件 要 连在一起用,  自己 的 输出端阻抗 要在 对方 给出 的 输入阻抗 范围 内 。  以及,  对方 的 输入端阻抗 要 在 自己 给出 的 输出阻抗 范围 内  。

     

    耦合 是 普遍存在 的,   但, 通过 制定 统一 的 输入输出 接口,  可以进行 管理 和 调节 。   

    输入输出 接口 可以 减小 耦合,  统一 输入输出接口 可以 对 输入输出 的 耦合 统一 计算,  可以计算 很多 元件 连在 一起用 时 的 耦合 积累,   可以计算得到 并联 的 最大情况 的 耦合 和 串联 的 最大情况 的 耦合 ,   并 将 它们 控制在 一个 比较小 的 范围内,   在 这个 范围 内,   耦合 对 电路 的 影响 不大,   电路 可以 正常工作  。

     

    通过 对 电路参数 的 设计,  以及 晶体管 的 技术品质 的 提升,  可以 在 元件 数量很多 时,  耦合 的 累积量 仍然 很小,  不会 超过某个 范围,   就像 数学上 的 极限  。

     

    这是 一种 比较 理想 的 情况  。

     

    晶体管 的 技术品质,   比如 开关特性,  开时,  电阻很小,   关时, 电阻很大,   开关 的 反差 越大,  则 电路 的 误差耦合 越小,   电路越稳定, 电路 的 规模 可以 做的 越大 。   电路规模  指  元件数量 。     比如 大规模集成电路,  超大规模集成电路  。

     

    误差耦合 就是 上面 说的 不需要 但是 又存在 的 耦合 ,  这些 耦合 会 造成 电路 的 误差 ,  误差 在 一定范围内,  电路 可以 正常运行,  表达 预期 的 逻辑,   误差 积累 超过 一定范围,   电路 会 出错,  表达出 错误逻辑,     比如 开 变成 关, 关 变成 开,  或者,  该开不开, 该关不关  。

     

    数字电路 的 误差耦合  可以 分为 2 大类 :

    1    基本开关电路 的 误差耦合

    2    特定电路 的 误差耦合

     

    先说说  基本开关电路 的 误差耦合,    理论上,  继电器,  是 一个 理想 的 开关元件,    可以说 不存在 误差耦合 。  因为 继电器 的  控制端 和 输入输出端 是 独立 的  2 条 线路 ,    所以, 继电器 没有 基本开关电路 的 误差耦合  。

    三极管 的 基极 、发射极 、集电极  共用 一条 线路,  相当于  控制端 和 输入输出端 共用 一条 线路,   所以, 三极管开关电路 存在 基本开关电路 的 误差耦合 。

     

    特定电路 的 误差耦合  比如  上文说到的 双稳态电路 的 in1 和 延时脉冲开关 的 输出端 直接连接 时, 可能 通过 延时脉冲开关 的 输出端 向 外部电路 输出 低电压 。   又比如 上文说到的 延 2 的 输入端 和 延时脉冲开关 的 输出端 相连 时,   可能 通过 延时脉冲开关 的 输出端 向 外部电路 输出 放电电流  。

     

     

     

    假设  本次操作 和 下一次操作 的 延时脉冲开关 的 延迟时间 一样,    下一次操作  完成后 又返回执行 本次操作,   那么,  简单的, 理想的,  这两个操作 的 延时脉冲开关 交替 输出 的 脉冲 可以用 一个 方波 来 表示 :

     

                                 

     

     

    简单的, 理想的,  延 1 的 充电时间 可以认为 是 方波 的 一个周期,   放电时间 应在 0 半周 以内, 且 越小越好  。  上文说了,  技术上, 要让 放电时间 远小于 充电时间 实现起来 可能 比较 困难,     在这里,  因为 充电时间 = 一个周期 = 1 半周 + 0 半周 = 1 半周 + 最大放电时间,   可以 让  0 半周 比 1 半周 长 比较多,  这样,   充电时间 仍然 大于 放电时间,  但是 放电时间 的 范围 变大 了,   或者说,   0 半周 比 1 半周 越长,   最大放电时间 越接近 充电时间,   技术上 比较容易 实现  。

                               

     

     

    对于 延 2,   充电时间 是 1 半周,  放电时间 是  这个周期 的 0 半周 + 下个周期 ,   所以,  延 2 允许 的 放电时间 远大于 充电时间,   这个 技术 上 容易实现  。

    注意,  是 允许 的 放电时间 远大于 充电时间,    允许 的 放电时间 最大 可以达到 这个周期 的 0 半周 + 下个周期 这么长,  但不是说 要 做到 这么长, 事实上, 应该 比 这个 小,    越小越好  。

     

                                   

     

     

     

    上面说的 这些 问题,    早期 的 电子计算机 工程师 应该都 碰到过,  或者说,  经历过  。

     

    再来 看   一次性开关,    这里会用到 开关元件,  开关元件 的 示意图 :

                                 

     

     

    控制端 是 1 时,   输入端输出端 导通,   控制端 是 0 时,  输入端输出端 断开  。

    开关元件 可以是一个 继电器,  也可以是 三极管开关电路,  等等  。

     

    三极管开关 电路图 :

                                     

     

     

     

    一次性开关 电路图 : 

                              

     

    控制端 输入 1 脉冲,  双 1  的 out 1 变成 1,  使 开关 1 导通,   之后,  输入端 输入 1 就可以 通过 开关 1,   使 双 2 的 out 1 变成 1,   使 开关 2 导通,

    之后,   当 输入端 的 1 结束后,  就变成了 0,   0 使 非门 输出 1,   通过 开关 2 输出 到  双 1 的 in 2,  使 双 1 out 1 变成 0,  开关 1 断开  。

    开关 1 断开 后, 输入端 无论 输入什么,  输出端 都是 0,  这就是 一次性开关 的 效果 :   当 控制端 输入 1 脉冲 后,  一次性开关 开始工作,  输入端 和 输出端 导通,  当 输入端 输入 1 脉冲 时, 输出端 输出 1 脉冲,   1 脉冲 结束 后,  一次性开关 停止工作,   输入端 无论输入什么,  输出端 都是 0  。

    还有,   当 控制端 输入 1 时,   双 1 out 1 会 输出 1 到 双 2 的 in 2,  使 双 2 out 1 变成 0,  开关 2 断开 。   这样 就 切断了  非门 和  双 1 in 2 的 通路,  不然,  非门 输出 的 1 会 阻止  双 1 out 1 变成 1 。   在 上一次 使用后,   双 2 out 1 一直 是 1,  开关 2 一直 导通  。

     

    还要说明一点,   双稳态开关 在 第一次 使用 前 要 设置 初始状态,  因为, 接通电源 后,  双稳态电路 的 状态 是 随机 的  。  如果 要求 初始状态 是 out 1 = 1,  可以 让 in 1 = 1 来 设置 这个 初始状态 。

     

  • 相关阅读:
    Android开发进阶——自定义View的使用及其原理探索
    Android开发——通过wifi接收IPCamera视频流
    (数据科学学习手札84)基于geopandas的空间数据分析——空间计算篇(上)
    (数据科学学习手札83)基于geopandas的空间数据分析——geoplot篇(下)
    (数据科学学习手札82)基于geopandas的空间数据分析——geoplot篇(上)
    (数据科学学习手札81)conda+jupyter玩转数据科学环境搭建
    (数据科学学习手札80)用Python编写小工具下载OSM路网数据
    (数据科学学习手札79)基于geopandas的空间数据分析——深入浅出分层设色
    实用的Python(3)超简单!基于Python搭建个人“云盘”
    (数据科学学习手札78)基于geopandas的空间数据分析——基础可视化
  • 原文地址:https://www.cnblogs.com/KSongKing/p/13454068.html
Copyright © 2011-2022 走看看