基于STM32F103控制器的蓄电池双向电流检测设计
更新时间:2023-05-20 06:13:01 阅读量: 实用文档 文档下载
基于STM32F103控制器的蓄电池双向电流检测设计
基于STM32F103控制器的蓄电池双向电流检测设计
高兵权 肖学福 刘金彪 张扬奇
摘要:介绍了装备蓄电池组工作电压和电流实现检测的需求,利用运算放大器构建了正负双向电流量累积求和及跟踪反向的预处理电路,基于STM32F103控制器片内AD实现了12位电压和电流的信号采集转换。最后给出了主要程序片段和如何提高ADC精度的一些措施。
关键词:STM32,控制器,双向,电流,检测
中图分类号:TB51 文献标识码:A
The Design of Bidirectional Battery Current Detection With STM32F103 Controller
Gao Bing-quan, Xiao Xue-fu, Liu Jin-biao Zhang Yang-qi
(Institute of Military Transportation ,Tianjin,300161)
Abstract:The need of equipment battery voltage and current real-time detection is introduced. Build the bidirectional current sum, trace and reverse pre-process circuit with operational amplifier. achieve the 12 bit voltage and current signal collection and conversion based on STM32F103 internal AD.At last the main program segment and the methods of How to get the best ADC accuracy are given. Keywords: STM32,Controller,Bidirectional,Current,Detection
1.引言
在某装备的研制过程中,为保障装备效能的正常发挥,需要实时掌握其内部集成的铅酸蓄电池组的工作状态,主要状态参数包括电池组电压和充放电电流,要求监控系统做到精度高、可靠、简单。具体参数指标是:蓄电池组标称值DC24V,充放电电流在5A以内。电压检测精度要求0.01V,电流检测精度要求0.01A,即小数点后保证两位有效数字。据此本文设计了基于STM32F103VB嵌入式控制器为核心的信号处理、采样和计算的软硬件控制系统。
STM32F103系列控制器由意法半导体公司(ST)推出,使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。该器件包含3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。STM32F103xx增强型系列工作于-40℃至+105℃
[1]的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。该设计选用STM32F103VB
处理器主要考虑其高速可靠、资源丰富、工作温度宽和供电电压宽、功耗低、性价比高的特点,尤其是其内部集成双路AD转换器,16通道,12位精度,1μs转换时间。
2.蓄电池组电压和电流采样处理过程
设计的蓄电池组工作状态实时检测系统如图1所示,功能上包括独立的两部分:电压检测和电流检测。其中电压检测实现较为简单。
基于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口程序*/
基于STM32F103控制器的蓄电池双向电流检测设计
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
……
//配置PC4和PC6为模拟量输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_6 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
……
}
/*电压电流配置、工作采样主程序*/
int main(void)
{
……
RCC_Configuration();
GPIO_Configuration();
DMA_Configuration();
……
//ADC1 configuration
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
//DC1 regular channel14 configuration
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_55Cycles5);
ADC_DMACmd(ADC1, ENABLE); //Enable ADC1 DMA
ADC_Cmd(ADC1, ENABLE); // Enable ADC1
// Enable ADC1 reset calibaration register
ADC_ResetCalibration(ADC1);
// Check the end of ADC1 reset calibration register
while(ADC_GetResetCalibrationStatus(ADC1));
// Start ADC1 calibaration
ADC_StartCalibration(ADC1);
// Check the end of ADC1 calibration
while(ADC_GetCalibrationStatus(ADC1));
// Start ADC1 Software Conversion
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(1)
{
AD_value=ADC_GetConversionValue(ADC1);
}
}
基于STM32F103控制器的蓄电池双向电流检测设计
3.3软件滤波措施
该应用中考虑电压量和电流量为变化较缓的信号,故软件采取防脉冲干扰平均滤波算法。连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值。通过实验N取值5,即可达到满意的效果。该算法能够剔除偶然出现的脉冲性干扰,消除由于脉冲干扰所引起的采样值偏差。
4.提高信号检测精度的措施
为提高ADC处理的精度和系统抗干扰能力,该设计从控制器ADC使用、电压基准和供电、滤波及元器件的选择等方面采取了系列的措施。
4.1控制器ADC使用
在STM32F103控制器的ADC使用中,考虑了两个方面,一是两个模拟量输入口临近的管脚不安排数字量IO,因为I/O脚之间的耦合电容,I/O端口的翻转可能对ADC的模拟输入产生一些噪声。可能会因为PCB走线过于靠近,或互相交叉而产生这样的串扰影响。内部数字信号和I/O脚的翻转会产生高频的噪声;二是温度会对ADC的精度产生较大的影响,主要有2项误差:偏移误差和增益误差。这些误差可以通过微控制器的固件程序补偿。一个方法是根据不同的温度范围,测量出完整的偏移和增益变化,再在存储器中建立一个对照表。这样的方式需要额外的费用和时间。另一个方式是当温度达到某个数值时,使用内部的温度传感器和ADC看门狗功能,重新校准。
4.2电压基准芯片和独立电源供电
在该设计中为保证信号的质量,重要的电平信号采用专用芯片来实现,如使用REF2912和REF2925电压基准芯片产生+1.25V和+2.5V两个电压基准源,+1.25V基准信号用于放大器累加电路,+2.5V基准信号提供给STM32F103控制器Vref+;其次,模拟电路、控制器模拟供电和数字电路供电采用独立电源,由专用DC/DC提供±15V电源,为LA-28P电流传感器及LM324运算放大器供电,STM32控制器模拟部分VDDA和数字部分VDD使用独立的+3.3V供电。最后三种独立电源于一点共地,尽可能地减少电源间的互扰。这样做的好处是避免了很多的I/O端口翻转操作在直流电源上产生的大量噪声干扰。
4.3其它抗干扰措施
另外,该设计还采取了其它的一些抗干扰措施,如在STM32F103控制器的VDDA和Vref+管脚连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电容);模拟电路中的所有电阻采用1%精度的金属膜电阻;在PCB的布置中,模拟电路部分远离数字部分,避免了在模拟电路底下通过数字信号线。
5.结语
该设计实现了充放电电流信号的累加升压、跟随反向,利用STM32F103控制器片内12位AD实现了实时监测,最终电压检测实际精度达到0.005V,电流实际精度达到0.005A,效果稳定、可靠,实现了设计目的,满足了设计要求。需进一步改进之处在于处理系统温漂问题,即温度对电路的影响。
参考文献:
[1]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社.2008.
[2]STMicroelectronics.How to get the best ADC accuracy in STM32F10xxx devices V1.0 .2008.
正在阅读:
基于STM32F103控制器的蓄电池双向电流检测设计05-20
河南理工大学博士学考试《地理信息系统》复习知识要点06-12
水泥砖购销合同标准范本04-11
航运市场03-29
国际私法随堂随练02-03
最新婚礼致辞两篇04-16
旅馆业治安管理制度08-25
重庆大学2014年光电工程学院研究生复试公示结果名单 - 图文04-13
by+v-ing结构01-02
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 蓄电池
- 双向
- 电流
- 控制器
- STM32F103
- 基于
- 检测
- 设计
- 贝聿铭与金字塔战役
- 减轻分娩恐惧心理的方法有哪些
- 北师大版高中数学(必修4)期中测试题.doc
- 第6章 许可Email营销
- 啤酒废水毕业设计
- 最全的word应用技巧让你成为word高手
- 最新部编版五年级数学下册第一次月考水平测试题及答案(三套)
- 高中地理知识大全顺口溜
- 超市管理系统数据库设计
- 体积单位间的进率(1)222
- Eastfax电子传真系统使用手册
- 最新杭州自助游全攻略
- 通达信指标公式源码自适应牛熊分界主图(有图)牛熊一目了然
- 毕业设计成绩管理系统的设计与实现
- FA317并条机导条架加装导纱杆的改造
- 数列求和教学设计
- 第十五届全国中小学生创新作文大赛初赛高中组优秀作文鉴赏
- 中国梦&183;法治梦——我们是年轻的追梦人
- 2014-2015学年度第二学期人教版四年级数学期中测试题
- 王明夫:年轻是铁,团结成钢