如何使用 PIC 微控制器对 -2 V 至 +2 V 模拟信号进行采样?

电器工程 微控制器 图片 模拟 ADC 运算放大器
2022-01-15 17:52:06

我正在使用带有 10 位 ADC 的 PIC micro 从频率小于 300 赫兹的模拟信号中读取读数。但是,该模拟信号在 -2 V 和 +2 V 的范围内。如何调节信号以使其进入可用范围(假设 ADC 的输入必须为正)而且我没有正和负电源。

4个回答

重要说明:
发布此答案是为了解决-20V 至 +20V输入的问题,因为这就是所要求的。这是一种聪明的方法,但如果输入电压限制保持在轨之间,则不起作用。

您必须使用电阻分压器调整电压,以便获得介于 -2.5V 和 +2.5V 之间的电压,并添加 2.5V。(我假设你的 PIC 有 5V 电源)。

下面的计算看起来很长,但那只是因为我详细解释了每一步。实际上,这很容易,您可以立即在脑海中完成。

首先这个:

R1 是\$V_{IN}\$\$V_{OUT}\$之间的电阻,
R2 是\$+5V\$\$V_{OUT}\$之间的电阻,
R3 是之间的电阻\$V_{OUT}\$\$GND\$

我们有多少未知数?三,R1、R2和R3。不完全是,我们可以自由选择一个值,其他两个依赖于那个。让我们选择 R3 = 1k。找到其他值的数学方法是从两个 ( \$V_{IN}\$ , \$V_{OUT}\$ ) 对创建一组两个联立方程,并求解未知的电阻值。任何 ( \$V_{IN}\$ , \$V_{OUT}\$ ) 对都可以,但我们会看到,我们可以通过仔细选择这些对来极大地简化事情,即极值: ( \$+ 20V\$\$+5V\$)和(\$-20V\$\$0V\$)。

第一种情况:\$V_{IN} = +20V\$ , \$V_{OUT}=+5V\$
请注意(这是解决方案的关键!)R2 的两端见\$+5V\$,因此没有电压降,因此没有电流通过 R2。这意味着\$I_{R1}\$必须与\$I_{R3}\$ (KCL) 相同。
\$I_{R3}=\dfrac{+5V-0V}{1k\Omega}=5mA=I_{R1}\$
我们知道通过 R1 的电流,以及它上面的电压,所以我们可以计算它的电阻:\$R1=\dfrac{+20V-5V}{5mA}=3k\Omega\$
发现我们的第一个未知数!

第二种情况:\$V_{IN} = -20V\$ , \$V_{OUT}=0V\$
现在与 R2 相同的事情发生在 R3 上:没有电压降,所以没有电流。再次根据 KCL,现在\$I_{R1}\$ = \$I_{R2}\$
\$I_{R1}=\dfrac{-20V-0V}{3k\Omega}=6.67mA=I_{R2}\$
我们知道通过 R2 的电流,以及它上面的电压,所以我们可以计算它的电阻:\$R2=\dfrac{+5V-0V}{6.67mA}=0.75k\Omega\$
发现了我们的第二个未知数!

所以一个解决方案是:\$R1 = 3k\Omega, R2 = 0.75k\Omega, R3 = 1k\Omega\$

就像我说的,只有这些值之间的比率很重要,所以我不妨选择\$R1 = 12k\Omega, R2 = 3k\Omega, R3 = 4k\Omega\$
我们可以对照另一个(\$V_{IN}\$\$V_{OUT}\$)对来检查这个解决方案,例如(\$0V\$\$2.5V\$)。R1 和 R3 现在是并联的(它们都有 +2.5V-0V 的电压),所以当我们计算它们的组合值时,我们会找到\$0.75k\Omega\$,这正是 R2 的值,以及我们需要得到的值\ $+2.5V\$来自\$+5V\$所以我们的解决方案确实是正确的。[QC戳在这里]

最后要做的是将\$V_{OUT}\$连接到 PIC 的 ADC。ADC 通常具有相当低的输入电阻,因此这可能会扰乱我们仔细计算的平衡。没什么好担心的,然而,我们只需要增加 R3 使得\$R3 // R_{ADC} = 1k\Omega\$假设\$R_{ADC} = 5k\Omega\$,则\$\dfrac{1}{1k\Omega}=\dfrac{1}{R3}+\dfrac{1}{R_{ADC}}=\ dfrac{1}{R3}+\dfrac{1}{5k\Omega}\$从这里我们找到\$R3=1.25k\Omega\$


编辑
好吧,这很聪明也很简单,即使我自己这么说。;-) 但是,如果输入电压保持在轨之间,为什么这不起作用?在上述情况下,我们总是有一个没有电流流过的电阻器,因此,在 KCL 之后,通过一个电阻器进入\$V_{OUT}\$节点的电流将通过另一个电阻器离开。这意味着一个电压必须高于\$V_{OUT}\$,而另一个则更低。如果两个电压都较低,则电流只会从该节点流出,而 KCL 禁止这样做。

最简单的方法是使用“电阻分压器”。

你没有说这个 PIC 的运行电压是多少,因此 A/D 输入范围是多少,所以我们以 5V 为例。您的输入电压范围为 40V,输出为 5V,因此您需要衰减至少 8 倍的电压。您还需要将结果以 1/2 Vdd 为中心,即 2.5V,而您的输入电压以 0V 为中心.

这可以通过 3 个电阻器来实现。所有三个电阻的一端连接在一起并连接到 PIC A/D 输入引脚。R1 的另一端接输入信号,R2 接 Vdd,R3 接地。电阻分压器由 R1 和 R2 和 R3 的并联组合构成。您可以调整 R2 和 R3 以使结果范围居中在 2.5V,但为了简单说明这一点,我们将使用一点不对称性并稍微衰减一点,以确保两端都限制在 Vss-Vdd 范围内。

假设 PIC 希望模拟信号的阻抗为 10 kΩ 或更小。再次为简单起见,我们将 R2 和 R3 设为 20 kΩ。为 PIC 供电的阻抗将不超过这些阻抗的并联组合,即 10 kΩ。要获得 8 的衰减,R1 需要是 R2//R3 的 7 倍,即 70 kΩ。然而,由于结果不会完全对称,我们需要再衰减一点,以确保 -20V in 不会导致 PIC 中的电压低于 0V。这实际上需要衰减 9,因此 R1 必须至少是 R2//R3 的 8 倍,即 80 kΩ。82 kΩ 的标准值将允许一些斜率和余量,但您仍然可以获得大部分 A/D 范围来测量原始信号。

添加:

是找到类似问题的确切解决方案的示例。这没有不对称性,并且具有特定的指定输出阻抗。当 A/D 范围完全在输入电压范围内时,总是可以使用这种形式的解决方案。

是标准电路。您需要为所需的阻抗缩放电阻值。

如果信号不是直流,或者如果直流参考不重要,则信号可以电容耦合到 ADC 的输入。

或者,如果 PIC 的地是浮动的,您可以将信号地连接到 PIC 的 1/2 VDD。