DIY编程器网

标题: 新型电动汽车锂电池管理系统的研究与实现----系统的总体设计(二) [打印本页]

作者: admin    时间: 2015-4-27 22:52
标题: 新型电动汽车锂电池管理系统的研究与实现----系统的总体设计(二)
3.4单总线系统简介及温度测量方法
          3.4.1概述
          美国Dallas公司近年来推出了单总线技术及相应的集成芯片,它的一系列电池管理芯片能方便地组成分布式管理系统,极大地减轻了系统布线,从而提高系统可靠性和抗干扰性,满足电动车多点测量的要求。
       
        单总线技术是只有一个总线命令者和一个或多个从器件组成的计算机应用系统,总线命令者通常是PC机或单片机,系统由硬件配置、处理次序和单总线信号三部分组成。系统按照单总线协议规定的时序和信号波形进行初始化、识别器件和进行数据交换。
       
        单总线技术可用于环境状态检测系统、实时气象检测系统(自动气象站)、仓库监控系统、楼宇监管系统、停车收费、考勤管理等。应用中主控计算机根据要求,既可以采用PC机也可以采用单片机。
       
        3.4.2硬件配置
          单总线系统定义了一根信号线,总线上的每个器件都能够在合适的时间驱动它,相当于把计算机的地址线、数据线、控制线合为一根信号线对外进行数据交换。为了区分这些芯片,厂家在生产每个芯片时,都编制了唯一的序列号,通过寻址读出序列号码,就能把芯片识别出来。这样就能使这些器件挂在一根信号线上进行码分多址、串行分时数据交换,组成一个自动测控系统或自动收费系统,甚至还可以用单总线组成一个微型局域网。
       
        厂家对每个芯片用激光刻录一个64位二进制ROM代码。从最低位开始,前8位是族码,表示产品的分类编号;接着的48位是一个唯一的序列号;最后8位是前56位的CRC校验码。CRC(Cyclic Redundancy Check)称为循环冗余码检测,是数据通信中校验数据传输是否正确的一种方法。在使用时,总线命令者读入ROM中64位二进制码后,将前56位按CRC多项式(这里是X8+X5+X4+1)计算出CRC值,然后同ROM中高8位的CRC值比较,若相同则表明数据传输正确,否则要求重传。48位序列号是一个15位的十进制编码,这么长的编码完全可为每个芯片编制一个全世界唯一的号码,也称为身份证号,可以被寻址识别出来。此外,芯片内还含有收发控制和电源存储电路,其示意图如图3.5。
           
          这些芯片采用CMOS技术,耗电量都很小(空闲时几μW,工作时几mW),故一般不用另附电源。单总线上通常处于高电位(5V左右),每个器件都能在需要时驱动它。因此,挂在总线上的每个器件必需是漏极开路或者是三态输出的,这样,不工作时不会给总线增加功耗。
           
         
         
       
        单总线的数据传输有两种模式,通常以16.3kb/s的速度通信,超速模式可达142kb/s.因此,只能用于对速度要求不高的场合,一般用于100kb/s以下速度的测控或数据交换系统中。
       
        以上内容是单总线技术协议所要求的,各种芯片都具备这些基本内容,系统首先识别器件号,确认后才进入某种具体芯片功能,如A/D转换器、温度计等。
       
        单总线同单片机的最简单接口如图3.6,
       
       
         
       
        根据单总线器件手册,单总线技术作用距离在单片机I/O直接驱动下可达200m,经扩展可达1000m以上,允许挂上百个器件,能满足一般测控系统要求。
       
        3.4.3处理时序
          处理时序是软件设计的任务。在单总线系统中,软件设计是技术的关键,简洁的硬件配置是依靠复杂的软件来支撑的。在PC机作为主控机时,单总线软件设计基于Dallas公司授权的软件开发商提供的成套开发工具,为软件开发应用带来很大的便利。而用单片机作为主控机时,得由自己依据单总线协议,用汇编语言和C语言来编写全部软件,给开发应用增加了一定难度。
       
        处理时序保证数据可靠的传送,任何时刻单总线上只能有一个控制信号或数据。每次操作时,一般有以下四个过程:
          ①初始化;
          ②传送ROM命令;
          ③传送RAM命令;
          ④数据交换。
       
        单总线上所有处理都从初始化开始。初始化时序由总线命令者发出的复位脉冲和一个或多个从器件发出的应答脉冲组成。“应答脉冲”是从器件让总线命令者知道该器件是在总线上,并已经准备好接收命令开始工作。
       
        当总线命令者检测到某器件的存在,就会发出传送ROM功能命令,它用来选择某个或一些从器件,同他们建立握手信号,以便同它进行具体功能操作。单总线协议规定其层次结构如图3.7.
           
          单总线命令者首先必须发送7个ROM功能命令中的一个命令:
           
          ①读ROM(总线上只有一个器件时,如读DS2401的序列号);
          ②匹配ROM(总线上有多个器件时,寻址某个器件);
          ③查找ROM(系统首次启动后,须识别总线上各器件);
          ④跳过ROM(总线上只有一个器件时,可跳过读ROM命令直接向器件发送命令,以节省时间);
          ⑤超速匹配ROM(超速模式下寻址某个器件);
          ⑥超速跳过ROM(超速模式下跳过读ROM命令);
          ⑦条件查找ROM(只查找输入电压超过设置的报警门限值的某个器件);这些操作在手册中都有具体的命令码供编程使用。
       
        成功执行上述命令之一后,总线命令者可发送任何一个可使用的命令来访问存储部分和实现控制功能,进行数据交换。所有数据的读写都是从最低位开始的。
         
       
       
       
       
        3.4.4单总线信号
          单总线传送数据或命令是由一系列的时序信号组成的,单总线上共有4种时序信号:1.初始化信号;2.写0信号;3.写1信号;4.读信号。
       
        各器件的应用手册中对这4种波形参数(如脉冲上升时间、宽度和间隙等)都作了具体的要求,设计中应保证指令执行时间小于或等于时序信号中的最小时间。这里应该严格遵循时序关系,并注意当单片机工作频率不同时,单片机的延时值是不同的。图3.8给出了常规模式下这4种波形的示意图。
       
        3.4.5单总线器件
          单总线系统中配置的各种器件是由Dallas等公司提供的专用芯片来实现的。这里简单介绍我们使用的芯片。
       
        1.数值温度计DS18B20
          该温度计采用了与众不同的原理,它利用温敏振荡器的频率随温度变化的关系,通过对振荡周期的计数来实现温度测量的。为了扩大测温范围和提高分辨率,使用了一个低温系数振荡器和一个高温系数振荡器分别进行计数,并采用了非线性累加器等电路来改善线性,故DS18B20具有下列良好的特性,而且价格低廉。
         
         
       
        ①温度测量范围:-55~+125℃;
          ②分辨率:±0.5℃(-10~+85℃时);
          ③温度值输出:9~12位可选择的二进制数值量;
          ④转换时间:750ms(最大值);
          ⑤用户可设置报警温度的上下限;
          ⑥不需外围电路,电源可由单总线提供;
           
          2. A/D转换器
          在单总线上直接挂上A/D转换器,会使系统的检测功能大大增强。各种物理量只要通过传感器变为电压量,就可由A/D采集后经单总线送到计算机进行处理。Dallas公司推出的DS2450就是这样的A/D转换器,其主要特性为:
           
          ①4路模拟输入通道,两种模拟输入量程0~2.56V和0~5.12V;
          ②未用做输入的通道可作为输出通道使用;
          ③逐次逼近的变换原理,可选择的8位转换精度;
          ④响应模拟电压超门限报警设置;
        3.4.6系统中用到的温度测试方法
          CPU的I/O口连接单总线器件,并通过一个上拉电阻连到+5V.需要注意的是单总线器件的布局应该是尽量简单,并保证匹配电阻出现在单总线拓扑结构的两端。系统连接图如图3.9:
       
       
         
       
        3.5总电流、总电压测量
       
       
       
        在以前系统中,总电流、总电压测量电路如图3.10,充电时电流传感器在采样电阻R1上的电压为“+”,经过运放后,AD0为“-”,AD1为“+”;放电时电流传感器在采样电阻R1上的电压为“-”,AD0为“+”,AD1为“-”。电压传感器在采样电阻R6上的压降AD2和AD0、AD1同时送往80C552的A/D口进行A/D转换,再经过标度变换即可测得总电路、总电压。程序中,通过AD0和AD1的值,就可判断出电池是处于充电状态还是放电状态。
       
        80C552的A/D转换是10位的,这对于电池的功率强度估计略显不够,并且需要调整A1、A2运放的工作点。在BMS-Ⅲ系统中,总电流、总电压测量采用16位A/D转换芯片AD976,下面是AD976的主要特性:
           

         
        由于AD976的输入电压范围是±10V,总电流的测量不需要运放进行正负电压转换,从而免去了调整运放工作点问题,另外,AD976提供内部参考电压,这给系统调试也带来方便,下图3.11是AD976测量总电压、电流框图:
         
       
       
         
       
        3.6显示系统
          在系统中,显示采用精电蓬远公司生产的320×240点阵的液晶显示模块DMF-50174,液晶控制器是SED1335.DMF-50174分为两个区,第一区对应ASCII字符显示方式,即一个字符对应一个8×8的点阵,故整个第一区需要(320×240)/64=1200个字节,而第二区对应点阵显示方式,在第二区中,一个字节对应8点阵,故第二区需要(320×240)/8=9600个字节,液晶屏的点阵是和显示RAM一一对应的,DMF-50174一共需要10800个字节的显示RAM.
          液晶控制器SED1335由振荡器、功能逻辑电路、显示管理电路、字符库及其管理电路以及产生驱动时序的时序发生器组成,振荡器工作频率可在1M~10MHz范围内选择。SED1335能在很高的工作频率下迅速地解译MPU发来地指令代码,将参数置入相应的寄存器内,并触发相应的逻辑功能电路运行。控制部可以管理64K显示RAM ,管理内藏的字符发生器及外扩的字符发生器。
       
        SED1335将64K显示RAM可分为以下几种显示特区:
          1.文本显示特性
          具有此特性的显示RAM区专用于文本方式显示,在该显示RAM区中每个字节的数据都认为是字符代码。SED1335将使用该字符代码确定字符库中字符首地址,然后将相应的字模数据传送到液晶显示模块上。在液晶上出现该字符的8×8点阵块。也就是文本显示RAM的一个字节对应显示屏上的8×8点阵。
       
        2.图形显示方式
          具有此特性的显示RAM区专用于图形方式显示。在该显示RAM区中每个字节的数据直接被送到液晶显示模块上,每个位的电平状态决定显示屏上一个点显示状态,“1”为显示,“0”为不显示。所以图形显示RAM的一个字节对应显示屏上的8×1点阵。
         
       
       
         
       
        SED1335中专有一组寄存器来管理这两种特性的显示区,SED1335可以单独显示一个显示区,也可把两个特性的显示区通过某种逻辑关系合成显示,这些显示方式及特性的设置都是通过软件指令设置实现的。
       
        SED1335有13条指令,多数指令带有参数,一共分为下面四类指令:系统控制指令、显示操作指令、绘制操作指令及存储操作指令。图3.12是80C552和SED1335的接口电路:
           
          在显示程序上,BMS-Ⅲ设计了以下几个子程序供其他程序调用,所有的显示画面都是通过调用它们完成的。
         
       
        initlcdreg1()初始化液晶显示区1;
          initlcdreg2()初始化液晶显示区2;
          dispascii(BYTE x,BYTE y,BYTE c)在第一区的(x,y)处显示ASCII值为c的字符;
          dispstr(BYTE x,BYTE y,BYTE len,BYTE *str)在第一区的(x,y)开始处显示长度为len的ASCII字符串;
          disphz(WORD x,WORD y,WORD c)在第二区的(x,y)处显示16×16点阵的汉字;
          disphzstr(WORD x,WORD y,BYTE len,BYTE *str)在第二区的(x,y)开始处显示长度为len的汉字串;
          disphz8_16(WORD x,WORD y,WORD c)在第二区的(x,y)处显示8×16点阵的字符;
          dispbitmap(BYTE x,BYTE y,BYTE lenth,BYTE height,BYTE *str)在第二区的(x,y)处显示长度为lenth、高度为height的位图。
       
        以上16×16点阵汉字是在ucdos下通过一种汉字提取程序得到的字模代码,由于单片机的内存有限,我只是把需要显示的汉字提取出来,放到一个双下标数组中,需要显示某一汉字时,只需调用该汉字的下标序号即可。
       
        8×16点阵字符及其它位图则是通过去掉*.bmp位图文件的文件头而得到的。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2