加权递推平均滤波法是对递推平均滤波法的改进,即不同时刻的数据加以不同的权。通常是,越接近现时刻的数据,权取得越大。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低。
下面直接看C代码的实现
define N 12
unsigned int coe[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
unsigned int sum_coe = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12;
unsigned int filter8( void )
{
unsigned int count;
unsigned int value_buf[N];
unsigned long int sum = 0;
for( count = 0; count < N; count++ )
{
value_buf[count] = ReadVol_CH2();
}
for( count = 0; count < N; count++ )
{
sum += value_buf[count] * coe[count];
}
return ( unsigned int )( sum / sum_coe );
}
void main( void )
{
while( 1 )
{
val = ReadVol_CH2(); //读取AD采样值
val1 = filter8();
printf( "A%drn", val );
printf( "B%drn", val1 );
}
}
主函数中实时采样AD端口的波形值,然后将采样值经过加权递推平均滤波法进行滤波,然后用串口输出原始采样值和滤波后的值,并在串口波形软件上显示采样的数据波形。
图中蓝色曲线为原始数据曲线,橙色曲线为经过滤波算法后的曲线。
上一篇:单片机ADC采样算法----限幅消抖滤波法
下一篇:单片机ADC采样算法----限幅平均滤波法
推荐阅读最新更新时间:2024-10-29 14:12
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 LTC3130EMSE 的参考设计
- 一种用于汽车照明的 LED 高亮度 LED 驱动器
- 姿势矫正机器人
- DC2176A,使用 LT3909EDD、7 至 36V 输入电压、高达 35V @ 50mA、2 串升压 LED 驱动器的 VLED 演示板
- AD8047-EB,AD8047 评估板,用作 AD872(12 位、10 MSPS A/D 转换器)的驱动器
- TWR-S12GN32-KIT,适用于汽车应用的 MC9S12GN32 超可靠 16 位微控制器塔式系统模块的塔式开发板
- RSO-2405S 5V、200mA输出DC/DC转换器典型应用电路
- 基于 VIPER31 的 15V/1.2A 隔离式 PSR 反激式转换器
- NCV33072DR2G 高输入阻抗差分放大器的典型应用
- 用于处理器电源管理的 1.630 至 1.680V、1.727 至 1.777V DC 至 DC 多输出电源