如何从压力传感器获得全范围电压读数?

电器工程 传感器 Arduino
2022-01-31 21:37:45

我正在使用取自这个 instructable的 DIY 力敏电阻器 (FSR) 制作应用程序。该传感器的电阻通常从静止时的 20kOhm 到按下时的 9kOhm 不等。

我如何将这些电阻值转换为信号,其中 0v 对应于静止条件,5v 对应于“按下”条件,以便我可以用 Arduino 读取它?

3个回答

您需要一个从 0V 到 5V 的信号范围。我们不都是:-)吗?让我们采用一种不同的方法,看看它对我们有什么帮助。

起点:最便宜和最简单的解决方案。

那将是一个串联电阻来创建分压器。这是绝对最低限度。我注意到人们并没有过多考虑这个电阻,只是选择一个不错的整数值,比如 10k\$\Omega\$。但我发现这有一个最佳值。

在此处输入图像描述

该曲线显示了最小和最大读数之间的电压差(分别为 9k\$\Omega\$ 和 20k\$\Omega\$)作为串联电阻的函数(以 k\$\Omega\$ 为单位)。看,它确实有一个最大值。如果你记得那很容易找到

\$ \left(\dfrac{f(x)}{g(x)}\right)' = \dfrac{f'(x)\cdot g(x) - f(x) \cdot g'(x) }{g^2(x)} \$

差值 \$V_{MAX}\$- \$V_{MIN}\$ 有一个极值

\$ \dfrac{d}{d R_X} \left(\dfrac{R_{MAX}}{R_{MAX} + R_X} - \dfrac{R_{MIN}}{R_{MIN} + R_X}\right) = 0 \$

求解 \$R_X\$ 给出

\$ R_X = \sqrt{R_{MIN} \cdot R_{MAX}} \$

一个美女!

所以在我们的例子中,串联电阻为 13.42k\$\Omega\$,您可以在图表上查看。将电阻器置于 0V 和 +5V 之间,这将为我们提供 [2V, 3V] 的输出范围。这是使用 1 个电阻 (*) 可以获得的最大范围。

够了吗?Arduino 有一个 10 位 ADC,因此这个范围将为您提供 200 个离散级别的范围。这应该为 DIY 传感器提供足够的精度。所以不需要像运算放大器这样的其他组件。


(*) 接受的答案给出了 1.9V 的范围,但它有错误的方程式使用 1 个电阻和仅 +5V 电源,不可能获得高于 1V 的范围。

您需要一个负电压才能使电阻分压器变为 0V。我假设您有 +5V 和 -5V 可用。
将可变电阻 \$R_X\$ 放在 +5V 和 GND 之间。现在您需要找到 GND 和 -5V 之间的下拉电阻值。现在这很容易;当可变电阻为 20k\$\Omega\$ 时,您希望输出 0V,因此下拉也必须为 20k\$\Omega\$,因为整个事物是对称的。
接下来我们要找出当 \$R_X\$ 为 9k\$\Omega\$ 时分压器的输出电压是多少。我们注意到通过 \$R_X\$ 的电流与通过下拉电阻的电流相同,所以

\$ \dfrac{5V - V_O}{9k\Omega} = \dfrac{V_O - (-5V)}{20k\Omega} \$

算出这个给我们\$ V_O = 1.9V \$。现在剩下要做的就是将 0V..1.9V 缩放到 0V..5V。为此,我们使用RRIO(轨到轨 I/O)运算放大器作为同相放大器

在此处输入图像描述

如果您选择 \$R1 = 18k\Omega\$ 和 \$R2 = 47k\Omega\$,对于 20k\$\Omega\$ 的 \$R_X\$,您将获得 0V..5V 的输出电压范围。 .9k\$\欧米茄\$。

我认为最简单的方法是分压器,它在 9k 时为您提供 5V,并随着电阻的增加而减小。您可以在此分压器计算器中使用各种电阻器组合。然而,这将是一个线性进展。