使用上拉电阻

英文原文地址:

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函数中使用下面一行代码:

  1. pinMode(5,INPUT_PULLUP); // Enable internal pull-up resistor on pin 5  
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Ω

<think>好的,我现在需要回答用户关于上拉电阻的问题。首先,我得回忆一下上拉电阻的基本知识。上拉电阻通常用于数字电路中,连接到电源电压,用来确保信号线在无驱动时保持高电平。这样可以防止信号线处于不确定的浮空状态,避免电路误动作。 接下来,我需要详细说明上拉电阻的作用。可能包括几个方面:确定空闲状态、提高噪声容限、限流保护等。同时,用户问到使用后可以防止哪些问题,这里应该列举比如信号漂移、静电干扰、误触发等情况。 还要考虑应用场景,比如在开漏输出、总线通信、按钮输入等情况下使用上拉电阻的例子。可能需要提到I2C总线,因为这是常见的例子,其中上拉电阻确保SDA和SCL线在无设备拉低时保持高电平。 另外,需要注意电阻值的选择。电阻过小会导致电流过大,增加功耗;电阻过大可能无法有效拉高电平,影响上升时间。这里可能需要公式计算,比如根据电源电压和所需电流来计算电阻值,例如使用欧姆定律:$R = V/I$,但需要确保用LaTeX格式。 还要检查是否有相关的引用资料,比如是否有提到某些书籍或资料支持这些内容。例如,引用《电子学》中的相关内容,或者在I2C规范中的说明。 最后,生成相关问题时要考虑用户可能进一步想知道的内容,比如如何选择阻值、与其他电阻的区别、实际电路设计中的注意事项等。 需要确保回答结构清晰,分点列出,并且每个部分都准确无误。同时,按照用户的要求,使用中文,正确应用LaTeX格式,独立公式用$$...$$,行内公式用$...$。比如在计算电阻值时,可以写成:当电源电压为$V_{cc}$时,选择上拉电阻$R$需满足$R \leq \frac{V_{cc} - V_{IH}}{I_{OH}}$,其中$V_{IH}$是输入高电平的最低电压,$I_{OH}$是驱动源的最大拉电流。 总结一下,回答的结构应该是先介绍上拉电阻的定义和作用,然后详细说明各个作用点,接着讨论能防止的问题,再给出应用场景和电阻值选择的注意事项,最后生成相关问题。需要确保每个技术点都有依据,必要时添加引用标识。</think>### 上拉电阻的作用及防止的问题 #### 一、上拉电阻的核心作用 1. **确定信号空闲状态** 当信号线未被主动驱动时,上拉电阻通过连接至电源电压(如$V_{CC}$),强制将其拉至高电平,避免因浮空(floating)导致的不确定状态[^1]。 2. **提高噪声容限** 上拉电阻增强了信号线上的高电平强度,减少外部电磁干扰(EMI)或噪声引起的误触发风险,满足逻辑门输入高电平的最小电压要求$V_{IH}$。 3. **限流保护** 在开关电路(如按键或晶体管输出)中,上拉电阻限制电流,防止短路或过流损坏器件。例如,当按键按下时,电流通过电阻$R$流向地,电流值为$I = \frac{V_{CC}}{R}$。 #### 二、使用上拉电阻可防止的问题 1. **信号漂移(Floating State)** 浮空信号线可能因感应电荷随机波动,导致逻辑电路误判。例如,未接上拉电阻的GPIO输入引脚易受环境干扰。 2. **静电积累(ESD风险)** 浮空引脚更易积累静电电荷,增加静电放电(ESD)损坏器件的概率[^2]。 3. **总线冲突** 在开漏输出(如I²C总线)中,上拉电阻允许多设备共享同一线路。若无上拉,总线无法返回高电平,导致通信失败。 #### 三、典型应用场景 1. **开漏/开集电极电路** I²C总线中,SDA和SCL线均需上拉电阻保证高电平。电阻值选择需平衡速度和功耗,例如: $$R_{\text{max}} = \frac{t_r}{0.8473 \cdot C_{\text{bus}}}$$ 其中$t_r$为上升时间,$C_{\text{bus}}$为总线电容。 2. **数字输入接口(如按钮)** 按钮直接接地,常态下通过上拉电阻保持高电平,按下时拉低。电路示例如下: ``` VCC ── R ──┬── GPIO ︱ 按钮 ── GND ``` 3. **三态逻辑控制** 当多个设备共享总线时,上拉电阻确保总线在无设备驱动时保持默认高电平。 #### 四、电阻值选择原则 - **下限**:避免过小电阻导致电流过大,例如,若$V_{CC}=5\text{V}$且器件最大耐受电流$I_{\text{max}}=20\text{mA}$,则$R_{\text{min}} = \frac{5\text{V}}{20\text{mA}} = 250\Omega$。 - **上限**:确保信号上升时间满足需求。例如,I²C总线在标准模式下要求$t_r < 1\mu s$,若总线电容$C=200\text{pF}$,则$R_{\text{max}} \approx \frac{1\mu s}{0.8473 \cdot 200\text{pF}} \approx 5.9k\Omega$[^3]。 - **常用值**:通常选择$1k\Omega$至$10k\Omega$,具体需根据系统参数调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值