基于STM32设计的18650锂电池电量(电压/电流)检测系统——采用电阻分压法、均值滤波及ADC测量—文末工程资料下载

embedded/2024/9/23 21:08:34/

基于STM32设计的锂电池电量(电压/电流)检测

前言:使用STM32F103C8T6的ADC,和电阻分压法及均值滤波来测量18650锂电池的电压,并在OLED显示屏上显示电池电压值,求出电池电压值即求出电池的电流值和电量值。本文将对其实现过程进行详细介绍。

演示视频:

基于STM32设计的18650锂电池电量(电压电流)检测系统

所需硬件:STM32F103C8T6核心板、18650锂电池、10K电阻、104电容、OLED显示屏、杜邦线

目录

1.硬件电路

2.电阻分压原理

2.ADC原理

3.电池电压和电池剩余电量关系

4.程序设计及资料下载链接


1.硬件电路

           实物图如下所示

        电路原理示意图如下所示 

        如上图所示为STM32设计的18650锂电池电量(电压/电流)检测系统的电路示意图,上图中的元件U1为STM32F103C8T6核心板,使用的电源是3.3V的正极电源,功能引脚包括OLED显示屏的SDA引脚(PB9)和SCL引脚(PB8)以及检测锂电池电量的ADC引脚BAT_ADC(PA0)引脚。元件OLED1为4针OLED显示屏,用来进行电池电压/电流/电量的显示。上图中右下角为锂电池电量检测电流,使用的是电阻分压原理(后面会详细介绍),使用两个10K电阻和一个104电容(100nF),18650锂电池的正极引脚接在BAT+处,负极引脚接电源地。

2.电阻分压原理

        那么为什么要进行电阻分压来进行电池电量检测呢?那是因为单片机的参考电压有关系,电池电压高于参考电压就没办法测量了,那么本系统所采用的单片机的参考电压是多少呢?

        如下图为单个ADC框图,可以看到有VREF参考电压的接入。

        如下表为ADC的引脚定义表,可以看到VREF+的电压范围在2.4V和VDDA之间, 

        可以知道,VDDA为 2.4V-3.6V,而锂电池电压在3.0V-4.2V之间变化,所以需要将锂电池的电压进行缩小来测量,那么咱们就来使用电阻分压原理来将锂电池的电压进行缩小来测量。

         先直接使用电阻分压进行计算测量的电压:本系统使用的是10K的电阻,若当前BAT电池电压为3.7V,有如下的计算得到单个电阻的电压值,当前BAT_ADC引脚所测量的电压1.85V,所测电压乘以2即为电池的BAT电压3.7V(1.85*2V)。则通过这个过程,测量的电压为实际的电压的一半,则满足单片机参考电压量程的需求。

        接下来讲解一下这个过程的原理: 这个原理基于串联电路的基本定律和欧姆定律。让我们一步步解释为什么无论电阻是多大,只要两个电阻相等,电压总是会均分。

    

        在串联电路中,如果两个电阻相等,那么它们会均分总电压。这是因为电路中的电流是相同的,而电压通过欧姆定律分布在电阻上。由于电阻值相等,电压降也是相等的。   

2.ADC原理

        测量电池的电压就需要使用到单片机的ADC功能了:

  • ADC(Analog-Digital Converter)模拟-数字转换器,简称模数转换器或AD转换器
  • ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。(1.STM32主要是数字电路,数字电路只有高低电平,没有几v电压的概念,所以想读取电压值,就需要借助adc模数转换器来实现,adc读取引脚上的模拟电压转换为一个数据存在寄存器里,我们再把这个数据读取到变量里来就可以进行显示、判断、记录等操作了;2.数字到模拟的桥梁是DAC数字模拟转换器,使用DAC就可以将数字变量转换为模拟电压,PWM也是数字到模拟的桥梁,PWM实现的就是DAC的功能,同时PWM只有完全导通和完全断开两种状态,在这两种状态上都没有功率损耗,所以在直流电机调速这种大功率的应用场景使用pwm来等效模拟量是比DAC更好的选择并且pwm电路更加简单更加常用,所以pwm还是挤占了dac很多的应用空间,目前dac的应用主要是在波形生成领域比如信号发生器、音频解码芯片等这些领域pwm还是不好代替的)

  • 12位逐次逼近型ADC,1us转换时间。(逐次逼近型是ADC的工作模式;12位和1us涉及到adc的俩个关键参数,第一个是分辨率,一般用多少位来表示,12位ad值表示范围就是0~2^12-1就是量化结果的范围0~4095,位数越高量化结果就越精细,对应分辨率就越高;第二个是转换时间就是转换频率,ad转换是需要花一小段时间的,这里1us就是表示从ad转换开始到产生结果需要花1us的时间,对应ad转换的频率就是1MHz(1MHz的周期是1微秒,是stm32的adc最快转换频率),如果你需要转换一个频率非常高的信号那就需要考虑一下这个转换频率是不是够用,如果你的信号频率比较低那这个最大1MHz的转换频率也完全够用)

  • 输入电压范围:0~3.3V,转换结果范围:0~4095。(adc的输入电压一般要求是在芯片供电的负极和正极之间变化的,0v对应0,3.3v对应4095,中间都是一一对应的线性关系)
  • 18个输入通道,可测量16个外部和2个内部信号源。(外部信号源就是16个gpio口,在引脚上直接接模拟信号就行了,不需任何额外的电路,引脚就直接能测电压;2个内部信号源是内部温度传感器和内部参考电压,温度传感器可以测量cpu的温度,比如你电脑可以显示一个cpu的温度就可以用adc读取这个温度传感器来测量,内部参考电压是一个1.2v左右的基准电压,这个基准电压是不随外部供电电压变化而变化的,所以如果你芯片的供电不是标准的3.3v那测量外部引脚的电压可能就不对,这时就可以读取这个基准电压进行校准,这样就能得到正确的电压值了)

  • 规则组和注入组两个转换单元。(是stm32 adc的增强功能,普通的ad转换流程是启动一次转换读一次值然后再启动再读值这样的流程,stm32的adc可以列一个组,一次启动一个组连续转换多个值并且有两个组,一个是用于常规使用的规则组,一个是用于突发事件的注入组)
  • 模拟看门狗自动监测输入电压范围。(一般可以用于测量光线强度,温度这些值,并且经常会有个需求,就是如果光线高于某个阈值/低于某个阈值或者温度高于某个阈值/低于某个阈值执行一些操作,这个高于某个阈值/低于某个阈值的判断就可以用模拟看门狗来自动执行,模拟看门狗可以监测指定的某些通道,当ad值高于设定的上阈值或低于下阈值时它就会申请中断,就可以在中断函数里执行相应的操作,这样就不用不断地手动读值再用if进行判断了)

  • STM32F103C8T6 的ADC资源:ADC1、ADC2,10个外部输入通道。(最多支持16个外部信号源,若想用更多的外部通道,可以选择引脚更多的型号,具体有多少个通道可以参考数据手册)

对于单片机的普通GPIO来说,只能读取引脚的高低电平,要么是高电平,要么是低电平,只有两个值,而使用了ADC之后,我们就可以对高电平和低电平之间的任意电压进行量化,最终用一个变量来表示,读取这个变量就可以知道这个引脚的具体电压到底是多少了,所以ADC其实就是一个电压表,把引脚的电压测出来放在一个变量里,这就是ADC的作用。

关于ADC的相关知识点还有很多,可以参见我的AD博文进行更为详细的学习:19.ADC模数转换器知识点+AD单通道&AD多通道应用程序示例_ad模数转换器-CSDN博客icon-default.png?t=O83Ahttps://archie.blog.csdn.net/article/details/136723340

3.电池电压和电池剩余电量关系

        当前系统可以实现对电压的检测,根据电压与电池剩余电量的关系即可得到电量值,根据欧姆定律即可求出电流值,即本系统可以完整实现对18650锂电池的电量、电压和电量的检测。

锂电池电压与电池剩余电量关系如下表所示(可能不同产品不一样,可参见电池厂商资料):

截止电压2.5-2.75v左右   稳定电压3.7v左右   满电4.2v左右

4.程序设计及资料下载链接

程序源码中使用了均值滤波来消除噪声干扰。

程序源码、原理图等资料下载见下方链接,或与我联系。

资料下载链接:基于STM32设计的18650锂电池电量(电压电流)检测系统-采用电阻分压法、均值滤波及ADC测量-皆可毕设/课设/作业/竞赛中资源-CSDN文库icon-default.png?t=O83Ahttps://download.csdn.net/download/m0_61712829/89734164?spm=1001.2014.3001.5501


http://www.ppmy.cn/embedded/109892.html

相关文章

一款免费的文生图软件

文生图是一种用文字和图形来表示和描述思维过程、知识结构和概念关系的图表。它以中心主题为核心,通过分支、关键词、关联线等方式将相关的概念、观点、思路等有机地组织在一起,以帮助人们更好地理清思路、记忆知识和展示思维脉络。文生图常用于思维导图…

【媒体邀约】论企业宣传与媒体合作

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 在探讨企业宣传与媒体合作的策略和实施时,可以从以下结构进行论述: 一、前言 企业宣传与媒体合作在当代商业环境中扮演着至关重要的角色。随着信息科技的发展和媒…

学工控必须知道的变频器字母符号

#变频器##变频器故障##伺服电机##电工##电工#工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

【C++高阶】深入理解C++智能指针:掌握RAII与内存安全的利器

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C异常处理机制 🌹🌹期待您的关注 🌹🌹 ❀C智能指针 📒1. 智能…

HTTP 之 消息结构(二十二)

HTTP(超文本传输协议)是一种用于传输超媒体文档的协议,它定义了客户端和服务器之间请求和响应的消息结构。HTTP消息由一系列标准头部字段、一个空行和可选的消息体组成。 客户端请求消息 请求消息包括以下格式:请求行(…

Git:远程项目代码上传管理

本地代码上传至远端仓库,需要下载git,访问官网下载https://git-scm.com/downloads 一、初始化本地仓库 首先要在项目本地,打开Git Bash,输入以下代码! git init 然后进行全局设置用户名和邮箱,使用以下代码…

Pr:媒体浏览器

Pr菜单:窗口/媒体浏览器 Window/Media Browser 快捷键:Shift 8 媒体浏览器 Media Browser是一个可以浏览、预览和导入不同类型媒体的面板。 在 Pr 中导入素材遇到问题时,可尝试使用媒体浏览器。 媒体浏览器是导入各类媒体的最佳选择&#xf…

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录 一、图像金字塔 1、什么是图像金字塔 2、图像金字塔作用 1)金字塔尺度间的图像信息补充 2)目标检测与识别 3)图像融合与拼接 4)图像增强与去噪 5)图像压缩与编码 二、用法解析 1、向下采样 1)概念…