上拉,就是通过一个电阻将信号接电源,一般用于时钟信号数据信号等。下拉,就是通过一个电阻将信号接地,一般用于保护信号。

这是根据电路需要设计的,主要目的是为了防止干扰,增加电路的稳定性。

假如没有上拉,时钟和数据信号容易出错,毕竟,CPU的功率有限,带很多BUS线的时候,提供高电平信号有些吃力。而一旦这些信号被负载或者干扰拉下到某个电压下,CPU无法正确地接收信息和发出指令,只能不断地复位重启。

假如没有下拉,保护电路极易受到外界干扰,使CPU误以为被保护对象出问题而采取保护动作,导致误保护。

上拉下拉,要根据电路要求来设置。

如何选择上拉电阻值

低电阻值称为强上拉(电流流动较多),高电阻值称为弱上拉(电流较少)

规则 1:值不能太高。

上拉值越高,输入端的电压就越低。重要的是,电压要足够高,芯片才能将其视为高电平或逻辑1输入。

例如,如果使用具有 10V 电源的 CD4017,则输入端至少需要 7V 才能将其视为 HIGH。

规则2:但它也不能太小。

例如,如果您选择100 Ω,问题是当按下按钮时,您会获得大量电流流经它。

使用9V电源时,您可以在100 Ω(90 mA)获得9V电压。这是不必要的功率浪费,但这也意味着电阻器需要承受0.81W。大多数电阻器只能处理高达0.25W的功率。

image.png

经验法则

一般规则是使用比输入引脚的输入阻抗(R2)**小一个数量级(1/10)**的上拉电阻(R1),小10倍的电阻值。

通常,10 kΩ的上拉值就可以解决问题。但是,如果您想了解它的工作原理,请继续阅读。

上拉电阻器如何工作?

您可以使用分压器公式查找未按下按钮时输入引脚上的电压:

如果对上拉R1使用1MΩ电阻,并且输入引脚的阻抗R2约为1MΩ(形成分压器),则输入引脚上的电压约为VCC的一半,并且微控制器可能不会将引脚记录为处于高电平状态。在5V系统上,输入电压为2.5V

计算示例

假设您的芯片的输入阻抗为1MΩ(对于许多芯片来说,100kΩ至1MΩ是正常的)。如果您的电源是9V,并且您选择10 kΩ的上拉电阻值,那么输入引脚上的电压是多少?

输入引脚上的电压为8.9V,足以用作高电平输入。

通常,如果您坚持使用不超过输入阻抗十倍的上拉电阻的经验法则,您将确保输入引脚上始终具有至少90%的VDD电压。

由于通常需要上拉电阻,因此许多MCU(如Arduino平台上的ATmega328微控制器)都具有可以启用和禁用的内部上拉电阻。要在 Arduino 上启用内部上拉,您可以在 setup() 函数中使用以下代码行:

COPY CODEpinMode(5, INPUT_PULLUP); // Enable internal pull-up resistor on pin 5 1 需要指出的另一件事是,上拉电阻越大,引脚对电压变化的响应速度就越慢。这是因为馈电输入引脚的系统本质上是一个与上拉电阻耦合的电容器,因此形成RC滤波器,而RC滤波器需要一些时间来充电和放电。如果您有一个非常快速变化的信号(如USB),高阻值上拉电阻可以限制引脚改变状态的速度(信号还具有可靠性)。这就是为什么您经常会在USB信号线上看到1k至4.7KΩ电阻的原因。

results matching ""

    No results matching ""