您当前的位置:五五电子网电子知识电子知识资料传感-检测-采集技术基于串连式可充电电池组的电源监测技术研究与实现 正文
基于串连式可充电电池组的电源监测技术研究与实现

基于串连式可充电电池组的电源监测技术研究与实现

点击数:7586 次   录入时间:03-04 11:55:44   整理:http://www.55dianzi.com   传感-检测-采集技术

  根据嵌入式系统内置电源维护方式简化、降低制造和使用成本的具体要求,详细介绍了基于串连式可充电电池组的电源监测技术。在完成监测系统原理分析及电路设计的基础上,进行了具体的电路搭制、调试和Linux环境下驱动程序编写,并结合相应的显示需求而进一步实现了Qt/Embedded应用程序编写和植入Qtopia的方法。实现了手持式嵌人式系统中的电源的精确可视化监测。

  随着数字信息技术和网络技术的高速发展,各种嵌人式系统已成为了市场的新焦点。鉴于嵌入式系统是对功能、可靠性、成本、体积和功耗等有严格要求的专用计算机系统,因此降低其系统功耗、提高内置电源持续工作的能力就成为一项重要的研究内容。

  与笔记本电脑类似,嵌入式系统通常配备一个由多只电池串联组成的整体式电池包 .当经过反复充电使用而其主要参数不再满足整个系统要求时,必须更换整个电池包。一般说来,由于电池包内部各个电池之间的电气参数略有差异,很难使得每个单体都得到平衡、充分的放电,进而导致在电池组充电的过程中,电压过高的电池芯可能提早触发电池组过充电保护,而在放电过程中电压过低的电池芯又可能首先导致电池组的过放电保护,从而使电池组的整体容量明显下降,使得整个电池组的实际容量常为电池组中性能最差的电池所限。

  针对上述问题,目前常用两种解决方法:

  ①研究或选用新型电池,尽量减小个体差异并从整体上提高电池的额定容量,例如由最初的镍镉、镍氢电池发展到现在主流的锂电池;②提高电池芯的利用率,即利用监测技术探察每个电池芯的工作状况。若有部分电池芯过早地放电结束或者出现问题时,能够自动检测并予以提示,此时只需进行个别更换即可同样保证系统正常工作。

  对于普通用户而言,难以直接涉足前者所属的相关领域,而后者所述方式能够较为方便、容易地得到实现。由此一来,可望较好地解决前述问题,同时避免了电池组整体更换时其中的正常电池也连带报废的现象,进而提高电池利用率。此外,尚可解决专用电池成本较高、购买不易的问题,以便有效降低系统的维护成本。

  1 监测系统工作原理与电路设计

  结合一个具体的手持/嵌入式超级终端系统,文中对其内置电源的监测模式进行了较为详尽的研究。

  因其使用通用的五号可充电电池,所以可按第二方法考虑解决电池的使用和更换问题,进而基于LinuX操作系统较好地实现了相应的"电池管理与更换提示"功能。

  1.1 监测系统工作原理

  本系统采用12节额定电压为1.2V的镍氢电池串联供电,并通过专门设定的12个监测点逐一监测。

  监测点上的模拟电压值通过多路开关和辅助电路输入ARM芯片S3C2410x自带的AD转换器,再经Linux(驱动程序和GPIO端读取相应监测点的电压值,传递给数据处理和图形显示等应用程序,从而实现了电源的监测。具体方法如图1所示。

图1 电源监测系统电路图

图1 电源监测系统电路图

  1.2 AD转换与辅助电路

  监测系统利用S3C2410x自带的AD转换器将模拟电压输入转换为应用程序所需要的数据。芯片自带AD转换器为8路模拟输入、10bit数字输出,最大转换率为500ksps,转换时钟为2.5MHz,模拟输入范围为0-3.3V.本系统所需要监测的电压范围为0~14。

  4V,针对这种情况,本系统设汁了分压电路,在应用程序中只需要利用比例公式就能计算出各个监测点的实际电压值。并且,考虑到监测精确度和电路功耗的因素,把分压电路的总电阻定为4.5kQ.这样一来,对应的模拟输人电压值范围为0.26-3.2V,以便充分利用的AD转换器的输入带宽。此时电路的耗损功率仅为0.04608W。

  1.3 控制电路

  利用S3C2410x的GPIO端口控制选通多路门开关电路,监测系统可以随机地提取不同监测点的电压值。选通逻辑通过译码实现,如表1所示。

表1 选通逻辑

表1 选通逻辑



www.55dianzi.com

  2 电源监测系统驱动程序设计

  鉴于文中所述的超级终端系在Linux环境下运行,各个检测环节的驱动程序和相关的实施策略、编写方法亦多有特点,现详细描述如下。

  2.1 Linux驱动程序工作原理

  在Linux内核中,设备驱动程序是作为文件系统的一个模块存在的,它对下负责与硬件设备的交互,对上通过一个通用的接口挂接到文件系统上,从而和系统的内核等联系起来。它是软件概念和硬件设备间的一个抽象层。系统调用是内核和应用程序之间的接口,而设备驱动程序则是内核和外设之间的接口。

  设备驱动程序为应用程序屏蔽了外设硬件的细节,从应用程序角度来看,对于外设的操作方法与普通文件一样。设备驱动程序与系统外设关系如图2所示。

图2 Linux驱动程序与系统外设关系图

图2 Linux驱动程序与系统外设关系图

  2.2 字符设备

  字符设备是Linux系统中最简单的设备,可以像文件一样访问。当字符设备初始化的时候,其驱动程序向Linux核心登记,在chrdevs向量表中增加一个devICe_STruct数据结构条目。这个设备的主设备标识符用作这个向量表的索引。一个设备的主设备标识符是固定的。chrdevs向量表中的device_struct数据结构包括一个登记设备驱动程序名称的指针和一个指向一组文件操作的指针。这组文件操作本身位于这个设备的字符设备驱动程序中,并处理一些特定任务。本电池监测系统在Linux下的驱动程序就把外设视为字符设备,在驱动程序里实现了打开、读、写和关闭等操作。

  2.3 电池监测驱动实现策略

  系统内部,I/O设备的存取使通过一组固定的入口点来进行的。这组入口点由特定设备的设备驱动程序提供,在数据结构file_operatiONs()中定义。该程序定义了一个数据结构为file_operations()的变量adc_fops。

  

  2.3.1 adc_open函数

  此函数打开并初始化设备以待I/O操作。adc_open()子程序必须对其做好必要的准备,如果设备是独占的,adc_open()子程序必须设置一些标志以表示设备处于忙状态。



www.55dianzi.com

  2.3.2 adc_read函数

  对AD转换器设备文件进行读操作时调用adc_read()子程序。电池监测系统要求实时读取外设监测点的电压值。因此,在adc_read()函数中实时触发AD转换器开始工作,并且利用程序轮询方式读取转换后的数据。adc_read()函数内容如下:

  

  2.3.3 adc_iocd函数

  控制外围的辅助电路时调用adc_iocd()函数。对照监测点逻辑控制表,从S3C2410x的GPIO端口发出选择指令,接着就可以进行读操作以读取相应的数值。在不需要监测时,控制监测系统进入省电模式。

  

  2.3.4 adc_close()函数

  adc_close()函数用来关闭外设。当监测结束时,应用程序会调用此函数关闭设备文件。同adc_open()函数一样,也可以为NULL.

  3 设计Qt/Embedded应用程序和植入Qtopia的方法

  QT/Embedded为嵌入式Linux提供了一种友好交互接口,是完整的自包含C++GUI和基于LinuX的嵌人式平台开发工具 ,专为高端嵌入式图形领域应用而设并得以普及。鉴于文中所使用的系统需要按照手动点击检查和欠压自动报警的方式工作,所以,必须遵循相应的规则和方法,进行高效、美观的图形界面设计。

  3.1 编写Qt/Embedded应用程序

  在宿主机上编译Qt for Xll时生成的Qt Designer软件是一个非常流行的快速应用程序开发工具,用来设计界面和编制代码。在Qt Designer中,可以通过拖拉或点击的方式,在一张空白表单的适当位置上添加一些输入框和按钮等窗口组件。这时Designer工具会自动编写和维护代码。

  使用Qt Designer进行C++程序编制的基本步骤是:首先建立窗体,并根据应用的需要在窗体中添加控件。Qt会将建立的窗体保存为。ui文件,使用Qt提供的uIC工具将文件转换为。h和。cpp文件,对于控制动作是需要手动添加不同的操作函数。之后使用progen工具为该应用程序建立。pro工程文件,并通过tmake工具为该工程建立Makefile文件。最后,只需要运行make即可生成可执行文件。

[1] [2]  下一页


本文关键字:技术  电源  传感-检测-采集技术电子知识资料 - 传感-检测-采集技术

《基于串连式可充电电池组的电源监测技术研究与实现》相关文章>>>