sdlls 发表于 2025-5-29 11:00

一阶互补滤波

void DEVICE_INFO::TX_updata()

{


//使用一阶互补滤波算法

static u16 bre_i=0;

static u16 bre_ii=0;

static u16 bre_v=0;

static u16 bre_vv=0;


u16 adci,adcv;

unsigned char r_buff;

//TX电流

adci=Get_Adc_Average(ADC_CH11,10); //此处有10次平均滤波

adci=(adci*3300)/4096;


//TX_electricity=adci;

//电压

adcv=Get_Adc_Average(ADC_CH10,10);

adcv=(adcv*3300)/4096;


//TX_voltage=adcv;


//说明一下 0.92和0.08是权值 ,0.000001是处理周期,我这里处理比较快,单位是s


TX_electricity=0.92*(TX_electricity-bre_i*0.000001)+0.08*bre_ii;

TX_voltage=0.92*(TX_voltage-bre_v*0.000001)+0.08*bre_vv;


bre_ii=bre_i; //保存上次值

bre_i=adci; //保存本次值


bre_vv=bre_v;

bre_v=adcv; //保存本次值


}

suncat0504 发表于 2025-5-29 21:52

一阶互补滤波是用在什么场合的?

1988020566 发表于 2025-6-4 08:44

合理设置滤波器的初始状态,以避免启动时的瞬态效应。

geraldbetty 发表于 2025-6-4 10:39

若数据范围大,可采用定点运算或多次移位截断。

rosemoore 发表于 2025-6-4 11:36

在嵌入式系统中,代码的执行效率非常重要。可以通过优化代码结构、减少不必要的计算来提高滤波器的实时性。

updownq 发表于 2025-6-4 12:45

偏差累积、抖动过大或响应滞后。            

wilhelmina2 发表于 2025-6-4 14:14

采样率过低会导致滤波性能下降,需根据应用场景选择合适速率。

janewood 发表于 2025-6-4 16:01

在整数运算中,检查溢出和下溢情况,确保数值稳定性。

pmp 发表于 2025-6-5 11:01

传感器噪声抑制​​:如加速度计、陀螺仪的高频噪声。
​​信号平滑​​:去除随机抖动,保留有效信号趋势。

sanfuzi 发表于 2025-6-5 12:47

τ 较大:滤波更平滑,动态响应慢,适合稳态场景。
τ 较小:动态响应快,但可能引入高频噪声,适合快速运动场景。

abotomson 发表于 2025-6-5 14:31

采样频率应足够高,以捕捉快速变化的信号。较高的采样频率可以提高滤波器的响应速度,但也会增加计算负担。

backlugin 发表于 2025-6-5 16:34

长时间迭代可能因浮点精度误差累积导致漂移

sdlls 发表于 2025-6-5 18:47

互补滤波是将加速度计和陀螺仪的数据进行融合,以获得更准确的角度。加速度计在静止时较为准确,而陀螺仪在动态时较为准确。

uptown 发表于 2025-6-5 20:48

优化算法以提高计算效率,确保滤波器能够在实时系统中快速响应。
页: [1]
查看完整版本: 一阶互补滤波