ADC的卡尔曼滤波怎么做,可以做吗?

[复制链接]
3508|14
 楼主| 123ycli 发表于 2017-9-16 17:17 | 显示全部楼层 |阅读模式
ADC的卡尔曼滤波怎么做,可以做吗?
HKingS 发表于 2017-9-20 21:01 | 显示全部楼层
肯定是可以的,但是卡尔曼的速度应该慢。
Puremr 发表于 2017-9-22 19:48 | 显示全部楼层
只要你的mcu的速度跟上去,就是可以卡尔曼滤波的
静听风易 发表于 2017-9-22 21:37 | 显示全部楼层
卡尔曼滤波只是让ADC采样值更稳定,仅仅是更稳定而已,让目标更突出,并不代表着经过这个滤波我就能得到真实值了
jerow 发表于 2017-9-23 21:00 | 显示全部楼层
网上有篇**叫做卡尔曼滤波器在嵌入式控制系统中的应用,可以参考看看
萧洛毫 发表于 2017-9-23 21:02 | 显示全部楼层
看过网上的adc卡尔曼滤波效果,还是很不错的
jerow 发表于 2017-9-24 15:00 | 显示全部楼层
不要什么都卡尔曼滤波
余三水 发表于 2017-9-24 15:02 | 显示全部楼层
这个卡尔曼滤波,在四轴和飞控上用的比较多
16号哨兵 发表于 2017-9-24 21:54 | 显示全部楼层
首先你要明白卡尔曼是什么,任何滤波都有他适用的范围
yyj8902 发表于 2017-9-24 21:56 | 显示全部楼层
假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。
ylslib 发表于 2017-9-26 21:25 | 显示全部楼层
yyj8902 发表于 2017-9-24 21:56
假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度 ...

这个好像没完,是一个很经典的表述的。
余三水 发表于 2017-9-26 21:29 | 显示全部楼层
给你个卡尔曼滤波的代码看看
  1. #include <math.h>

  2. #define Forecast_Noise 4//预测不确定度,根据实际调节,一般很小
  3. #define Measure_Noise 4//可以通过传感器技术手册查找到测量噪声

  4. void Kalman_v1(double Now_Measure_Value, double Last_Best_Value)
  5. {
  6.     double Forecast_Value, Measure_Value, Best_Value;//预测值、测量值和最优值
  7.     static double Forecast_Error, Measure_Error, Best_Error = 0;//预测值、测量值和最优值偏差
  8.     static double Kalman_Gain;//卡尔曼滤波器增益

  9.     Forecast_Value = Last_Best_Value;
  10.     //更新预测值---------①
  11.     Measure_Value = Now_Measure_Value;//测量值

  12.     Forecast_Error = sqrt(Forecast_Noise ^ 2 + Best_Error ^ 2);
  13.     //更新预测值偏差---------②
  14.     Measure_Error = Measure_Noise;//测量偏差=测量噪声

  15.     Kalman_Gain = sqrt(Forecast_Error ^ 2 / (Forecast_Error ^ 2 + Measure_Error ^ 2));
  16.     //求滤波器增益---------③
  17.     Best_Value = Forecast_Value + Kalman_Gain * (Measure_Error - Forecast_Error);
  18.     //当前最优值=预测值+增益*(测量值-预测值)---------④
  19.     Best_Error = sqrt((1 - Kalman_Gain) * Forecast_Error ^ 2);
  20.     //更新最优值偏差---------⑤
  21. }
Boooooosh 发表于 2017-9-27 21:23 | 显示全部楼层
卡尔曼滤波是状态观测器,不是用来做平滑的。对ADC这种单位增益固定噪声的一维系统用的话,算出来就是一阶低通 y(n)=a*x(n)+(1-a)*y(n-1)。
LM莫 发表于 2017-9-27 21:38 | 显示全部楼层
网上有10种滤波方法,可以看看,一般用滑动平均滤波就好了。
麦克塔维什 发表于 2017-9-28 15:48 | 显示全部楼层
32位机或者16位卡尔曼还好,8位机的话,有点够呛,速度上不去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

324

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部