【FireBeetle 2 ESP32 C6评测】乐高太阳能储能系统——3获取电池的容量百分比
<div class='showpostmsg'> 本帖最后由 Maker_kun 于 2024-5-22 23:54 编辑<p>一、1865电池的选型</p>
<p>FireBeetle 2 ESP32 C6自带一个PH2.0锂电池接口,而且开发板自带锂电池充电芯片,所以只要购买一个合适容量的锂电池就可以当做FireBeetle 2 ESP32 C6备用电池,选型一定要性价比(用量大、通用适配、大品牌),所以从淘宝购买只18650通用电池</p>
<p>斥巨资购买的,花了5块钱买了个2200mAh锂电池,真香!</p>
<p> </p>
<p> </p>
<p>实物连接如下:</p>
<p> </p>
<p> </p>
<p> </p>
<p>二、电池电量获取方法</p>
<p node="">锂电池的电量百分比(SOC)是指电池中可用电能的状态,通常以百分比来表示。由于锂电池的可用电能会因充放电电流、温度及老化现象而有所不同,因此荷电状态的定义也区分为两种:绝对荷电状态和相对荷电状态。</p>
<h3>电量检测方法</h3>
<ol>
<li>
<p node=""><strong>电压测试法</strong>:通过监控电池的电压来估算剩余电量。例如,锂电池在100%充满时的开路电压约为4.2V,而在90%时约为4.06V。具体的电压与电量百分比对应关系如下:</p>
<ul>
<li>100%:4.20V</li>
<li>90%:4.06V</li>
<li>80%:3.98V</li>
<li>70%:3.92V</li>
<li>60%:3.87V</li>
<li>50%:3.82V</li>
</ul>
</li>
<li>
<p node=""><strong>电池建模法</strong>:通过建立电池的数学模型来预测其剩余电量。这种方法需要较高的计算复杂度,但可以提供更精确的结果。</p>
</li>
<li>
<p node=""><strong>实时监测系统</strong>:使用电池管理系统(BMS)或其他传感器设备,如MAX17043模块,实时监测电池的电量百分比、充电和放电率等参数。</p>
</li>
</ol>
<h3>计算方法</h3>
<ol>
<li>
<p node=""><strong>基于电压的计算</strong>:直接根据电池的开路电压与电量百分比的对应关系进行计算。例如,如果测得电池电压为4.0V,可以根据上述表格推算出电量大约为95%左右。</p>
</li>
<li>
<p node=""><strong>基于充放电曲线的计算</strong>:利用锂电池的充放电曲线,通过算法匹配实际数据来估算剩余电量。这种方法通常需要复杂的算法支持,并且需要考虑电池老化等因素。</p>
</li>
</ol>
<h3>实际应用中的注意事项</h3>
<ul>
<li><strong>温度影响</strong>:锂电池的性能会受到温度的影响,高温会加速电池老化,低温则会降低其放电能力,因此在实际应用中需要考虑温度对电量百分比的影响。</li>
<li><strong>老化问题</strong>:随着使用时间的增加,锂电池会逐渐老化,其容量会逐步下降。因此,在设计电量检测系统时,需要考虑到老化因素,以确保检测结果的准确性。</li>
</ul>
<p node="">锂电池的电量百分比可以通过多种方法进行检测和计算,但需要综合考虑电池的电压、温度、老化等因素,以确保检测结果的准确性和可靠性。</p>
<h4>锂电池电压测试法在不同温度下的准确性如何?</h4>
<p node="">锂电池电压测试法在不同温度下的准确性受到多种因素的影响,主要包括化学反应速率、内阻变化以及电池模型的准确性等。</p>
<ol>
<li>
<p node=""><strong>化学反应速率</strong>:温度是影响锂电池单体电芯开路电压(OCV)的重要因素之一。在不同温度下,化学反应速率会发生变化,从而影响OCV值。例如,在低温条件下,电化学反应速率减慢,导致电池内阻增加,放电容量和放电平台电压下降。当温度从18℃降至0℃时,150Ah锂电池组的内阻会加倍,进一步导致放电容量急剧下降。</p>
</li>
<li>
<p node=""><strong>内阻变化</strong>:温度对电池的放电性能有直接影响,特别是在低温环境下,电池内阻加大,极化内阻迅速增加,导致电池放电容量和放电平台电压下降。这种内阻的增加会影响电池的功率和能量输出,从而影响电压测试的准确性。</p>
</li>
<li>
<p node=""><strong>电池模型的准确性</strong>:如果测试的电池温度与环境温度不一致,会导致电池模型的温度输入不准确,从而影响电池模型的准确性。为了提高SOC估计的准确性,可以建立锂离子电池耦合温度与SOC的双极化动态热模型,并通过粒子群优化(PSO)算法进行参数辨识,以减少温度偏差的影响。</p>
</li>
<li>
<p node=""><strong>实验研究</strong>:通过充放电实验测得电池SOC—OCV关系、库伦效率—放电电流关系曲线,并通过8阶拟合,可以较为准确地描述温度、放电倍率对电池内阻、电压一致性的影响<sup><canvas height="18" width="30"></canvas></sup>。此外,动态EIS(全局电化学阻抗谱)测试方法可以在10-55℃温度范围内监测阻抗的变化和温度的变化,确保了SoC对温度的影响。</p>
</li>
</ol>
<p node="">锂电池电压测试法在不同温度下的准确性受到多种因素的影响,包括化学反应速率、内阻变化以及电池模型的准确性等。</p>
<h4>电池建模法在预测锂电池剩余电量方面的最新进展是什么?</h4>
<p node="">电池建模法在预测锂电池剩余电量(State of Charge, SOC)方面的最新进展主要集中在以下几个方面:</p>
<ol>
<li>
<p node=""><strong>基于机器学习的方法</strong>:近年来,深度学习技术在锂离子电池健康管理(Battery Health Management, BPHM)系统中的应用取得了显著进展。特别是长短期记忆网络(LSTM)和卷积神经网络(CNN)等深度学习模型被广泛用于电池容量和健康状态的预测。例如,基于1DCNN-LSTM的模型能够有效地预测锂离子电池的健康状态(SOH),并且通过贝叶斯跟踪训练优化模型参数,从而提高预测的准确性。</p>
</li>
<li>
<p node=""><strong>等效电路模型和电化学模型</strong>:传统的等效电路模型和电化学模型仍然是研究的重点。这些模型通过对电池内部反应过程的模拟,能够提供较高的精度,但同时也带来了复杂性和计算负担<sup><canvas height="18" width="30"></canvas></sup>。学者们不断对这些模型进行优化和改进,以适应不同的应用场景。</p>
</li>
<li>
<p node=""><strong>数据驱动的方法</strong>:除了传统的模型驱动方法外,数据驱动的方法也在不断发展。这些方法不需要深入了解电池内部的物理过程,而是通过历史数据来建立预测模型。这种方法通常具有较低的计算复杂度和更好的灵活性。</p>
</li>
<li>
<p node=""><strong>综合方法</strong>:一些研究提出了将多种方法结合起来的综合策略,以期望通过不同方法的互补优势来提高预测的准确性和鲁棒性。例如,结合开路电压法、安时积分法以及基于模型和数据驱动的方法,可以更全面地估计电池的SOC。</p>
</li>
</ol>
<p node="">电池建模法在预测锂电池剩余电量方面的最新进展主要体现在深度学习技术的广泛应用、传统模型的不断优化以及数据驱动方法的发展。</p>
<h4>实时监测系统在锂电池管理中的应用案例有哪些?</h4>
<p node="">实时监测系统在锂电池管理中的应用案例非常广泛,涵盖了多个领域和技术。以下是一些具体的应用案例:</p>
<p node="">电动汽车中的锂电池管理系统(BMS)通过实时监控电池的电压、电流、温度等参数,确保电池在安全范围内运行,并最大限度地延长电池寿命。例如,某研究工作全面介绍了电动汽车锂电池管理系统的设计过程,重点分析了设计过程中的难点和重点。</p>
<p node="">新科iBMS智慧云平台通过对电池数据的实时监控与智能预警,支持电池租赁、共享换电、共享骑行、共享滑板车等多种上层应用,降低过冲过放、设备被盗等不安全事故。</p>
<p node="">为了提高电动汽车锂电池的实时监控能力和安全运行,节约电池维护成本,提出了一种由车载信息采集器和上位机组成的电动汽车锂电池远程监控系统。该系统通过微处理器、CAN总线控制器、GPS模块和GPRS模块实现数据采集和传输。</p>
<p node="">电池管理系统(BMS)作为实时监控、自动均衡、智能充放电的电子部件,具有保障安全、延长寿命、估算剩余电量等重要功能,保障电池的安全稳定可靠运行。</p>
<p node="">基于阿里云物联网平台,实现数据采集、分析,实时监控动力电池运行状况,为终端用户提供更具体验的价值。整体提升了公司在锂电智能化行业的竞争力,最终实现降低成本、提高产品质量和服务质量。</p>
<p node="">通过嵌入式操作系统实时高效地监控管理锂电池充电、放电过程,并提供上位机和触摸屏动态显示锂电池组的工作状况。</p>
<p node="">BMS主要包括电池状态监测、充放电控制、温度管理和故障诊断等功能。通过对电池的实时监测和控制,BMS可以确保电池在安全范围内运行,并最大限度地延长电池寿命。</p>
<h4>如何准确计算基于充放电曲线的锂电池电量百分比?</h4>
<p node="">准确计算基于充放电曲线的锂电池电量百分比需要综合考虑多个因素和步骤。以下是详细的计算方法:</p>
<p node="">首先,需要通过实验或测试获取锂电池的充放电曲线。这些曲线通常包括容量-电压曲线、恒流放电(CC)、恒压放电(CV)等不同类型的放电方式。</p>
<p node="">通过对充放电曲线的深入分析,可以了解电池的充电效率、放电特性、容量评估、内阻评估和循环寿命评估等信息。例如,放电平台可以反映电池的容量信息,而容量-电压曲线可以显示电池的荷电状态(SOC)。</p>
<p node="">为了精确计算剩余电量,需要使用专业的电池测试仪器来测量电池的开路电压,并将其转换为电量百分比。</p>
<p node="">通过容量-电压曲线,可以读出电池在不同状态下的容量和电压信息。例如,某磷酸铁锂电池在不同温度下的放电曲线可以显示其容量和电压平台等信息。</p>
<p node="">综合以上步骤和数据,可以通过以下公式计算锂电池的剩余电量百分比:</p>
<p> </p>
<p node="">其中,“当前容量”是指在当前条件下电池的实际容量,而“总容量”是指电池的标称容量。</p>
<h4>锂电池老化对电量百分比检测结果的影响研究有哪些?</h4>
<p node="">锂电池老化对电量百分比检测结果的影响主要体现在以下几个方面:</p>
<ol>
<li>
<p node=""><strong>容量衰退</strong>:随着电池老化,电池的容量会逐渐下降。一个全新完全充电的电池的绝对荷电状态是100%,但老化的电池即便完全充电,在不同充放电情况中也无法达到100%<sup><canvas height="18" width="30"></canvas></sup>。这意味着老化的电池在实际使用中,其存储的电量会少于标称容量,从而导致电量百分比检测结果偏低。</p>
</li>
<li>
<p node=""><strong>内阻增加</strong>:电池老化过程中,内阻会逐渐增长,这会影响电池的使用寿命和性能表现<sup><canvas height="18" width="30"></canvas></sup>。内阻的增加会导致电池在放电时产生更多的热量,从而加速老化过程,最终影响电量百分比的准确性。</p>
</li>
<li>
<p node=""><strong>温度变化</strong>:温度是影响电池容量计算精确度的一个重要因素。老化的电池在高温环境下更容易发生化学反应,导致SEI(固体电解质界面)层的非均匀分布,从而影响电池的电化学性能。这种非均匀分布会导致电池在充放电过程中电压波动,进而影响电量百分比的检测结果。</p>
</li>
<li>
<p node=""><strong>自放电</strong>:老化的电池会出现自放电现象,即在未连接负载的情况下,电池仍然会逐渐失去电量。这种自放电会导致实际可用电量减少,从而使得电量百分比检测结果偏低。</p>
</li>
<li>
<p node=""><strong>模型复杂性</strong>:当前锂离子动力电池的电化学模型存在复杂性和建模难度大的问题,这使得老化评估效果不佳。因此,老化对电量百分比检测结果的影响也受到模型复杂性的限制。</p>
</li>
</ol>
<p node="">锂电池老化对电量百分比检测结果的影响主要体现在容量衰退、内阻增加、温度变化、自放电以及模型复杂性等方面。</p>
<p node="">以上内容来之AI搜索,理论这么多,对于我们项目来说,怎么简单怎么来,所以直接找做好的项目参考使用。</p>
<p node=""> </p>
<p node="">最简单的方法通过锂电池的电压来获取计算出锂电池的剩余电量</p>
<p node=""> </p>
<p> </p>
<p>三、获取安装1865锂电池电量库</p>
<p>Arduino开发平台最强大之处提供大量的库,可以很方便进行调用,为了准确获取到锂电池电量,直接使用成熟的库进行调用</p>
<p>安装方法:</p>
<p> </p>
<p> </p>
<p>四、移植FireBeetle 2 ESP32 C6开发板进行调用</p>
<p>先参考官网电压采集程序:</p>
<p>参考:<a href="https://wiki.dfrobot.com.cn/_SKU_DFR1075_FireBeetle_2_Board_ESP32_C6_Basic_Tutorial" target="_blank">https://wiki.dfrobot.com.cn/_SKU_DFR1075_FireBeetle_2_Board_ESP32_C6_Basic_Tutorial</a></p>
<p> </p>
<p>可以正常获取锂电池的电压,采集锂电池电压引脚为“<span style="color:#e74c3c;"><strong>pin 0</strong></span>”号引脚,锂电池电压为4214mV</p>
<p> </p>
<p>打开案例<strong itemprop="name"><a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="https://github.com/danilopinotti/Battery18650Stats">Battery18650Stats</a></strong></p>
<p> </p>
<p>修改采集电压引脚:</p>
<pre>
<code>#include <Arduino.h>
#include <Battery18650Stats.h>
#define ADC_PIN 0
Battery18650Stats battery(ADC_PIN);
void setup() {
Serial.begin(115200);
Serial.print("Volts: ");
Serial.println(battery.getBatteryVolts());
Serial.print("Charge level: ");
Serial.println(battery.getBatteryChargeLevel());
Serial.print("Charge level (using the reference table): ");
Serial.println(battery.getBatteryChargeLevel(true));
}
void loop() {
//
}
</code></pre>
<p>运行结果:</p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>电压估算的方法最简单,也是误差最大的。</p>
<p>这个看着不错~期待最后的成品</p>
<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan79.gif" width="52" /><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan79.gif" width="52" /><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan79.gif" width="52" /> 楼主的分享太精彩啦~~</p>
dcexpert 发表于 2024-5-23 10:04
电压估算的方法最简单,也是误差最大的。
<p>是的,尤其是在充电的时候,根本不能参考。</p>
dcexpert 发表于 2024-5-23 10:04
电压估算的方法最简单,也是误差最大的。
<p>要求不高的情况可以采用电压方法,不过随着研究的深入,我相信后面会有先进的算法可以进行优化的:loveliness:</p><br/> okhxyyo 发表于 2024-5-23 10:24
这个看着不错~期待最后的成品
<p>感谢夸奖,我会努力的{:1_102:}</p><br/> wangerxian 发表于 2024-5-23 18:27
是的,尤其是在充电的时候,根本不能参考。
<p>有时间研究一下,不稳定的原因是充电和放电(电压和容量)曲线不一样吗?</p><br/> Maker_kun 发表于 2024-5-24 08:32
要求不高的情况可以采用电压方法,不过随着研究的深入,我相信后面会有先进的算法可以进行优化的:lovelin ...
<p>只看电压,基本没法优化出太好的结果,特别随着电池老化内阻增加,基本就不准了。</p>
Maker_kun 发表于 2024-5-24 08:34
有时间研究一下,不稳定的原因是充电和放电(电压和容量)曲线不一样吗?
<p>因为充电到后期就是恒压充电了,电池电量用电压就体现不出来了。</p>
页:
[1]