Answers:
开漏(在BJT的情况下为集电极开路)有两种常见的应用:
1)将多个输出连接到同一条线上。这称为“线或”。例如,您可能在设备上有一个通常为高的复位引脚,该引脚从微控制器引脚和另一个源(例如按钮)复位。复位引脚通过上拉电阻连接到高电平。微控制器被配置为漏极开路输出。按下按钮时,该按钮会接地。如果微控制器将其输出拉至0或按下按钮,则设备将复位。
请注意,当微控制器将其输出引脚设置为1时,该引脚实际上已与线路断开连接。它没有以任何电压驱动线路(“源极”),因此,当按钮将线路拉至地面时,不会短路。
因为“线或”配置非常有用,所以这就是为什么引脚(例如微控制器上的复位,中断线,触发器等设备上的清除和使能线)均处于“低电平有效”状态-意味着它们通常被拉高(再次) (通过上拉电阻),并且配置为漏极开路的任何几种器件都可能将其拉低。此类输入通常被指定为低电平有效,信号名称上方的横线或前导!(!CLR)或结尾的#号(CLR#)。
2)控制设备连接到不同的电源电压。假设您有一个需要20 mA电流但5伏电压的继电器。但是您的微控制器输出只能将引脚驱动到最高3.3v的电源(VCC)电压。通过漏极开路输出,您可以将继电器的一侧连接到5 V,另一侧连接到微控制器的输出引脚。当微控制器in的输出为1时,什么也没有发生(再次,表现为引脚断开)。当它设置为0时,它将使继电器的底部接地,从而完成电路并操作继电器。在这种应用中,重要的是在继电器线圈上放置一个“反激”二极管,以防止在设备断电时损坏微控制器。
对于ULN2803(达林顿晶体管阵列)之类的输出驱动器,您可以驱动连接至高达50v电压的负载,并通过逻辑兼容输入对其进行控制。
a microcontroller can often sink more current (drive to ground) than it can source (drive to the VCC of the microcontroller)
这是不正确了与现代CMOS微控制器
开漏输出只是连接到0V的开路开关。要使电流通过,您需要向其中馈入电流,这可以通过上拉电阻来完成。如果您没有将电流传递到引脚,则将看不到电压:-
这是两个共享相同漏极开路输出的设备-注意上拉电阻为+ 5V。实际上,该电路使用“漏极开路”执行逻辑-如果任一“与非”门以1,1“激活”,则它们会将BUS下拉至0V。因此,传递到总线的逻辑是
总线的反向= AB + CD
MOSFET通常用作开漏器件,尽管常规BJT也可以执行此功能。开漏输出是常规CMOS输出的简化-可以快速将其接地,但由于通过上拉电阻的寄生电容器的充电时间,因此在+ Logic的返回过程中将较慢。
1)为了简化tcrosley回答的第一点,在输出内部不提供上拉电阻的优点是能够在许多输出之间共享该上拉电阻。然后将输出并联布线,所有输出均连接至共享电阻和接地。
2)电阻“下方”的点(在示意图中)是电路其他部分收集组合输出的地方。(当然,就地面和供应而言,可能全部相反。)
3)如果您不想从许多输出中收集组合输出(并且电路到处都使用相同的电源),那么您就不想使用没有上拉部件的输出。否则,会(以某种方式)为您提供“不完整”的输出,您可以根据需要进行自定义。