##开发平台:
------珠海鼎芯传感器板D321
##编译环境:
------KEIL 5.14
一阶RC数字滤波的基本算法
X为输入,Y为滤波后得输出值,则:
Y(n)=a∗X(n)+(1−a)∗Y(n−1)
a为与RC值有关的一个参数,称为滤波系数,其值决定新采样值在本次滤波结果中所占的权重,其值通常远小于1,当采样间隔t足够小的时候,
a=t/RC
-滤波系数越小,滤波结果越平稳,但是灵敏度越低;
-滤波系数越大,灵敏度越高,但是滤波结果越不稳定
-本次输出值主要取决于上次滤波输出值,当前采样值对本次输出贡献比较小,起到修正作用;
基本程序:
#define a 128
char value; //上次滤波值
char filter()
{
char new_value;
new_value=get_ad();//本次采样值
return(256-a)*value/256+a*new_value/256;
}
当然这里只是给出了简单的滤波思路,要取得更好的滤波输出还需要改进
通过珠海鼎芯科技的D321测得运动姿态,运用以上的编程思路,并进行改进,改进后,对实测数据进行滤波处理;
获得了较好的输出: