咨询电话
ENGLISH0755-86329511发布时间:2020-11-03 11:27:44 |来源:网络转载
0引言
在以工控机控制的饲料生产中,计算机通过RS-232与称重显示器传送数据,读入当前称重值.进而控制输出原料仓门的开启与关闭来完成配料过程。原先使用的称重显示器为其他J商的产品,成熟稳定,功能多样,但价格十分昂贵。现在以AT89C52构成单片机系统,完成配料系统所需的功能:
①有校秤功能,可以设置增益因子;
②可设置显示与通信的参数;
③通过串口接收计算机指令;也可显示毛重皮重两种状态;
⑤可保留所设置的参数,以便下次开机时使用。
1硬件组成
仪表硬件组成如图1所示
系统主要由信号放大与模数转换、看门狗与参数存储、串口通信、键盘与显示等4个模块构成:
1.1信号放大与模数转换
信号放大电路使用运算放大芯片7650,将称量传感器的4~20mA信号放大成ADC芯片所需的量程,在本系统中放大100倍。
模数转换芯片使用Crystal的CS5524,该芯片为四路24位形式,片内包括1个检测放大器,1个可编程增益放大器,1个多路转换器,数字滤波器,以及自校准和系统校准电路匚该芯片设计为可自身提供负电源。工作在32kHz晶振的情况下,数字滤波器可提供1.88Hz,3.76Hz,7.51Hz,15Hz,30Hz.61,6Hz,84.5Hz和101.1Hz的输出刷新频率。对于选定的输出速率.数字滤波器可以在一个转换周期内达到完全的精确度。工作在15Hz或以下时,数字滤波器可以同时抑50Hz/60Hz(±3Hz)的线性干扰。本系统采用单路差分输入。
系统中,只用其中的一路输入,编程设定模数转换芯片为0~2.5V量程,单极性电压,7.51Hz的输出刷新率。由于输出给传感器的激励电压本身不稳定和工业现场所带来的干扰,使得24位测量值中后8位不稳,所以实际系统中采用前16位,转换成十进制数为65536,采用一位小数显示,则最大能称重6500多kg,符合各厂家的要求。另外在CS5524布板过程中,要注意模拟电源应比数字电源先供电,才能保证芯片的正常启动。
1.2看门狗与参数存储
看门狗与参数存储采用Xicor公司X25O45,其中包括三部分:看门狗定时器、电压监控和EEPROMc这种三个功能封装在一起的组合降低了系统的成本并减少了对电路板空间的要求,同时只占用单片机5位1/0资源。
看门狗定时器对系统提供了独立的保护系统,配合软件上的设置可以防止程序走飞;X25045低*检测电路,可以保护系统使之免受低电压状态的影响.当*降到最小转换点(4.5V)以下时,系统复位.复位一直保持到*返回旦稳定为止;EEPROM提供了4096位空间,内部按512x8来组织,本系统利用它来存储与显示和通信有关的参数以及校称后确定的增益因子。
采用X25045之后,不仅提高了系统的抗干扰性.同时可以保存用户设置的参数,免除了用户每一次上电都需设置参数的麻烦。
1.3串口通信
采用MAX232专用集成芯片,电路简单。单片机通过串口与1台工控机相连,实时接收从工控机中传来的数据,完成相应功能,其中包括向工控机发送称量数据和设置毛重值。
1.4键盘与显示
为节省单片机I/O,数码显示采用串行方式,使用MAX7219这是一块高集成、串行输入的共阴极显示驱动器,它有8位LED数字7段码接口,3线串行接口与AT89C52相连,本系统使用其中的6位,5位BCD编码显示称重结果,另有1位独立位寻址用来显示状态,分别指示毛重、净重、动态和零位四种状态。
键盘方面用4个键完成各种功能,包括切换净重、毛重状态、设置各种参数和校秤。由于键盘数目的关系,有些功能只能用组合键来完成,同时考虑到操作人员可能的误操作,类似于校秤之类的功能也需要用组合键来完成。同时,利用单片机I/O中的一位设置跳线,在软件中进行判断,使能或禁止键盘操作,从根本上杜绝了误操作的可能。
2软件编程
软件简要流程如图2所示。软件设计中必须有与各个硬件模块进行数据交互的底层函数,从而完成外围芯片的各种功能。由于MAX232只是进行电平转换的芯片,所以它不需要底层函数的支持。而AD,e2prom,显示芯片都有相应的底层函数。在主程序的设计中,先进行系统初始化,其中包括对单片机本身的设置,如堆栈指针,定时器,串行口和中断优先级;另外通过底层函数初始化外围芯片,从e2prom中读入保存的数据。
图2软件简要流程图
初始化之后,使能三个中断:
①AD中断,通过5524的SDO接入89C52的INT。脚,由于在5524每次A/D转换之后,SDO都会变为低电平,这样可以在INT。的中断处理程序中读入转换的值。
②串行口中断,负责接收和发送数据。
③定时器中断,负责读入输入和输岀显示的刷新,在具体实现中采用了基于有限状态机的方法,状态机入口代码示意如下:
MOVA,SYS_STATOS;SYS_STATUS存放现在系统所处的状态
RLA
ADDA,SYS_STATOS;因为LIMP编码占3个字节,所以SYS_STATUS*3->A
MOVDFTR,#STATUSENTRY
JMP@A+DPTR
STATUSENTRY:LJMPSTATUSOO
LJMPSTATUS01
LJMPSTATUS02
一般系统处于显示净重状态(01),但是如果有键按下将使得系统状态发生改变,进入显示毛重状态(00),或参数设置状态(02及以后)。所以在各状态的处理程序中,有两项任务:第一,刷新输岀,根据现在的状态,输岀相应的显示;第二,处理输入,对于引起状态改变的按键,将SYS_STATUS的值相应改变,使得下次定时中断发生时,能进入新的状态处理程序。
软件中几点要注意的问题;
①在串口传输称量结果时按一定格式要传送18个字节,其中包括以ASCH码表示的6位称量结果(5位数字,1位小数点)。由于89C52的串口只有一个字节大小的缓冲区,所以需要经过18次的发送中断服务程序才能将一次称量结果发送岀去,在这期间新的A/D转换的值已经读人。但往串口缓冲区送的时候应该注意,如果完整的18个字节的传送已经结束,则允许传送,否则不能改变还在传送过程中的缓冲区的值,无论是校秤过程中的确定增益还是釆集A/D后的乘以增益因子都需要用到多字节的乘除法,在本系统中统一用四字节除以二字节的除法来加以完成。设读入的原始变化值为a=ABCD(双字节)h,校秤中对应用户的变化值为b=EFGH(双字节)h由用户通过面板输入,增益因子由下式得岀
c=a*1000h/d=AB CDOOOh/EF GHh
对于校秤之后任意读入的数值d,用户所需的数据也可以通过d*lOOOH/c得岀。显然,由于这一类似于定点数的运算,必将引入一定的误差,每一次校秤时所引入的误差最大为E/ABCD,取分子分母同为最大估算得岀:15/65535=0.024%。这一引人的误差在系统误差的许可范围之内。
3结束语
该称重显示器取代原先使用的称量仪表,结合计算机端配料控制系统,已在多个饲料生产厂运行达二年多,达到了在稳定运行的基础上降低系统成本的效果。
文章来源于网络转载,侵删