BetaFlight开源代码之电压校准
2024-01-07 19:25:48
    		1. 源由
既然复杂的BetaFlight开源代码之电流校准都过了一遍,电压相对来说是比较简单的,一起过一下
2. 分析数据流
电源==路径1==》采样电路==路径2==》ADC==路径3==》MCU==路径4==》地面站/OSD
上述任何一个位置和路径都可能发生问题,导致电压不准。
- 电源问题,比如:测试电压源不准(设备异常)
- 路径1问题
- 采样电路问题,比如:采样芯片周边器件阻抗精度衰减
- 路径2问题,比如:信号干扰
- ADC/路径3/MCU问题,比如:代码异常
- 路径4问题,比如:协议格式不匹配
- 地面站/OSD问题:比如:代码异常
3. 采样电路
VBAT_ADC直接接MCU引脚进行ADC转换形成12bit ADC数据,供后续算法处理。
 
3. 原理
- inav/betaflight/ardupilot在电压传感器方面的校准方法大致是相同的,采用的是线性拟合: y = a x + b y = ax + b y=ax+b
- betaflight内部公式: 
       
        
         
         
           Y 
          
         
           = 
          
         
           ( 
          
         
           ( 
          
         
           s 
          
         
           r 
          
         
           c 
          
         
           ? 
          
         
           s 
          
         
           c 
          
         
           a 
          
         
           l 
          
         
           e 
          
         
           ? 
          
         
           g 
          
         
           e 
          
         
           t 
          
         
           V 
          
         
           r 
          
         
           e 
          
         
           f 
          
         
           M 
          
         
           v 
          
         
           ( 
          
         
           ) 
          
         
           / 
          
         
           10 
          
         
           + 
          
         
           ( 
          
         
           0 
          
         
           x 
          
         
           F 
          
         
           F 
          
         
           F 
          
         
           ? 
          
         
           5 
          
         
           ) 
          
         
           ) 
          
         
           / 
          
         
           ( 
          
         
           0 
          
         
           x 
          
         
           F 
          
         
           F 
          
         
           F 
          
         
           ? 
          
         
           d 
          
         
           i 
          
         
           v 
          
         
           i 
          
         
           d 
          
         
           e 
          
         
           r 
          
         
           ) 
          
         
           ) 
          
         
           / 
          
         
           m 
          
         
           u 
          
         
           l 
          
         
           t 
          
         
           i 
          
         
           p 
          
         
           l 
          
         
           i 
          
         
           e 
          
         
           r 
          
         
        
          Y = ((src *scale * getVrefMv() / 10 + (0xFFF * 5)) / (0xFFF * divider)) / multiplier 
         
        
      Y=((src?scale?getVrefMv()/10+(0xFFF?5))/(0xFFF?divider))/multiplier
 注:STM32在计算时,运用了一些整形变换,使得上述运算不用到浮点指令,减少MCU的工作量。
- betaflight电压计地面站界面
  
 基于上面的电路,大家确实不需要调整太多,只要硬件厂商采用上述10:1的分压电路进行设计。如果您希望自己校准,也未尝不可,校准需要用硬件测试电压。
4. 示例
测试注意事项:
- 建议测试2点以上数据:3S(12.6)、4S(16.8)等等
- 设置scale=110,divider=10,multiplier=1测试多点电压数据:地面站电压数据(GSVlotage),万用表电压数据(MeterVoltage);
- 当multiplier=1时,计算就比较简单。
 A = s c a l e / ( 10 ? m u l t i p l i e r ? ( 4095 + d i v i d e r ) ) A=scale/(10*multiplier*(4095+divider)) A=scale/(10?multiplier?(4095+divider))
 B = ( 4095 ? 5 ) / ( m u l t i p l i e r ? ( 4095 + d i v i d e r ) ) B=(4095*5)/(multiplier*(4095+divider)) B=(4095?5)/(multiplier?(4095+divider))
- 通过工具Linear regression calculator进行拟合;
- 计算出scale,divider值,并填入betaflight地面站配置参数栏位
5. 实测&转换数据
这里就懒惰了点,数据量比较少,所以感觉不出拟合的效果,感兴趣的朋友可以多做几个数据点。

6. 参考资料
【1】BetaFlight开源代码框架简介
 【2】BetaFlight深入传感设计:传感模块设计框架
 【3】BetaFlight开源代码之电流校准
 【4】BetaFlight模块设计之三:芯片温度&参考电压和电池监测模块分析
    			文章来源:https://blog.csdn.net/lida2003/article/details/135436183
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!