上拉电阻(Pull-upResistors)

英文原文地址:

https://learn.sparkfun.com/tutorials/pull-up-resistors/introduction

 

介绍:


上拉电阻在使用微控制器(MCUs)或者其他数字逻辑器件的时候很常见。本教程会解释什么时候和什么地方会用到上拉电阻,然后我们会通过一个简单的计算来展示为什么上拉电阻很重要。

 

什么是上拉电阻

我们设想你有一个MCU,它有一个配置成输入的引脚。如果没有东西连接在该引脚上,并且你的程序要读这个引脚的状态,这个状态是高(拉到VCC)还是低(接地)?这很难说。这种情况叫做悬空。为了防止这种未知状态,就需要一个上拉或者下拉电阻来保证引脚处于高电平还是低电平状态,同时需要流过少部分电流。

       简单起见,我们将把注意力放在上拉电阻上,因为它们比下拉电阻更常见。它们使用相同的概念,除了上拉电阻连接到高电平(通常3.3V或者5V,并且作为VCC),而下拉电阻连接到地。

上拉电阻经常和按键以及开关在一起使用。

       通过使用上拉电阻,输入引脚将在按键按下时读到高电平。换句话说,VCC和输入引脚(不是和地)之间会有小电流流过,输入引脚读出的电压接近VCC。按键按下时,输入引脚直接接地。电流通过电阻流入地,输入引脚读出低电平。记住,如果这里没有这个电阻,你的按键将使VCC接地,这是很糟糕的,就是我们说的短路。

       那么怎么选择电阻值呢?

简短的答案就是你需要一个近似10kΩ的电阻来上拉。

小电阻值叫做强上拉(更多电流),高电阻值叫做弱上拉(小电流)。

选择上拉电阻的阻值需要满足两个条件:

1、按键按下,引脚电平拉低。R1的阻值控制你希望VCC流出多少电流通过按键到地。

2、按键未按下,引脚电平拉高。上拉电阻控制引脚的电平。

对于条件1,你不希望电阻值过低。电阻值越低,按键按下的时候就会消耗更多的能量。一般你希望电阻值稍大一些(10KΩ),但是你不希望阻值过大,以免和条件2冲突。一个4MΩ的电阻可以作为上拉电阻,但是它的阻值太大(太弱)以至于不能在所有情况下正常工作。

条件2的一般规则是使用一个近似小于输入引脚阻抗(R2)1/10数量级的上拉电阻(R1)。微控制器的输入引脚阻抗范围在100K-1MΩ。这里,阻抗只是电阻值的另一种说法,在上图中用R2表示。因为,按键按下时,小电流就会从VCC流过R1进入引脚。上拉电阻R1和输入引脚阻抗R2分得电压,这个电压需要足够高来使得输入引脚读出高电平状态。

举个例子,如果你使用一个1MΩ的电阻来上拉,输入引脚阻抗约为1MΩ(构成一个分压器),输入引脚上的电压将是VCC的一半,微控制器引脚可能不是高电平状态。在一个5V系统中,MCU读出引脚状态电压是2.5V会是什么状况?是高还是低?MCU不知道结果,你可能读出高或者低状态。而10K到100KΩ可以避免大部分的问题。

既然上拉电阻需求这么广泛,很多MCU,比如Arduino平台上的ATmega328 微控制器,有可以开启和禁用的内部上拉电阻。启用Arduino的内部上拉电阻,你可以在你的setup函数中使用下面一行代码:

pinMode(5,INPUT_PULLUP); // Enable internal pull-up resistor on pin 5


       需要指出的另外一点事上拉电阻阻值越大,引脚响应电压变化也就越慢。这是因为系统提供的引脚实际上是一个电容和一个上拉电阻的组合,因此组成一个RC滤波器,并且RC滤波器需要时间充电和放电。如果你有一个快速变化的信号(比如USB),高阻值上拉电阻可能限制引脚真实的状态转变速度。这就是为什么你经常看到USB信号线上电阻值为1K到4.7KΩ的原因。

       所有这些因素都会影响决定使用多大的上拉电阻。

 

计算上拉电阻阻值

      

       我们考虑你在上面的电路中按键按下时,希望限制电流到1mA左右。其中Vcc=5V,你需要使用多大的电阻。

       使用欧姆定理很容易计算上拉电阻的阻值:

       根据上面的电路图,欧姆定理公式变成:

       整理上面的方程并求解电阻值:

记住在计算前将所有单位转换成伏特、安培和欧姆(比如1mA=0.001A),接出电阻为5KΩ

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值