很多信号的输出都标识了集电极开路(如旋转编码器的ABZ相输出信号),为什么是集电极开路(OC: Open Collector)呢?
example:
SN7407N
为一个集电极开路输出的六缓冲器,就是你输入低电平,输出端也是低电平;输入高电平,输出端就是高阻态,如图:
从上图中可以看出,一个非门
后面接了一个三极管
:基极接信号输入,发射极接地、集电极什么也没接就直接连输出端了(所以就是集电极开路)。
当输入一个低电平,经过一个非门
就变成了高电平,然后这个高电平使得三极管导通,此时输出端就直接通过三极管接地了,相当于输出为 0(吸收外面的电流)。
当输入为一个高电平,经过一个非门
就变成了低电平,然后这个低电平接在三极管的基极,三极管截止,输出程高阻态。
如果期望在没有输入信号时,将输出变为高电平(而不是高阻态),需要加上拉电阻和电源,如图:
如果电源为 12v
那输出的高电平就是 12v
.
集电极开路表示输出端要么为高阻态,要么为接地(sink current),不能输出高电平。一般通过接上拉电阻和电源正,使得高阻态变为高电平。使用集电极开路可以通过修改上拉电压的大小来改变高电平的幅值, 也可以实现线与。比较老的增量编码器或者脉冲发生器都是集电极开路的设计。
see link: http://www.evilmadscientist.com/2012/basics-open-collector-outputs/
其中芯片里头是 NPN 晶体管
关于晶体管: https://learn.sparkfun.com/tutorials/transistors
线驱输出(Line Drive) 和 推完输出(Push-Pull):
集电极开路(OC)与漏极开路(OD)电路是一样的,将三极管替换为场效应管就变成了 OD 电路。
除了 OC 或 OD 输出电路,还有两种输出: 推挽输出,就是既可以输出高电平,也可以输出低电平;线驱输出,输出高电平 或者 高阻态。
推完输出:
分析方法是一样的,上面一个为 NPN 晶体管,下面一个为 PNP 晶体管。
线驱输出:
当输入为高电平时, Output直接接在 Vcc 上,相当于输出高电平(向外输出电流)。当输入为低电平时,相当于高阻态。
三种输出结构:
引用别人的一个总结:
用的最多的还是 集电极开路 和 推挽输出,很多低端增量编码器都是集电极开路输出(如,欧姆龙)。但是如果接的编码器采集卡,则编码器最好是推挽输出,NI这么说的:
A Push-Pull quadrature encoder is recommended, because the Multifunction DAQ card works best when it is constantly driven. As mentioned above, the Push-Pull configuration does not float, it is always supplying Vcc or ground, which is why it will work best with a Multifunction DAQ card.
比起OC或者OD来说,推挽结构高、低电平驱动能力都很强。如果两个输出不同电平的输出口接在一起的话,就会产生很大的电流,有可能将输出口烧坏。而 OC 或 OD 输出则不会有这样的情况,因为上拉电阻限制了电流的大小。如果是推挽输出的要设置为高阻态时,则两个开关必须同时断开(或者在输出口上使用一个传输门),这样可作为输入状态。