动态称重系统项目报告 =计量=
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《工程综合实践》
项目实验报告
项目名称:动态称重系统专业测控技术与仪器班级
组号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
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
uchar 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;//启动定时器