如何使用PIC单片机对-2 V至+2 V模拟信号进行采样?


10

我正在使用带有10位ADC的PIC单片机从频率低于300 Hz的模拟信号中读取读数。但是,该模拟信号的范围是-2 V和+2V。如何调节信号以使其处于可用范围内(假设ADC的输入必须为正),我也没有正值,并且负电源。





@Kellenjb-您链接到的问题并未解决这种特殊情况下的计算,在这种情况下,输入电压会双向超出轨道。
stevenvh 2011年

下面的问题被关闭,因为这一个的副本,并有有用的答案:electronics.stackexchange.com/questions/15985/...electronics.stackexchange.com/questions/15940/...
凯文·维米尔

Answers:


14

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

您必须使用电阻分压器调整电压,以便获得-2.5V至+ 2.5V的电压,并增加2.5V。(我为PIC假设使用5V电源)。

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

首先这个:

R1是V O U T 之间的电阻,R2是+ 5 VV O U T 之间的电阻,R3是V O U TG N D之间的电阻。 V一世ñVØüŤ
+5VVØüŤ
VØüŤGñd

我们有多少未知数?三,R1,R2和R3。不完全是,我们可以自由选择一个值,而其他两个则取决于该值。让我们选择R3 = 1k。查找其他值的数学方法是从两对(V O U T)对创建一组两个联立方程组,并求解未知的电阻器值。任何(V I NV O U T)对都可以,但是我们会看到,通过仔细选择这些对,即(+ 20 V+ 5 V)和(-V一世ñVØüŤV一世ñVØüŤ+20V+5V 0 V)。 -20V0V

第一种情况:V O U T = + 5 V 请注意(这是解决方案的关键!)R2的两端都看到+ 5 V,因此没有电压降,因此没有通过R2的电流。这意味着I R 1必须与I R 3(KCL)相同。I R 3 = + 5 V - 0 VV一世ñ=+20VVØüŤ=+5V
+5V一世[R1个一世[R3
。 我们知道通过R1的电流以及其上的电压,因此我们可以计算其电阻:R1=+20V-5V一世[R3=+5V-0V1个ķΩ=5一种=一世[R1个
。 发现我们的第一个未知数! [R1个=+20V-5V5一种=3ķΩ

第二种情况:V O U T = 0 V 现在,R3发生与R2相同的情况:无电压降,因此无电流。再次根据KCL,现在- [R 1 = - [R 2I R 1 = 20 V 0 VV一世ñ=-20VVØüŤ=0V
一世[R1个一世[R2
。 我们知道通过R2的电流以及其上的电压,因此我们可以计算其电阻:R2=+5V-0V一世[R1个=-20V-0V3ķΩ=6.67一种=一世[R2
。 发现我们的第二个未知数! R2=+5V0V6.67mA=0.75kΩ

因此,一个解决方案是:[R1个=3ķΩ[R2=0.75ķΩ[R3=1个ķΩ

就像我说这仅仅是这些值是重要之间,所以还不如挑。 我们可以对照另一对(V I NV O U T)对,例如(0 V2.5 V)检查该解决方案。R1和R3现在是并联的(它们都具有+ 2.5V-0V,因此,当我们计算它们的组合值时,我们发现0.75[R1个=12ķΩ[R2=3ķΩ[R3=4ķΩ
V一世ñVØüŤ0V2.5V,R2的完全价值,我们需要得到的值 + 2.5 V + 5 V!因此,我们的解决方案确实是正确的。[QC邮票在这里]0.75ķΩ+2.5V+5V

最后要做的是将连接到PIC的ADC。ADC通常具有相当低的输入电阻,因此这可能会干扰我们精心计算的平衡。完全不用担心,但是,我们简单地必须增加R3使得ř 3 / / ř d c ^ = 1 ķ Ω。假设ř d C ^ = 5 ķ Ω,则1VØüŤ[R3//[R一种dC=1个ķΩ[R一种dC=5ķΩ由此我们发现- [R3=1.25ķΩ11kΩ=1R3+1RADC=1R3+15kΩR3=1.25kΩ


编辑
OK,这很聪明而且很简单,即使我自己也这么说。;-)但是,如果输入电压保持在两个电源轨之间,那为什么不起作用呢?在上述情况下,我们总是有一个没有电流流过的电阻,因此,在KCL之后,通过一个电阻进入节点的电流将通过另一个电阻流出。这意味着一个电压必须高于V O U T,而另一个则要低。如果两个电压都较低,则只会使电流从该节点流出,而KCL禁止这样做。VOUTVOUT


-20V输入将导致输出低于0V。
奥林·拉斯洛普

(也许还有Olin Lathrop):我试图找出如何找到7k电阻的值。我注意到,当输入电压为2.5V时,无论电阻值如何,都不会有电流流到节点,因为没有电压差。但是2.5V输入不是中档,而2.5V输出也是。这是否意味着分压器应具有两个不同的电阻器?如果你明白我的意思。
Federico Russo

也许这也可以解释@Olin Lathrop的评论。
Federico Russo

@Frederico:是的,它不会完全对称。我在回答中对此进行讨论。可以将三个电阻器调整为将-20至+20伏特映射到0至5伏特,但是史蒂文和我都展示了一个较简单的情况,即出现了不对称的情况。
奥林·拉斯洛普

6

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

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

添加:

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


+1,因为就零件数而言,这是构建所需组件的最简单方法。一些注意事项:可以注意uC代码中的不对称性,并且通过在与GND的电阻器并联一个电容器,可以使信号平滑(低通滤波器)。拐角频率 是1 /(2 * pi R C),其中R是所有三个电阻的并联值,C是相加的电容值(无论如何,ADC都需要电容!)。请考虑所有容差(R,ADC误差,+ /-最大LSB,参考误差,...)来计算此设置的精度-可能比预期的要差。
zebonaut 2011年

@zebonaut-我再次进行了计算,并在更新后的答案中详细解释了每个步骤(看上去并不那么复杂!)。它为您提供了(-20V .. + 20V)到(0V .. + 5V)的精确映射
stevenvh 2011年

@zebonaut:该电容器可能可用作抗混叠滤波器,但对不对称性没有任何作用。我不认为有点不对称没什么大不了的。如您所说,很容易处理固件。
奥林·拉斯洛普

如果要补偿软件中的不对称性,则必须计算精确的传递函数。如果您仍然必须这样做,为什么不首先使用正确的电阻值(而不是我的第一个(错误的答案)中的电阻值!)
stevenvh 2011年

@stevenvh:使用“正确的”电阻值没有任何问题。我意识到可以进行精确的映射(就像我在回答中确实提到的那样),但是我决定不进入计算的复杂性,而是回答概念上较为简单的情况(这会导致一些不对称)。在任何情况下,您都必须衰减一些以解决倾斜问题,并且无论如何都应该在固件中进行校准。
奥林·拉斯洛普

2

是为此的标准电路。您需要按要求的阻抗调整电阻值。


如果使用它,是否需要确保源阻抗相对较低?
尼克T 2010年

Leon,为什么不使用电容器代替1k电阻?
stevenvh 2010年

这是一个直流耦合的解决方案。需要串联电阻才能正常工作。
莱昂·海勒2010年

3
@Leon Heller:如果您解释了如何为电阻找到正确的值,我认为这将是一个更好的答案。
Federico Russo

2

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

或者,如果PIC的地悬空,则可以将信号地连接到PIC的1/2 VDD。


如果使用电容耦合,则可以消除直流分量,但是信号的负部分仍会低于地电位,除非您通过电阻分压器在输入引脚上提供偏置,例如在Leon的电路中。
stevenvh 2010年

未指定电源电压-可以与5V ADC一起使用。如果使用较小的Vdd,则需要缩放输入。到那时,它将变成带有电容器的莱昂电路。
W5VO 2010年

2

以下电路可以完成这项工作:

3.3V
 +
 |
 \
 / 1k
 \
 |
 +-- ADC input
 |
 \
 /  1k
 \
 |
 +-- Signal input (-2V to +2V)

这是一个潜在的鸿沟。在-2V时,输出将为0.65V;在+ 2V,2.65V下

3.3V电源轨上的所有噪声都将传递到输入,因此请使用良好的基准电压源来减少此问题。

这也适用于其他耗材,但偏移量会发生变化。


是的,它可以工作,但是最好使用整个ADC范围:-)
stevenvh 2011年

@stevenh您可以使用0.65V和2.65V基准电压来实现,尽管您也可以使用电路。
Thomas O

AFAIK PIC仅具有一个 V[RËF+ 输入,您无法设置 V[RËF-。像大多数控制器一样,它总是连接到Gñd
stevenvh 2011年

@stevenh PIC24,dsPIC和PIC32肯定具有Vref-。我认为有些18F也可以。
Thomas O

是的,好的,我不全都知道(有很多)。OP并没有说他正在使用哪一部分,而他似乎消失了,所以问他没有用。
stevenvh 2011年

1

具有两个相同电阻器的Thomas电压加法器确实很简单,但缺点是ADC的输入范围减小,这意味着噪声的影响更大。另外下限为0.65V。如果您的微控制器没有V一种dC[RËF-输入(大多数控制器不输入),输入范围的一部分将保持未使用状态。
这很容易解决:选择电阻比,以便V一种dC如果输入为-2V,则将为0V。为一个Vdd的5V,这意味着输入电阻应为上拉电阻的2/5。在2V输入时V一种dC将为2.86V。组V一种dC[RËF+ 到这个水平,-2V至+ 2V将覆盖整个ADC范围。

如果你的 Vdd = 3.3V,输入电阻应为61%(2V3.3V)的引体向上。在+ 2V输入V一种dC 将为2.49V。

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.