关于上拉电阻和下拉电阻的说明

参考链接

错误接线方式说明:

未添加上拉电阻或下拉电阻的接线方式如下,但是这种方式有问题,无法在实际环境使用,分析如下:当开关合上的时候,开关的左右连通,这时 3.3v 就顺着导线进入 D0,没毛病。但是在开关断开的时候,开关的左端和右端断开了,这样 3.3v 到开关的右端就过不去了,开关的左端就变成悬空了,由于受环境中电磁波等干扰,这时 D0 的输入到底读入的到底是一个什么值就变成玄学了,可能是低电平 LOW,可能是高电平 HIGH。

《关于上拉电阻和下拉电阻的说明》

下拉电阻的使用方法:

上述接线只关心了开关合上的情况,但是并没有考虑开关断开的情况,因此设计里应该在开关断开的时候 D0 引脚上应该是低电平。那是不是把 GND 连在开关的左端就可以了呢?当然不行,这样的话当开关合下的时候 3.3v 和 GND 都会走到开关的左端,就会短路。正确的姿势应该是在开关的左端和 GND 之间接一个阻值非常大的电阻,这个电阻就叫做下拉电阻,这样以来,当开关打开的时候,D0 就会通过这个下拉电阻获得一个 GND 上的低电平信号。

在Esp8266,通常使用的下拉电阻的阻值是10kΩ。这种将悬空端置为低电平的方式就叫做下拉,对应的英文名称叫 pull-down 或者 pull-low。

《关于上拉电阻和下拉电阻的说明》

上拉电阻的使用方法:

和下拉电阻的概念类似,上拉电阻就是将悬空端拉成高电平,这样在开关断开的情况下 GPIO16 就会呈现高电平。接线方式如下图,电阻的一端接在了3.3v 的位置,表示上拉,而开关的另一头接在了 GND 上,如果程序不改的话表现应该是反过来的,即与正常的逻辑是反着的,低电平代表有效。

《关于上拉电阻和下拉电阻的说明》

关于下拉电阻和上拉电阻对比如下图。

注意:对于采用内部上拉电阻的情况,要将开关公共端接到GND上面。

《关于上拉电阻和下拉电阻的说明》

Arduino UNO中上拉电阻的使用

由于Arduino UNO的主控芯片为ATmega328P,该芯片内部有上拉的功能,可以使用内部上拉功能代替外部上拉,采用内部上拉时,管脚定义如下

pinMode(2,INPUT_PULLUP); //将2号管脚设置为输入并且内部上拉模式

不采用上拉电阻时定义管脚代码为pinMode(2,INPUT);

注意:ATmega328P仅仅只有内上拉功能,没有下拉功能。

ESP8266中上拉电阻的使用

对于ESP8266,其GPIO 0-15 引脚都配有内置上拉电阻。这一点与Arduino十分类似。GPIO16 引脚配有内置下拉电阻。

补充说明:由于芯片内部都是弱上拉电阻,实际使用中还需要根据实际场景进行灵活使用。

    原文作者:云无极
    原文地址: https://blog.csdn.net/zhigedali/article/details/123328083
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞