发新帖我要提问
12
返回列表
打印

单片机程序处理问题

[复制链接]
楼主: 1014291919
手机看帖
扫描二维码
随时随地手机跟帖
21
86hupeng| | 2014-7-24 08:22 | 只看该作者 回帖奖励 |倒序浏览
AD采样误差几十mv很正常。。。这时候就是软件出来,容许误差。然后档位限定,非无极调档

使用特权

评论回复
22
wolension| | 2014-7-24 08:24 | 只看该作者
NWPU_CHEN 发表于 2014-7-19 09:15
你这想法明显不行,自己取个临界电压算算就知道了

我取电压0.76,根据计算,进入 else result = 1;因此档位为1。
第二次得到跳动电压0.77,根据计算,进入
else if(voltage >= 0.77)
  {
        if(result >2)  result = 2;
        if(result <1)  result = 1;
  }
因为上次result为1, 所以这次即不符合if(result >2),也不符合if(result <1) ,那么结果没有重新赋值,还是上次的result值,那么档位仍然为1。

调动电压为0.87,进入 else if(voltage >=0.87),所以档位为2.
然后电压跳动为0.86,进入
  else if(voltage >= 0.77)
  {
        if(result >2)  result = 2;
        if(result <1)  result = 1;
  }
因为上次result值为2,所以result也没有得新赋值,仍然为2.

我不知道你用哪个电压值算出明显不行?

使用特权

评论回复
23
NWPU_CHEN| | 2014-7-24 11:16 | 只看该作者
wolension 发表于 2014-7-24 08:24
我取电压0.76,根据计算,进入 else result = 1;因此档位为1。
第二次得到跳动电压0.77,根据计算,进入
...

你看清楚露珠需要的是什么,露珠的分界是什么,比如1、2档分界0.82,0.82及0.82以上归于2档,不管几次采样,你这差动值太大,0.82-0.87之间的处理的正确?即便不跳变你采样三次以上算算,程序有bug,我上边也回复过了露珠了采用高分辨率AD芯片,稳定输入,软件采用第一次档位做基准比较处理,增加滤波

使用特权

评论回复
24
junle| | 2014-7-24 13:05 | 只看该作者
用类似按键消抖的程序试下呢!

使用特权

评论回复
25
wolension| | 2014-7-24 13:16 | 只看该作者
差动值大小可以根据根据楼主测得的跳动值来修改就行,如果楼主硬件做得好,那么也可以取0.81999和0.82001这样的值啊。
我们都是给楼主提供参考而已,用更好的硬件当然可以更好地解决问题,如果楼主可以推倒方案重新设计,那就按楼上的去做就行了。
无论怎么做,滤波都是必需的,在检测时滤波(连续多次检测,平均或中值等滤波后得到一个电压值),在处理时滤波,与上次值比较处理等。

使用特权

评论回复
26
gx_huang| | 2014-7-24 14:20 | 只看该作者
wolension 发表于 2014-7-24 13:16
差动值大小可以根据根据楼主测得的跳动值来修改就行,如果楼主硬件做得好,那么也可以取0.81999和0.82001这 ...

不就一个ADC的按键,人家一般用8或者10bit的ADC,如何分辨0.81999和0.82001这样的值?

使用特权

评论回复
27
很忙| | 2014-7-30 15:56 | 只看该作者
可以用取平均值的方法吧,你DEBUG看看电压频繁改变的频率怎么样,根据频率在一段时间内给读到的AD值取平均值,这样就可以使读到的值更稳定了。我解决AD值的问题都是这样玩的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则