首先,让我们考虑双路(单刀双掷)开关的情况:
当开关接通时,微控制器输入将连接到+3.3V,意味着高电平。当开关关闭时,微控制器输入将连接到0V,表示低电平。但是如果我们只有一个按钮呢?
当按下按钮时,微控制器输入将连接到0V,表示低电平。然而,当按钮未被按下时,微控制器输入实际上没有连接到任何东西:
这就好像什么都没有连接一样:
这种情况下的输入电平是多少?高还是低?因为它没有真正连接到任何东西,所以输入可以是任何东西,这取决于环境中的静电或电磁辐射。它可能只是接收无线电波(像天线一样),然后在弱定义的高和低状态之间来回转换。微控制器输入没有明确定义,可以是任意值(随机)的这种状态称为浮动。
上拉和下拉电阻
为了解决这个问题,需要在输入端增加一个上拉电阻或下拉电阻(上拉电阻如下图所示):
当按钮未按下时,上拉电阻会将微控制器输入拉高至+3.3V,提供一个明确定义的高电平。当按下按钮时,微控制器输入将直接连接(短路)到地(0V),提供明确定义的低电平。在这种情况下,会有一些电流流过上拉电阻,但由于电阻值相对较高,所以电流量很小。
您可能会注意到,电阻符号看起来像一个小弹簧,这正是它在本例中的作用。我们都使用过自动关闭的门,比如公共设施中常见的门——除非你主动把门打开,否则会有一个机制将它再次关闭。如果没有自动关闭机制(现在想象门没有闩锁机制),门会被风吹动或被进出的人移动,它不会默认到任何特定的位置。上拉(或下拉)电阻类似于这些门上的自动关闭机制,它在不被主动驱动时将输入保持在特定电平。因此,上拉电阻就像自动关闭的门上的弹簧——除非有足够强壮的人过来把门推开,否则门将默认处于关闭位置。
显然,情况可以反过来,按钮可以连接到+3.3V(高电平),而下拉电阻可以用来保持输入为低电平,否则:
然而,上拉电阻配置更常用。
开漏输出
一些微控制器输出可以设置为开漏(或者只能设置为开漏)。开漏输出只能被驱动为低电平,而不能被驱动为高电平;输出为低电平或浮动。实质上,输出只是简单地连接到晶体管的漏极引脚(因此称为开漏)。
当控制线被驱动为高电平时,晶体管将输出短路至地(0V),将其拉低。当控制线被驱动为低电平时,晶体管为高阻态,输出悬空。
一些通信方案,例如I2C和CAN,使用这种布置来允许多个设备通过相同的通信线路进行通信,而没有短路的可能性(冲突,其中一个设备试图将线路驱动为高,而另一个设备试图将线路驱动为低);这种情况下,上拉电阻用于在线路未被有效拉低时保持高电平。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !