当前位置:文档之家› 动态称重系统项目报告(计量)

动态称重系统项目报告(计量)

《工程综合实践》项目实验报告项目名称:动态称重系统专业测控技术与仪器班级组号B类第1组老师王栋中国计量学院2013年5月27日动态称重系统广泛应用于生产线定量包装供送系统、在线质检系统中,以实现生产质量的在线控制。

本项目主要结合工程训练中心包装物流生产线智能传送系统,设计一个动态称重系统,实现对盒装产品的重量信号的动态检测与单片机数据处理、显示的功能,既通过显示器件实时显示称重结果,对于不符合重量要求的产品发出剔除信号。

二、项目设计内容1、称重信号采集及信号调理要求将称重传感器的全量程(0~1KG)重量信号放大为标准0~5V DC电压信号,分辨精度0.2克,绝对误差(实测与理想值之差)≤0.5%。

2、单片机(PLC)处理与称重值显示要求将标准重量电压信号进行AD变换并显示(实现PLC重量超差报警)。

3、不合格产品的声光报警电路单片机实现重量超差报警与剔除信号控制。

4、项目流程图图2.1 动态称重系统流程图1、电源模块电路图3.1 电源电路2、A/D转换模块电路图3.2 A/D转换电路3、信号采集放大模块图3.3.1前置放大电路电路图图3.3.2 前置放大电路电路板4、电路板图3.4电路板制图5、单片机软件设计图3.5 单片机软件流程图6、PLC模块图3.6.1 PLC程序流程图表3.6.2 变量分配表四、项目实施记录与总结1、工作记录表4-1 动态称重系统工作记录表2、项目实施记录(1)项目结果表4-2 实测记录表(2)动态称重系统参数表4-3动态称重系统参数3、项目总结经过近两个月的探索和努力,在老师的指导和组员的共同努力下,不仅充实了更多知识,而且在查找资料的过程中也了解了许多课外知识,开拓了视野,认识了工业流水线在线质检的发展趋势。

通过本项目的制作,结合制作中的经验,得出以下结论:(1)本项目具有显著的生产实用价值,可节约更多人力资源,为企业创造更多利益;(2)限于元件精度及软硬件设计技术未成熟,项目结果仍具有较大误差;(3)调试过程具有较多问题,工业项目实施应更注重实际与理论的差别。

五、项目元件清单与造型说明1、放大器焊接清单2、单片机焊接清单附录A 单片机源程序#include <reg51.h>#include <intrins.h>#include <math.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longuchar ad_result[16]={0}; //AD转换结果uchar disp1[]={"MASS /g"};uchar i,m,port,timer1;uint a,b,AD_ad,c,d,mode;bit flag;sbit D1=P1^5;sbit D2=P1^6;sbit beep=P2^2;sbit key1=P2^0;sbit key2=P3^0;sbit PWM=P2^4;sbit xiahe=P2^1;sbit tichu=P2^3;sbit lcden=P2^7;sbit lcdrs=P2^5;sbit lcdrw=P2^6;sbit AD_eoc=P1^0;sbit AD_clk=P1^1;sbit AD_add=P1^2;sbit AD_dat=P1^3;sbit AD_cs=P1^4;void delay(uint z); //延时函数申明uint ADC(uchar chn1){uchar addr8;uint ADresult;AD_eoc=1;AD_cs=0;_nop_();addr8=chn1;addr8<<=4;for(i=0;i<4;i++){AD_add=(bit)(addr8&0x80);AD_clk=1;AD_clk=0;addr8<<=1;}for(i=0;i<6;i++){AD_clk=1;AD_clk=0;}AD_cs=1;while(!AD_eoc);_nop_();ADresult=0;AD_cs=0;for(i=0;i<10;i++){AD_clk=1;ADresult<<=1;m=AD_dat;ADresult+=m;AD_clk=0;}AD_cs=1;return(ADresult);}/****写指令*/void write_com(uint com) {lcdrs=0;lcden=0;lcdrw=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uint date) {lcdrs=1;lcden=0;lcdrw=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init() //液晶初始化{lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);}void keyscan(){if(key1==0){delay(5);if(key1==0);delay(5);while(!key1);delay(5);if(key1==1){TR0=1;//启动定时器}}void key2scan(){if(key2==0){delay(5);if(key2==0);delay(5);while(!key2);delay(5);if(key2==1){mode=mode+1;}} }void nihe(){if(AD_ad<750){AD_ad=AD_ad*0.9102+0.0106;}if(AD_ad>750&&AD_ad<2200){AD_ad=AD_ad*0.9303+6.0360;}if(AD_ad>2200&&AD_ad<3000) {AD_ad=AD_ad*0.5267+95.210;}if(AD_ad>3000&&AD_ad<10000){AD_ad=AD_ad*0.8746+0.1486;}}void main(){beep=1;xiahe=0;D1=1;D2=1;tichu=0;PWM=0;flag=1;c=0;mode=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;write_com(0x80+4);delay(5);while(disp1[i] != '\0'){write_date(disp1[i]);i++;}ad_result[4]='0';ad_result[3]='.';ad_result[2]='0';ad_result[1]='0';ad_result[0]='0';write_com(0xc0+6);for(i=0;i<5;i++){write_date(ad_result[i]);delay(20);}c=(uint)(ADC(0)*4.883);while(1){TMOD=0x01;//设置定时器0为工作方式1 TMOD=0x10;//设置定时器1为工作方式1 //TR0=1;//启动定时器IT0=0;//低电平出发ET0=1;//开定时器中断ET1=1;//开定时器中断IT1=0;//低电平出发EA=1;keyscan();key2scan();}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;if(a==60){if(flag){flag=~flag ;// c=(uint)(ADC(0)*4.883);a=0;d=0;AD_ad=0;TR0=0;xiahe=1;delay(1500);xiahe=0;PWM=1;delay(2500);//让盒子运动到中间位置PWM=0;delay(1000);AD_ad=(uint)(ADC(0)*4.883);delay(500);PWM=1;AD_ad=abs(AD_ad-c);/*质量显示*/AD_ad=AD_ad*2;nihe();ad_result[4]=(AD_ad%10)+'0';ad_result[3]='.';ad_result[2]=((AD_ad%100)/10)+'0';ad_result[1]= ((AD_ad%1000)/100)+'0';ad_result[0]=(AD_ad/1000)+'0';write_com(0xc0+6);for(i=0;i<5;i++){write_date(ad_result[i]);delay(5);}if(AD_ad<2000&&AD_ad>1000){D2=0;D1=1;beep=1;tichu=0;PWM=1;delay(5000);TR0=1;//TR1=1;}else{ PWM=1;D2=1;D1=0;tichu=1;beep=0;delay(400);beep=1;delay(2500);PWM=0;TR1=1;tichu=1;delay(100);tichu=0;}if(~flag){flag=~flag;ad_result[4]='0';ad_result[3]='.';ad_result[2]='0';ad_result[1]='0';ad_result[0]='0';write_com(0xc0+6);for(i=0;i<5;i++){write_date(ad_result[i]); delay(5);}D1=1;D2=1;beep=1;}}}}void T1zd() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;b++;if(b==40){b=0;TR1=0;TR0=1;}}附录B PLC源程序。

相关主题