Stormer 发表于 2020-4-3 10:28:39

电位器取值的时候总是抖动,怎么解决?


现在我用一个EC11的10K电位器做数值输入,3根引脚分别接VCC\A3引脚\地。


代码是: iMod = map(analogRead(A3), 0, 1023, 0, 127);

然后运行的时候 iMod的值会在随机出现+-1的数值抖动,来回变。比如当前的值是60,它就一下60,一下61这样。


有什么办法可以让这个值更稳定一些吗?比如加上什么外围辅助电路? 或者把电位器换成编码器会不会好些?

t3486784401 发表于 2020-4-3 12:09:24

先看看 analogRead 抖动范围再说?这个太大了(>10) 一般可以考虑接线太长、电压不稳

shouzama 发表于 2020-4-3 14:39:48

感覺上像是正常,就算是三用電錶也會有類似的現象產生,
主要是 A/D 硬體轉換上的公差吧? 要精確一點的話有精密度
更高的電位器、單晶片,不然硬體就將就用一下,利用軟體
把這誤差給處理掉(某合理範圍內的值都算是同值,然後再依值處理)

ieddd797 发表于 2020-4-3 16:16:35

范围取平均值
for(i=0;i<10;i++)
{
iMod =+map(analogRead(A3), 0, 1023, 0, 127)/10;
}

bing7583380 发表于 2020-4-3 16:30:15

RC滤波,电压跟随器,滤波算法什么的都行吧

cheatx 发表于 2020-4-3 17:43:38

正常情况的ad一般不会这样,抖动确实比较大,排除一下供电,连接和干扰问题,如果不能解决就用算法滤波吧

allen727hk 发表于 2020-4-4 16:26:43

轉用多圈精密電位器再試一試

Stormer 发表于 2020-4-5 14:26:14

本帖最后由 Stormer 于 2020-4-6 12:11 编辑

我感觉解决这个问题还是需要更高位数的AD转换器,1024有点小。很容易就碰到数值的边界了,造成抖动。
-------

刚找了个ADS1115 16位的AD模块测试,问题解决。现在数字不抖动了,电位器旋转调节时候数值变化也更细腻稳定了。

代码
bpm = map(tempBPM, 0, 24340, 0, 127);

让我奇怪的是,在串口监视器里看AD芯片输出的值范围是0~243xx。 怎么最大值是这个值呢?如果是16位的话,为什么不是65535?

---
应该是ADS1115代码设置的问题,试了半天也没搞明白。不论如何,数值抖动的问题解决了。谢谢大家~
页: [1]
查看完整版本: 电位器取值的时候总是抖动,怎么解决?