STM32采集电池电量方法实现

一、项目简介

      若设备接了锂电池,可以通过STM32的ADC采集电池的电量。锂电池为3节3.7V的单节串联,整体电压大约为12V。

二、实现过程

   1、由于STM32采集的电压范围为0-3.3V,所以无法直接采集锂电池的电压,这里可以用外接分压电阻的方法实现采集,同时,锂电池的电压和电量几乎为线性变化,所以可以通过采集电压值成比例转化为电量值。

2、分压电路设计:如图

根据经验,锂电池在没电的时候电压为9V,最高电压12V,则经过分压电路,AD端输出的电压范围为9*10/(10+47)=1.579到12*10/(10+47)= 2.211V,这样可以在ADC的电压采集范围内。

3、cubeMX设置

 

4、程序代码实现:

void Get_Battery_ADC_Value()
{
		HAL_ADC_Start(&hadc2);
    if(HAL_OK == HAL_ADC_PollForConversion(&hadc2,10))
    {
        Battery_ADC_Value = HAL_ADC_GetValue(&hadc2);

			 Battery_ADC_Volt=3.3*Battery_ADC_Value/4096;//根据采样值算出采集到的电压值

			Float_Battery_Level=(Battery_ADC_Volt-1.579)*100/(2.211-1.579);
			Battery_Level=Float_Battery_Level;
			if(Float_Battery_Level>100)Battery_Level=100;
			else if(Float_Battery_Level<0)Battery_Level=0;
			
    }
    HAL_ADC_Stop(&hadc2);
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 22:48:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 22:48:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 22:48:03       87 阅读
  4. Python语言-面向对象

    2024-03-10 22:48:03       96 阅读

热门阅读

  1. vue 菜鸟教学如何jason字符串转对象

    2024-03-10 22:48:03       39 阅读
  2. 音频视频如何转字幕,音频视频转字幕教程

    2024-03-10 22:48:03       48 阅读
  3. 【深度学习】Pytorch基础

    2024-03-10 22:48:03       37 阅读
  4. 基于python的可视化开发

    2024-03-10 22:48:03       36 阅读
  5. excel 如何自动调整行间距 vba

    2024-03-10 22:48:03       41 阅读
  6. 【48天笔试强训】day8

    2024-03-10 22:48:03       41 阅读
  7. https 加密解密过程是什么?

    2024-03-10 22:48:03       39 阅读
  8. for-in,for-of

    2024-03-10 22:48:03       45 阅读