我们先来说说集电极开路输出的结构
集电极开路输出的结构如图 1 所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为"0"时,输出也为"0")
对于图 1,当左端的输入为“0” 时,前面的三极管截止(即集电极C 跟发射极E 之间相当于断开),所以 5V 电源通过 1K 电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1” 时,前面的三极管导通,而后面的三极管截止(相当于开关断开)
我们将图 1 简化成图 2 的样子
图 2 中的开关受软件控制,“1” 时断开,“0” 时闭合
很明显可以看出,当开关闭合时,输出直接接地,所以输出电平为 0
而当开关断开时,则输出端悬空了,即高阻态
这时电平状态未知,如果后面一个电阻负载(即使很轻的负载)到地,那么输出端的电平就被这个负载拉到低电平了,所以这个电路是不能输出高电平的
图三中那个 1K 的电阻即是上拉电阻
如果开关闭合,则有电流从 1K电阻及开关上流过,但由于开关闭和时电阻为 0(方便我们的讨论,实际情况中开关电阻不为 0,另外对于三极管还存在饱和压降),所以在开关上的电压为 0,即输出电平为 0
如果开关断开,则由于开关电阻为无穷大(同上,不考虑实际中的漏电流),所以流过的电流为0,因此在 1K 电阻上的压降也为 0,所以输出端的电压就是 5V 了,这样就能输出高电平了
但是这个输出的内阻是比较大的(即 1KΩ ),如果接一个电阻为 R 的负载,通过分压计算,就可以算得最后的输出电压为 5*R/(R+1000)伏,即 5/(1+1000/R)伏
所以,如果要达到一定的电压的话,R 就不能太小
如果 R 真的太小,而导致输出电压不够的话,那我们只有通过减小那个 1K 的上拉电阻来增加驱动能力
但是,上拉电阻又不能取得太小,因为当开关闭合时,将产