基于STM32F103控制器的蓄电池双向电流检测设计(2)
时间:2026-01-17
时间:2026-01-17
基于STM32F103控制器的蓄电池双向电流检测设计
图1 信号采集和处理的工作原理图
2.1电压检测
电压信号量的检测采用双电阻分压模式,取两个合适阻值的电阻串联分压,分压后的电压信号送入STM32F103处理器的AD转换引脚。本设计中,控制器基准电压采用+2.5V,故电压信号输入范围须小于等于
2.5V。而分压电阻R1和R2的关系有公式(1)开确定,即
(1)
其中Vbat为蓄电池组电压值,实际变化范围:20V~28V,取Vbat最大值28V,R1=102kΩ,R2=10Ω,均选用精度为1%的金属膜电阻。R1和R2的串联电阻达到112 kΩ,消耗的电量对装备工作不会产生过大的影响。
2.2充放电电流双向采样与处理
系统充放电电流的实时检测选用瑞士LEM公司LA28-NP电流传感器,该传感器是利用霍尔原理的闭环(补偿)电流传感器,原边回路和副边回路之间绝缘,可用于测量直交流脉冲和混合型电流,供电电压±15V。系统中采用1000:5的匝比,原边充放电±5A电流对应副边额定电流Is有效值为±25mA。在应用中,感应电流Is串联精密电阻Rm,取得电压量V1,电阻Rm的取值取决于AD转换器对于V2的要求。
电流传感器输出电流为双向,即±25mA的电流信号,在实际工况中,放电时输出最大+25mA电流,而充电时,输出为-25mA电流,由此而取得的电压信号V1相对于地电平也为相应的正负电压。STM32F103控制器ADC输入范围为:Vref-≤Vin≤Vref+,应用中Vref-接模拟地,Vref+接2.5V电压基准,故ADC输入范围:0~2.5V。目前存在的问题是:STM32F103控制器采用单3.3V工作,模拟量输入无法处理方向电压。在传统的方式下,如果电阻Rm基准电平端接入地,当充电工况下,感应电流V1为负电压,控制器无能为力。针对这个问题,本文设计了如图2所示的累加升压、跟随方向信号预处理电路,解决了双向电流的AD采样问题。
基于STM32F103控制器的蓄电池双向电流检测设计
图2 电压累加升压、跟随反向转换电路
该设计的基本思想是将双向电流的电压变化范围均控制在0~Vref+范围,是以牺牲AD转换的精度为代价的,详细过程如下:
(1)串入电阻Rm=50Ω,取得模拟量电压输出V1范围:-1.25V~+1.25V;
(2)利用两门运算放大器构建求和电路,实现V1和+1.25V电压基准累加,将V1升压至0~-2.5V。在做一次反向跟随放大,实现电压反向功能,输出电压V2范围0~+2.5V。
图2中电压Vmid = 。
取R3=R4=R5=10kΩ,Vmid = -(1.25+Vin),故Vmin电压范围取值:0~-2.5V。
在第二级的反相放大电路中Vout=。
取R6=R7=10kΩ,则Vout = -Vmid,Vout取值范围:0~+2.5V。
运算放大器选用通用运放LM324,供电电压±15V,和电流传感器LA28-NP采用同一供电电路。
(3)STM32F103控制器AD转换为12位精度,理论上对应数字量范围0~4096。实际情况下,由于接插件、线缆、PCB和器件的综合影响,求得放充电流计算公式为:y=kx-5.046,k=0.00244,在实际的程序编制中,k定义为float数据类型,至少取3位有效数字,才能保证0.01A的电流精度。x表示控制器AD转换得到的数字量,y表示实际电流值,负数表示充电电流,正数表示放电电流。
图3 充放电电流和AD数字量的曲线关系
3.软件编制
3.1软件设计基本思路
监控系统软件的开发采用ARM公司的RealView MDK开发工具,统一采用C语言编程。为提高开发效率,ST公司推出了针对STM32控制器的固件函数库,目前可用的最新版本为STM32F10x_StdPeriph_Lib_V3.2.0。电压和电流检测AD转换软件设置及工作过程较为简单。
(1)配置模拟量输入的GPIO口,STM32控制器有个很大的优点,在于其ADC转换输入引脚可以是任意GPIO,,只要GPIO配置为GPIO_Mode_AIN模式,即可以实现模拟量输入,STM32F103共有16个外部通道,该设计中将PC4好PC6作为电压量和电流量的ADC输入端;
(2)设置ADC,将ADC设置为连续转换模式、右对齐、非外部触发;
(3)启动ADC,开始采样转换和处理。
3.2主要程序片段
STM32的ADC主要程序片段如下:
/*配置GPIO口程序*/
上一篇:佐龙小学学校应急预案范本