基于AT89C52的电池四参数自动检测系统设计
目前,在对普通干电池的出厂检测中,厂家主要是对电池的开路电压、负载电压、短路电流进行质量检测。而电池容量的检测,由于具有毁灭性的损害,没有专门的检测设备,仅仅采用抽样的方法来检测。根据电池特性,其重量参数可以指示其容量参数。故而我们设计开发了基于AT89C52单片机控制的机电一体化智能设备电池四参数自动检测仪,检测电池的4个基本参数:开路电压、负载电压、短路电流和电池重量,并同时作到电池正、次品的分选统计功能。
1系统硬件结构设计
如图1所示,本系统以AT89C52单片机为核心组成一个具备数据采集、对象控制、结果显示、报警装置、键盘操作等多项功能的复杂完整系统。
1.1微处理器
本系统采用Atmel公司生产的AT89C52芯片作为微处理器。AT89C52与MCS-51系列单片机完全兼容,他采用静态时钟方式,可以大大节省耗电量。其内部含有Flash存储器,在系统开发时可以十分容易地进行程序修改,即使错误编程也不会成为废品。而且在系统工作中,即使突然掉电也能有效地保存一些数据信息。
1.2数据采集部分
数据采集和A/D转换由MAX197完成。MAX197是MAXIM公司出品的高性能12位A/D转换器,8通道模拟信号输入,可以满足使用1片A/D分时进行多参数测量的要求。MAX197的其中2路通道为电池重量信号的输入,由压力传感器获取原始信号经运算放大后输入。其余6路分别为电池相关电压、电流各参数信号的输入。MAX197片选信号/CS接AT89C52的P2.7,读写控制信号分别接AT89C52的/WR和/RD。引脚HBEN为12位转换结果选择端,由P1.6控制。当HBEN为高电平,读取转换结果的高4位;当HBEN低电平时读取低8位。设定MAX197的控制字为01000000B,则其工作方式为正常工作方式/内部时钟;内部获取方式;模拟量输入范围为0~5 V;使用通道0。改变控制字的最后3位(000~111)可以依次选取MAX197的第0~7通道。MAX197通过片内的三态并行接口与AT89C52进行接口。由于MAX197本身的转换时间较短,且为固定值,故而在设计时采用了固定延时的方式代替中断方式,进行转换结果的读取,提高了数据的通过率和程序的效率。图2给出了MAX197与AT89C52的接口电路。
1.3基本I/O部分
电池四参数的标准值由拨码开关设定,开机直接进行显示,直观明了;且可以方便的改变设定值,以满足不同档次电池的测量要求。显示部分采用MAX7219来驱动LED数码管。MAX7219为MAXIM公司出品的串行输入输出、共阴极、8位数字LED显示驱动器。只须一个外部电阻就可以为所有的LED段电流进行设置,简化了电路设计,提高了系统的可靠性。其与AT89C52的接口通过一个方便的三线串行接口完成,各个数字均可被寻址和更新,而不需要重写整个显示器。
AT89C52的P3.0接MAX7219的串行数据输入端DIN,在CLK的上升沿,串行数据从DIN装入到内部16位移位寄存器中。在CLK下降沿的DOUT端数据有效。本系统采用3片MAX7219进行级联,来驱动24个LED数码管,分别显示电池的4个参数值及各分档测量值的统计结果。图3为3片MAX7219级联驱动24个LED数码管。
1.4对象控制部分
本系统控制的对象有步进电机、电磁阀、机械测量推杆、电子开关等。开机自检后,由步进电机带动传送带把电池运到检测位置处,单片机控制测量推杆夹紧电池进行测量,所得数据经处理后与所设定标准值比较,若满足设定,视为合格产品,由传送带带走;若不满足,则视为次品,由单片机控制电磁阀打开压缩空气,吹走次品电池,达到分检目的。而当电池为次品或无电池及电池正、负极反置时,蜂鸣器发出报警信号。此系统采用气动电磁阀,提高了工作速度和设备的使用寿命。
本系统软件部分采用MCS-51系列汇编语言设计,采用模块化程序结构,由主程序模块、键盘服务模块、数据采集模块、数据处理模块、输出控制模块和显示模块等几大模块组成。主程序模块简洁明了,核心部分为读键、键解释,进而转向完成不同功能的相应各功能子程序。这样设计使得程序总体结构紧凑、简洁、易懂,且易于设计、调试、维护和移植。
2 软件设计
2.1监控程序
由于本系统的子程序调用条件是多因素的,不仅与外部键盘操作、电信号等有关,也与系统的当前所处的状态有关,故而在监控程序中引用状态分析的方法,采用了一键多义的编写方式。分析系统工作时所有可能所处的状态,设定一键多义,在不同的状态下,键解释的结果不同,故而转向不同的子程序。本系统设定了5个功能键和1个逻辑键,其中显示键为多义键,不同状态下分别显示设定四标准参数、测量所得正次品电池数、电池各分档统计数等。逻辑键为软件键,定义为30