一些51的单片机P0口或者一些传感器经常会提到开漏弱上拉。查找资料经常会说没有上拉能力,提供不了高电平,听着是这道理,但是还是不情况到达是什么。我以DS18B20传感器中的弱上拉来介绍.
单个DS18B20接线方式:VDD接到电源,DQ接单片机引脚,同时外加上拉电阻,GND接地,注意这个上拉电阻是必须的,就是DQ引脚必须要一个上拉电阻DS18B20上拉电阻,首先我们要知道什么是漏极开路,首先看一下场效应管(MOSFET),如图1所示。
图1 MOSFET电路图
场效应管是电压控制型元器件,只要对栅极施加一定电压,DS就会导通。
漏极开路:MOS管的栅极G和输入连接,源极S接公共端,漏极D悬空(开路)什么也没有接,直接输出,这时只能输出低电平和高阻态,不能输出高电平。那么这个时候会出现三种情况,MOSFET内部结构图如图2所示:
图a为正常输出(内有上拉电阻):场效应管导通时,输出低电位输出低电位,截止时输出高电位。
图b为漏极开路输出,外接上拉电阻:场效应管导通时,驱动电流是从外部的VCC流经电阻通过MOSFET到GND,输出低电位,截止时输出高电位。
图c为漏极开路输出,无外接上拉电阻:场效应管导通时输出低电位,截止呈高阻态(断开)。
图2 MOSFET内部结构图
总结:
开漏输出只能输出低电平,不能输出高电平。漏极开路输出高电平时必须在输出端与正电源(VCC)间外接一个上拉电阻。否则只能输出高阻态。
DS18B20是单线通信,即接收和发送都是这个通信脚进行的。其接收数据时为高电阻输入,其发送数据时是开漏输出,本身不具有输出高电平的能力,即输出0时通过MOS下拉为低电平,而输出1时,则为高阻,需要外接上拉电阻将其拉为高电平。因此,需要外接上拉电阻,否则无法输出1。
外接上拉电阻阻值:
DS18B20的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ,
所以正常选择4.7K电阻,或者相近的电阻值。