ADC采集相关滤波算法
ADC采集相关滤波算法
1、一阶互补滤波
一阶互补滤波
方法:取a=0~1,本次滤波结果=(1-a)本次采样值+a上次滤波结果
优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合
缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号
代码如下:
//一阶互补滤波
int firstOrderFilter(int newValue, int oldValue, float a)
{
return a * newValue + (1-a) * oldValue;
}
ADC_value=HAL_ADC_GetValue(&hadc1); //获取ADC1的数值
//主函数
while(1){
HAL_ADC_Start(&hadc1); //开启ADC1,放置在while循环中
Filtering_Value = firstOrderFilter(HAL_ADC_GetValue(&hadc1),ADC_value,0.3); //滤波算法
HAL_Delay(10); //延迟函数,防止采样失效
printf("ADC_value:%d\n", ADC_value);
}
//一阶互补滤波
int firstOrderFilter(int newValue, int oldValue, float a)
{
return a * newValue + (1-a) * oldValue;
}
ADC_value=HAL_ADC_GetValue(&hadc1); //获取ADC1的数值
//主函数
while(1){
HAL_ADC_Start(&hadc1); //开启ADC1,放置在while循环中
Filtering_Value = firstOrderFilter(HAL_ADC_GetValue(&hadc1),ADC_value,0.3); //滤波算法
HAL_Delay(10); //延迟函数,防止采样失效
printf("ADC_value:%d\n", ADC_value);
}