如何使用ADC测量我们设备的锂电池电压

这篇具有很好参考价值的文章主要介绍了如何使用ADC测量我们设备的锂电池电压。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

电路设计:

首先当我们想知道设备还有多少电的时候,我们就需要有一个电压监测电路

如何使用ADC测量我们设备的锂电池电压

 通常我们会想到通过两个电阻分压的方式来获取电压,通过两个电阻分压,连接到单片机的ADC引脚。ADC测到的电压,就是锂电池电压的一半

因为锂电池的电压范围大概在2.7V到4.2V之间,所以ADC引脚的电压会在1.35~2.1V之间,不会超过普通单片机的3.3V电压

不过除非通过拨动开关将这部分电路彻底断电,比如平常的通过按键实现开关机,当产品处于关机状态时,我们以为锂电池就不耗电了,其实,通过电路可以发现,锂电池其实还在通过2个10k的电阻耗电

随着时间的推移,该产品放着放着电就减少了,而且当电池电压减少到2.7V以下时,锂电池就可能损坏不能用了如何使用ADC测量我们设备的锂电池电压

上面电路,就很巧妙的解决了这个问题

 BAT_ADC_EN    引脚是单片机的一个普通IO引脚,在设备关机的时候,将引脚拉高,PMOS将电路断开,不让这两个分压电阻消耗电量

ADC值转换成实际电压值

现在我们要使用ADC,读取值

我们需要使用三个函数:

1)ADC_Start       启动ADC

2)ADC_PollForConversion         ADC值的转换

3)ADC_GetValue         读取ADC值

u16 Get_Adc_Average(u8 times)
{
    u32 temp_val = 0;
    u8 t;

    for(t = 0; t < times; t++)
    {
		HAL_ADC_Start(&hadc);
		HAL_ADC_PollForConversion(&hadc, 1000);
        temp_val += HAL_ADC_GetValue(&hadc);
        delay_ms(5);
    }

    return temp_val / times;
}

但是如果你直接读BAT_ADC引脚是话,你会发现读出来的值并不是电池电压值,那我们读到的是什么值呢?

这就需要看一个特性,就是几位的ADC,在手册上就会给出,例如,STM32的ADC是12位的。另外,还有8位,10位,16位,24位等。

我们用STM32来举例子,stm32读到的ADC值,是从0到4095,当你把ADC引脚接了GND,读到的就是0,当你把ADC引脚接了VDD,读到的就是4095。

4095是怎么来的呢?

前面提到,STM32的ADC是12位的,我们知道,8位的值是从0~255;16位的值,是从0~65535。这两个位的最大值,是我们最为熟悉的。

(怎么算出来的?这问题就又降低到另一个层面了,这里我们说的几位的值,每个位只能是0或者1,比如2位的值,可以表示为00 01 10 11四种不同的值,这是以2进制表示的,转换成十进制就是0 1 2 3,所以得出结论,2位的值可以表示从0~3。同理,3位的值,可以表示十进制的0~7,你可以展开计算一下。4位的值,可以表示0~15,5位的值,可以表示从0~31,同理,你可以得出任意位的值可以表示的范围。)

所以,12位的值,可以表示从0~4095,这就是先在感性上,认识了为什么12位的ADC的值,是从0~4095

将读到的值换算成我们想要的电压值

前面提到了,我们输入GND,读到的值是0,输入VDD,得到的值是4095,那么,当你读到2035的时候,你知道输入电压多少V吗?这个问题,归根接地,就到了数学XY坐标,已知两点坐标值(0,0)(3.3,4095),给出任意X坐标值,求Y值的问题了吧?

如何使用ADC测量我们设备的锂电池电压

    	BatADCValue=Get_Adc_Average(10); // 获取ADC原始值0~4095
		BatValue= (float)BatADCValue * (3.3 / 2048); //得到电压值    为什么是2048?因为电阻分压了,需要再乘2,所以4096就变成了2048
	    printf("%.1fV\r\n",BatValue);
		BatADCValue = BatValue*100; // 把float数据给了int
		printf("%dV\r\n",BatADCValue);

到了这里,你就可以简单的通过使用3.3V这个基准电压获取到我们所需要的电池电压

如果想更进一步的学习,那就继续往下看。。。

参考电压是什么

在理想的情况下,我们希望VDD电压一直是3.3V,但是实际上你用万用表量一下你的VDDA的实际电压肯定不会一直稳定在3.300V。或许是2.296V,或许是3.312V。然后你把VDD连接到ADC引脚之后,得到的是4095,也就是,实际上,当你读出4095这个数据的时候,实际的电压值不是你想象中的3.300V。可能你会觉得几毫伏的电压差无所谓,但实际应用中,几毫伏就可能代表很大的实际工况,例如,在一个量程为50克的电子称上。

并且产品在正常使用的过程中,当电池电压小于3.3V时,LDO的输出电压,就不再是3.3V了,随着电池电压的减小,LDO的输出电压也会减小,如果一直使用3.3V作为基准来测量电池电压,就会出现错误,

所以…

我们需要找到单片机的  “内部参考电压”,让我们知道真实的基准电压是多少

通过查看手册,我们找到了这个公式:

VDDA_Value = 3.0*VREFINT_CAL/VREFINT_DATA

这个公式的含义简单介绍一下,

VREFINT_CAL:内部参考电压的校准值

VREFINT_DATA:ADC的通道17,内部参考电压的ADC值

VDDA_Value就是我们所需要的最准确的基准电压

将3.3V替换位VDDA_Value就可以了文章来源地址https://www.toymoban.com/news/detail-427665.html

到了这里,关于如何使用ADC测量我们设备的锂电池电压的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 锂电池基础知识

    锂电池基础知识 目 录 一、前 言 二、锂离子电池的分类及性能指标 三、锂离子电池的优缺点 3.1 锂离子电池的优点 3.2 锂离子电池的缺点 四、锂离子电池工作原理 4.1 锂离子电芯工作原理 4.2 保护电路工作原理 五、锂离子电池的发展方向 一、前 言 二、锂离子电池的分类及性

    2023年04月17日
    浏览(50)
  • NASA锂电池数据集分析

    电池容量衰减曲线 (左边#5、6、7、18,右边#25、26、27、28的) 电池阻抗曲线 数据分析 电池循环老化过程中会出现容量衰减和阻抗上升的现象。是由于电化学反应活性逐渐下降 曲线下降过程中突然回升再继续下降:容量增生和恢复现象。是由于在循环周期中的静置阶段时,

    2024年04月17日
    浏览(42)
  • 如何用太阳能电池板给锂电池充电(CN3791 )

    这是一个多晶太阳能电池板,尺寸是8cm*8cm,它的峰值功率输出电压是5V,电流是150mA,今天就来和大家分享下如何通过这种太阳能电池板给单节18650锂电池充电。 太阳能电池板在光照强度一定,负载较小时可以看成一个恒流源,它的伏安曲线如白色实线所示,它的输出功率曲

    2024年02月04日
    浏览(49)
  • YDT1363 磷酸铁锂电池协议

    YDT 1363.3-2014 通信局(站)电源、空调及环境集中监控管理系统 第3部分:前端智能设备协议 - 道客巴巴 P135 磷酸铁锂电池管理系统通信协议详解

    2024年02月15日
    浏览(34)
  • 锂电池二阶RC模型参数辨识

    1、锂电池二阶RC模型参数辨识 最小二乘法参数辨识基本原理流程图 HPPC脉冲响应图 放电过程示意图 曲线转态示意图 2、模型精度验证 二阶RC等效电路模型的等效电路模型图如下。 其中,Uoc表示理想电压源,与SOC存在非线性关系;R0表示欧姆内阻, R1 R2是极化电阻,C1 C2是极化

    2024年01月21日
    浏览(44)
  • 关于电动车的锂电池分析

    汽车使用锂电池的优势和缺点具体解释如下: 优势: 高能量密度 :锂电池能够储存更多的电能,这使得电动汽车在较小的电池体积和重量下能够行驶更远的距离,提升了车辆的续航能力。 轻量化 :锂电池比传统的铅酸电池等更轻,因此电动汽车的整体重量减少,有助于提

    2024年04月11日
    浏览(47)
  • 锂电池老化房监测软件功能介绍

    模拟量采集/老化房采集软件 锂电池高温老化房的监测软件通常用于监测和记录锂电池在高温环境下的温度、电压、电流等参数。这些软件可以提供实时数据监测、数据记录和报表生成等功能,帮助用户监控锂电池的性能和稳定性。 监测软件:某些锂电池高温老化房配备了监

    2024年02月11日
    浏览(42)
  • 3串锂电池充电保护板设计

    最近开发肌电反馈仪器,需要支持电池供电,所以设计了一款3串锂电池的充电保护板,特此记录一下。 由于第一次涉及电池供电方面的设计,有什么问题,还望大家批评指正,谢谢。下面直接放原理图 首先是电压抬升模块,满足usb充电需求,SY7208支持5V/2A充电,最高抬升电

    2024年02月15日
    浏览(35)
  • 震惊!为了4680锂电池溯源,竟然做出这种事情

    电池溯源,一直都是国家尤为重视的话题。 中国电子技术标准化研究院 更是一再强调了: 锂电编码标准编制和溯源平台初步建设方案 。 参会代表围绕锂电编码溯源体系建设有关问题开展了研讨 , 表示依托行业通用编码标准,建立完善 的 锂电全生命周期溯源管理体系 ,是

    2023年04月21日
    浏览(35)
  • 基于开路电压+安时积分法估算锂电池SOC(一)

             SOC对于电池的寿命以及使用效率是至关重要的,对于锂电池的SOC估算,有很多种,开路电压、安时积分、卡尔曼滤波、神经网络等方法。卡尔曼滤波、神经网络训练这两种方法目前只是处于理论阶段,对于开发人员开发难度大。安时积分法、开路电压法这两种开

    2024年02月02日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包