[N32G45x] 一阶互补滤波

[复制链接]
 楼主| sdlls 发表于 2025-5-29 11:00 | 显示全部楼层 |阅读模式
  1. void DEVICE_INFO::TX_updata()

  2. {


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

  4. static u16 bre_i=0;

  5. static u16 bre_ii=0;

  6. static u16 bre_v=0;

  7. static u16 bre_vv=0;


  8. u16 adci,adcv;

  9. unsigned char r_buff[33];

  10. //TX电流

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

  12. adci=(adci*3300)/4096;


  13. //TX_electricity=adci;

  14. //电压

  15. adcv=Get_Adc_Average(ADC_CH10,10);

  16. adcv=(adcv*3300)/4096;


  17. //TX_voltage=adcv;


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


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

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


  21. bre_ii=bre_i; //保存上次值

  22. bre_i=adci; //保存本次值


  23. bre_vv=bre_v;

  24. bre_v=adcv; //保存本次值


  25. }


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 | 显示全部楼层
优化算法以提高计算效率,确保滤波器能够在实时系统中快速响应。
macpherson 发表于 2025-6-5 22:49 | 显示全部楼层
需紧密结合传感器特性、采样周期及应用场景。
gygp 发表于 2025-6-6 08:54 | 显示全部楼层
在进行互补滤波之前,需要对传感器数据进行预处理,包括量程转换、零偏校正等。
零偏校正可以通过在系统启动时采集一段时间的静止数据,计算平均值作为零偏值,并在后续数据处理中减去该值。
uptown 发表于 2025-6-6 10:48 | 显示全部楼层
滤波输入为最新数据,避免因数据延迟导致滤波失效。
zerorobert 发表于 2025-6-6 12:42 | 显示全部楼层
实现基础滤波代码,加入边界保护。
eefas 发表于 2025-6-6 14:28 | 显示全部楼层
虽然一阶互补滤波算法相对简单,但在资源受限的嵌入式系统中,仍需注意其实时性能。优化代码结构,减少不必要的计算开销,确保算法能够在规定时间内完成执行。
latera 发表于 2025-6-7 10:57 | 显示全部楼层
一阶滤波,只能简单滤掉高频
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

5173

帖子

2

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