基于AT89C51的饲料清洗系统的设计与实现
2018-08-21王伯槐康亚明
王伯槐, 康亚明
(榆林学院 信息工程学院,榆林 719000)
0 引言
根茎类饲料在家畜饲养上有重要意义。根茎类饲料的特点是质地柔软、水分和可溶性碳水化合物含量高、易于消化、含有多种维生素、适口性好,是白绒山羊幼羊、种羊、母羊冬季的重要营养补充饲料原料。目前,陕北地区喂白绒山羊的块根、块茎饲料主要有饲用甜菜、萝卜、胡罗卜、马铃薯等。传统块根、块茎饲料的清洗全靠人工完成,费时费工,效率低下,针对该情况,设计基于AT89c51的单片机控制的饲料清洗系统取代人工工作。
1 总体设计
系统由硬件系统和软件系统构成。硬件系统主要由单片机及其显示电路、告警电路、检测电路、直流电机控制电路等组成。正常工作时,单片机循环检测电路输出信号,依据此信息产生电机控制信号,电动机带动清洗机运行,当系统检测到控制方式发生改变时,系统进入相应控制模式。其原理框图如图1所示。
2 硬件电路设计
智能饲料清洗机硬件主要部分有:单片机控制模块、显示模块、键盘输入控制模块、指示灯模块、控制执行模块、温度传感器采集模块、加热模块。构成以单片机控制模块为核心,其它以数据采集和输入控制为辅,组成的一套清洗过程的管理系统。清洗机的电源包含220V交流电路,AT89C51和蜂鸣器工作用的低压直流电路及高、低压共路的电路。
图1 饲料清洗系统组成框图
2.1 AT89C51芯片介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。AT89C51与MCS-51指令集和输出管脚相兼容。它将多功能8位CPU和闪烁存储器组合在芯片中,AT89C51是一种高效且价廉微控制器。芯片管脚路如图2所示。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
图2 AT89C51管脚定义图(VCC:供电电压;GND:接地)
P1、P2口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
2.2 直流电源电路
电气控制系统一般需两种直流电源:+5 V和+12 V,其中+5 V作为IC、LED显示路、三极管放大器驱动双向可控硅的直流电源;+12 V直流电压供给蜂鸣电路及继电器。
控制器中的电源主要向继电器、可控硅、LED灯、以及蜂鸣器等供电,负载电流较大,为有效抑制滤波后的电源的纹波,我们在稳压片7805的输入和输出端各加一个电解电容。另外,为提高整个电源部分的抗干扰能力,一般在7805的输入和输出端各加一个高频电容,以吸收外来的各种高频干扰信号。如图3所示。
图3 直流电源
2.3 过零检测电路
由分压电阻及脉冲信号电路组成,将交流电过零点所产生的同步信号输入给AT89C51,以作为双向可控硅过零触发的同步触发信号。如图4所示。
图4 可控硅过零检测电路和负载驱动
2.4 显示电路和报警电路
显示电路由LED、LCD组成,由IC输出端巡回输出显示信号,使显示电路发光二极管(或LED、LCD)交替发光显示,以显示清洗机的运转状态。
对于LED必须采用直流电压驱动,LED是电阻性负载,动态响应快。工作电压为1.5-5 V。
三极管、电阻和陶瓷蜂鸣片等构成报警电路,当有信号给蜂鸣片使之发声,表示按键按动有效,程序执行终了以及异常运转状态等。
2.5 负载驱动电路
以双向可控硅为电源开关的电路,原理图如图5所示。
图5 负载仿真电路图
按钮选择开关发出操作指令给AT89C51,AT89C51根据指令按预定的程序向各个双向可控硅控制极输出控制信号,使各双向可控硅按程序导通,电机等按程序运转,清洗机按程序工作。与各个触发电路上可相连反向驱动放大芯片,用于控制可控硅导通和截止。与双向可控硅驱动电路并联的压敏电阻,是用以吸收瞬间高压,保护双向可控硅的安全。在保护回路是一个并接在双向可控硅阳极之间的RC网络。
在清洗机控制器的设计过程中,为提高抗干扰能力,一般在可控硅的门极要加上一个104的电容,在做PCB板时应尽量将该电容靠近可控硅的门极,否则将减少其效果。
可控硅的驱动电源尽量采用+5 V电源来驱动,该方式可避免因网络电压的波动影响可控硅的驱动。另外,在计算可控硅的门极电流时,将其电流值靠近该可控硅的最大门极电流,这样可避免在低温条件下可控硅的导通情况。
2.6 电动机的控制电路
电动机控制部分原理图如图5所示。电动机有两个控制端, 一端控制正向运转, 另一端控制反向运转。系统供电时,交流220 V电压经过双向可控硅加在电动机的两个控制端, 可控硅的控制端由单片机的P3.0、P3.1控制,调节P3.0、P3.1的高低电平输出,电机正反向旋转。在整个清洗过程中,程序会不断判断清洗机的强、弱洗模式, 从而不断调整电机转动方向。
3 软件设计
清洗机为了减少用户的操作,用户对智能清洗机的操作,基本除了启动和紧急停止以外,很少有其他操作,为了满足设计需要,系统中增加了设置时间和设置温度操作。
系统开发语言以C语言为核心,使用软件KEIL和PROTEUS结合开发仿真。主流程图可细分为进水,加热,清洗,排水,脱水,警告6个子程序。其主程序流程图如图6所示。
图6 主程序流程图
当用按下启动按钮时,所有硬件初始化,初始化完成后,“主控权”交给了单片机,从这时开始,各个硬件的打开关闭都由核心控制器单片机控制完成,各个硬件之间的交互与控制。而真正的要达到洗涤的效果。
在各子程序中,是按下启动按扭的辅助继电器;进水程序是判断清洗机水位是否和设定水位不一致的辅助继电器;加热程序是判断清洗机水位是否和到达设定温度;清洗程序开始清洗过程,在以上程序中出现任何错误或警告时,则强制结束清洗过程,以保证清洗机正常工作。
3.1 进料控制算法与进水程序
为提高配料精度和设备的自动化水平,采用电磁振动给料机。工作时,振动给料机按控制定量,将贮料器中的物料送给流量计,流量计将实际给料量检测出来,测量关键的是被控变量的实际值,与期望值相比较,用这个偏差来纠正系统的响应。反馈给控制系统,反馈理论的要素包括3个部分:测量、比较和执行。调节给料机,使给料量达到系统设定值。PID控制器由比例单元P、积分单元I和微分单元D组成,如图7所示。
图7 PID控制原理图
在连续控制系统中,PID控制器的输出u(t)与输入e(t)之间成比例、积分、微分的关系,即式(1)。
(1)
写成传递函数的形式如式(2)。
(2)
在正常情况下,按下启动按钮或者脱水完毕,而且清洗大循环未到2次时,开始进水,当水位到设定水位后停止进水,等待2分后进入加热过程。为了不出现死循环,程序作了时间检测。加水一定时间没有加满时,强制结束清洗过程。如果人为想强制停止情况下,可按下停止按钮按下时立即停止进水,如图8所示。
图8 进水程序流程图
3.2 加热、洗涤程序
加热程序非常简单,只是做一个简单的判断,判断清洗过程是否选择了加热,如果选择了加热就循环判断温度时候达到清洗设定的上限,如果没有达到上限就发送加热指令,否则发送停止加热指令;如果没有选择加热,就直接跳过加热程序判段,直接进入清洗子程序。
加热完成后,等待J秒后(J在系统中设置),先发送顺时针旋转指令,旋转N分钟后(N在系统中设置),检测是否到达设定的清洗时间,在判断没有到达之后,发送逆时针旋转指令,这样就产生了顺时针旋转和逆时针旋转的效果。例如进水到设定清洗时长10分钟,开始清洗,先正转1分钟,判断是否超过10分钟,这时肯定没有到达设定时间,这时开始反转1分钟,反转完成后,开始正传1分钟,正传完成后又开始判断时间,这时已经旋转了3分钟,但仍然小于10分钟。以此类推。
3.3 排水、脱水程序
清洗过程完毕后,进入排水过程。排水过程很简单,只需要打开排水闸,之后检测排水是否排完,注意:这时不能关闭排水阀,下个在脱水过程排水阀因该打开。
水排空后,开始脱水,脱水这清洗都是要发旋转指令,不过脱水的时候,只是一个方向的旋转,并且和清洗过程不一样的是脱水的时候,排水闸是打开状态,而清洗相反是关闭状态。
3.4 洗完报警程序
整个流程循环设定次数后或出现异常情况结束,开始洗完警示过程,3s后停止报警,可以通过显示屏,检查是正常结束,还是错误导致的。这样整个过程结束。
4 系统仿真与测试
4.1 系统仿真
仿真主要是通过Keil和Proteus两种软件实现,keil主要编写C程序,主要的目的是用来生成hex文件,hex文件是单片机的执行程序。Proteus软件用来加载hex文件。模拟清洗机。
4.2 系统硬件电路测试
本次测试使用黑盒测试方法,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格的规定正常运行,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息的完整性。主要测试6个子程序的功能,和当前引脚的状态,以及led显示的结果,LED从上到下的表示的意思是初始化,进水,加热,清洗,排水,脱水,警示、结束。根据正在运行的程序和引脚的状态判断是否达到预期的结果。通过测试功能,引脚的状态以及led的显示结果进行测试,并作了对程序运行过程的分析。并把测试结果如表1所示。
表1 系统电路测试
5 总结
整体系统设计以AT89c51为主控制核心,通过C语言完成软件设计,功能完善,并对设计进行了仿真检验和电路测试,根据测试结果,实现智能清洗机的进水、加热、清洗、排水、脱水、警示等基本功能,达到设计所规定的指标和基本要求。