Digital Read Serial教程-计算电阻值


9

Arduino Digital Read Serial教程将指导您完成简单按钮的接线。我的问题围绕电阻器。

为什么需要电阻器?

我想我理解这一点,但是如果我错了,请纠正我。为了确保输入引脚读取低电平信号并且不会浮空,我们应该在不按下按钮时将其接地。按下按钮时,会有5V信号流到引脚和地。基尔霍夫(Kirchhoff)的电压定律规定,闭环中的总电压必须等于零,因此我们必须处理直接流向地面的5V电压。这就是为什么我们在按钮和地面之间放置一个电阻的原因。

如何选择电阻值?

这是我不清楚的。欧姆定律指出...

resistance = voltage / current

这是一个5V电源,Arduino Uno规范说该引脚提供40 mA的DC电流。所以..

resistance = 5V / 0.04A = 125 Ohms

在《数字读串行》教程中,为什么我们有一个10K欧姆的电阻器?那是矫kill过正,对吗?这就引出了另一个问题:如果您唯一的目标是消除电压,您是否会在电阻上施加过多的电阻?

预先感谢您的任何反馈!

Answers:


6

你很亲密 那里的电阻器用作下拉电阻器。如果输入引脚处于悬空状态,则仅仅是天线接收到的随机静电。关键是当提供正电源(通过按按钮)时,正电源需要使压低电阻器“不堪重负”,以便输入引脚读取正电压。

如果没有电阻,则输入引脚将在不利于正负的直接路径中间进行读取。除了可能发生的直接短路以外,我怀疑arduino会读哪个状态,我怀疑这可能是随机的,也可能是电源的某些特性。它可能仍然会读地面。

通过电阻,在负载电阻之前,将信号直接读取为正连接。这样,将确保获得高信号。

电阻的确切尺寸几乎没有影响。太小会浪费电流,但是太大的阻力实际上只是再次断开接地。值范围非常广泛,它们之间可以很好地工作。

我想指出的是,当arduino引脚设置为输入模式时,它将实际上不提供电流。可以将其调制为与100兆欧的电阻串联。 有关详细信息,请参见http://arduino.cc/en/Tutorial/DigitalPins


2
这里的关键是,如果不使用电阻器,则在开关闭合时,您会将+5伏接地短路了。直接短路会导致电源过载并使电源上的保护电路跳闸,从而导致整个Arduino关闭。您需要一个阻抗足够高的电阻,以使电流保持较低。我通常使用100k电阻,当开关断开时,该电阻足以将输入信号拉至0伏,并且仅允许.00005 pas的电流通过,这是微不足道的电流。一个10k的电阻器也可以工作,但是可以流过10倍的电流。
Duncan C

2

为什么需要电阻器?

Arduino输入具有很高的电阻。Atmega328的数据表显示ADC的电阻为100 MOhm,这样的高值是好的,但缺点是无法处理寄生效应(电阻,电感,电容)。这样的效果也可以用作电容传感器

如何选择电阻值?

电阻必须具有任意值,该值应小于输入电阻。10k及以上适合禁用输入泄漏。

但是,当使用内部上拉电阻时,也可以省去电阻。在这种情况下,您要处理否定逻辑:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

在引脚3上,您将进行测量HIGH,并且按钮需要连接到引脚和地面。内部I / 0上拉电阻值为50k。


1

关于为什么需要下拉电阻,您已经获得了两个很好的答案。

总而言之,您需要将输入接地,以防止输入在高和低之间半随机浮动。您使用电阻器,以便在合上开关时不会在+ 5V电源和地之间造成短路。

还有一点。Arduino的输入包括一个可选的内部软件控制上电阻。如果首先将引脚设置为输入,然后将高电平值写入该端口,则它将激活上拉电阻。当未连接任何引脚时,该引脚将读取为高电平。

然后,您可以将开关接地而不是+ 5V。然后,您需要更改代码逻辑,以将HIGH值视为未按下,而LOW值视为已按下。由于不需要外部电阻,因此可以稍微简化布线。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.