摘要:介绍了基于at89c52控制的电池四参数检测系统,详细给出了系统的软硬件结构设计,给出了a/d转换器max197、显示驱动芯片max7219在此系统中的应用方法,及数据处理中使用的数字滤波算法。
关键词:at89c52;自动检测;电池;数字滤波
目前,在对普通干电池的出厂检测中,厂家主要是对电池的开路电压、负载电压、短路电流进行质量检测。而电池容量的检测,由于具有毁灭性的损害,没有专门的检测设备,仅仅采用抽样的方法来检测。根据电池特性,其重量参数可以指示其容量参数。故而我们设计开发了基于at89c52单片机控制的机电一体化智能设备电池四参数自动检测仪,检测电池的4个基本参数:开路电压、负载电压、短路电流和电池重量,并同时作到电池正、次品的分选统计功能。
1系统硬件结构设计
如图1所示,本系统以at89c52单片机为核心组成一个具备数据采集、对象控制、结果显示、报警装置、键盘操作等多项功能的复杂完整系统。
530)this.width=530" border=0>
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~5v;使用通道0。改变控制字的最后3位(000~111)可以依次选取max197的第0~7通道。max197通过片内的三态并行接口与at89c52进行接口。由于max197本身的转换时间较短,且为固定值,故而在设计时采用了固定延时的方式代替中断方式,进行转换结果的读取,提高了数据的通过率和程序的效率。图2给出了max197与at89c52的接口电路。
530)this.width=530" border=0>
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数码管。
530)this.width=530" border=0>
1.4对象控制部分
本系统控制的对象有步进电机、电磁阀、机械测量推杆、电子开关等。开机自检后,由步进电机带动传送带把电池运到检测位置处,单片机控制测量推杆夹紧电池进行测量,所得数据经处理后与所设定标准值比较,若满足设定,视为合格产品,由传送带带走;若不满足,则视为次品,由单片机控制电磁阀打开压缩空气,吹走次品电池,达到分检目的。而当电池为次品或无电池及电池正、负极反置时,蜂鸣器发出报警信号。此系统采用气动电磁阀,提高了工作速度和设备的使用寿命。
本系统软件部分采用mcs—51系列汇编语言设计,采用模块化程序结构,由主程序模块、键盘服务模块、数据采集模块、数据处理模块、输出控制模块和显示模块等几大模块组成。主程序模块简洁明了,核心部分为读键、键解释,进而转向完成不同功能的相应各功能子程序。这样设计使得程序总体结构紧凑、简洁、易懂,且易于设计、调试、维护和移植。
2.1监控程序
由于本系统的子程序调用条件是多因素的,不仅与外部键盘操作、电信号等有关,也与系统的当前所处的状态有关,故而在监控程序中引用状态分析的方法,采用了一键多义的编写方式。分析系统工作时所有可能所处的状态,设定一键多











