极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 31319|回复: 7

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

[复制链接]
发表于 2020-4-3 10:28:39 | 显示全部楼层 |阅读模式

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


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

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


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

使用道具 举报

发表于 2020-4-3 12:09:24 | 显示全部楼层
先看看 analogRead 抖动范围再说?这个太大了(>10) 一般可以考虑接线太长、电压不稳
回复 支持 反对

使用道具 举报

发表于 2020-4-3 14:39:48 | 显示全部楼层
感覺上像是正常,就算是三用電錶也會有類似的現象產生,
主要是 A/D 硬體轉換上的公差吧? 要精確一點的話有精密度
更高的電位器、單晶片,不然硬體就將就用一下,利用軟體
把這誤差給處理掉(某合理範圍內的值都算是同值,然後再依值處理)
回复 支持 反对

使用道具 举报

发表于 2020-4-3 16:16:35 | 显示全部楼层
范围取平均值
for(i=0;i<10;i++)
{
iMod =+map(analogRead(A3), 0, 1023, 0, 127)/10;
}
回复 支持 反对

使用道具 举报

发表于 2020-4-3 16:30:15 | 显示全部楼层
RC滤波,电压跟随器,滤波算法什么的都行吧
回复 支持 反对

使用道具 举报

发表于 2020-4-3 17:43:38 | 显示全部楼层
正常情况的ad一般不会这样,抖动确实比较大,排除一下供电,连接和干扰问题,如果不能解决就用算法滤波吧
回复 支持 反对

使用道具 举报

发表于 2020-4-4 16:26:43 | 显示全部楼层
轉用多圈精密電位器再試一試
回复 支持 反对

使用道具 举报

 楼主| 发表于 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代码设置的问题,试了半天也没搞明白。不论如何,数值抖动的问题解决了。谢谢大家~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 19:42 , Processed in 0.037643 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表