分压电阻方式的ADC电压校准

       

无人机有个流程是电池电压校准。具体做法是:让你用万用表测量一下电池两端的电压,然后输入到文本框中,电机计算能重新计算出电压分压器的值,从而获得电池电压值。

这种方法实现的原理是这样的:

电阻分压检测电压原理,以上图为例:

                                           Vadc = Vbus * \frac{R2}{R1+R2}

当电路确定时,R2/(R1+R2)是一个定值R,而这个R,我们如果通过它们的阻值运算来确定,最终结果会有一定的误差。这种误差是生成工艺,焊接工艺,和环境温度产生的,无法避免。

如果把R当做未知量,直接通过电压表测量获得输入电压Vmeasure,就可以计算出R来,因为Vadc可以通过此时的ADC采样值adc0计算出来。这样有一个很明显的好处是,可以不必关心分压电阻的阻值大小。

整理后的公式如下:

                                  R = \frac{adc0 * VCC}{ADCresolution * Vmeasure}

其中Vcc为单片机的ADC基准电压Vref,ADCresolution为分辨率。

有了标定的R值后,可以求出待测量的电压Vbus公式,假设此时的ADC采样值为adc1:

                                 Vbus =adc1 * \frac{ Vcc}{ADCresolution * R}

将R代入,可以消去参考电压Vref,ADC分辨率ADCresolution:

                                    Vbus = adc1 * \frac{Vmeasure}{adc0}

adc1为此刻的ADC采样值。Vbus是要求的输入电压。

通过公式可以发现,此种方法计算的值,与Vcc、ADC分辨率都没有关系,只与当时用万用表测量的电压值和当时的ADC采样值有关。

// ADC电源电压标定
inline float vbus_calibration(float measured_v,float adc)
{
	return measured_v/adc;// 用于电压计算的系数
}

// 计算电源电压
inline float vbus_measur(u32 adc ,float calibration)
{
	return adc * calibration;
}

                           

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laocui1

你的鼓励是我创作的最大动了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值