电子皮带称设计讲解.docx
《电子皮带称设计讲解.docx》由会员分享,可在线阅读,更多相关《电子皮带称设计讲解.docx(15页珍藏版)》请在冰豆网上搜索。
电子皮带称设计讲解
南通大学
传感与检测课程设计报告书
课题名称:
电子皮带秤
理论设计
学院:
电气工程学院
班级:
电109
姓名:
童彬郭涛刘文浩孟圣凡
徐浩楠孙怀超陈春亚
学号:
0812002103
1012002179--1012002184
指导教师:
华亮
实验时间:
2013年6月24日至6月28日
电子皮带秤设计
电子皮带秤,是对皮带输送系统中的散状物料进行连续计量的理想设备,具有结构简单、称量准确,使用稳定、操作方便、维护量少等优点,不仅适用于常规环境,而且适用于酸、碱、盐及大气腐蚀环境。
主要应用于冶金、电力、煤炭、矿山、港口、化工、建材等行业。
图1为皮带秤组成部分:
电子皮带秤由五个主要部分组成:
称重桥架、称重传感器、测速滚筒、速度传感器和积算器。
装有载荷传感器的称重桥架,安装于输送机的纵梁上,称重桥架支承的称重托辊,检测皮带上的物料重量,产生一个正比于皮带载荷的电压信号。
速度传感器直接联结在从动滚筒上或者大直径的滚筒上,提供一系列脉冲,每个脉冲表示皮带运行的单位长度,脉冲频率正比于皮带速度。
积算器从称重传感器和速度传感器接收信号,经A/D转换、滤波整形后进入微处理器进行运算,输出累计量和瞬时流量、皮带速度、计数脉冲等参数。
1.称重部分
称重桥架为全悬浮结构,四只称重传感器
2.仿真图片
(程序见附录)
如图所示,在此Proteus仿真图中,以四个滑动变阻器代替原来的四个电阻应变片作为称重传感器,相对的两只桥臂上变化是相反的,中间可加运放放大电压信号,单片机通过获得差压信号进行处理,在实际应用中:
质量=/g为材料的应变系数,S可测
可在中间两根称重托辊上安装称重传感器,再去其平均值,则结果可稍准确些。
3.安装位置
(1)称量系统要安装在坚固的输送机上,否则必须增加支撑。
(2)皮带秤不应设置在距给料机、漏口、导料栏板3米以内的地方。
(3)秤不能装在凹形或凸形曲线的输送机上。
(4)秤不应装在输送机因超速或倾斜而使物料滑动的地方。
(5)秤应装在防风雨最好的地方。
(6)在装有皮带秤的输送机上不应联结或装有任何振动装置。
称重传感器的安装
将称重传感器和连接杆用螺母紧固联接,连接杆和称重桥架的联接要用两个球面垫、两个螺母紧固连接。
联接传感器的连接杆一定要自由垂直拉紧,不要碰到任何外物。
调整连接杆和称重桥架联接用的两个螺母,使两个称重传感器的信号输出电压在6.0毫伏,且两个称重传感器的信号输出电压差值不大于0.1毫伏。
如有倾角:
等效公斤/米(Kg/rn)=Kg/cosΦ×(d1/d2)×(1/D)
Kg=等效公斤
Φ=输送机倾角
dl=从耳承支承中心线到传感器中心的距离(mm)
d2=从耳承支承中心线到称重托辊中心线的距离(mm)
D=计量段长度
4.皮带速度(m/s)
速度传感器:
速度传感器必须安装在以皮带输送机速度旋转的轴上,通常尾部滚筒或者大直径的从动滚筒可以满足此要求。
如采用光电编码器(安装位置必须防尘隔躁):
与51单片机可按下图接线
在仿真中:
可用方波信号代替由光电编码器发出的脉冲,例如根据方波周期为5ms,每100ms计数,根据单位时间内计数的个数和光电编码器的齿数可算得相应的转角,由此可推出皮带的速度。
5.proteus仿真图
(图中方波周期为5ms)
5.计算用链码校验皮带载荷累计量理论值
理论值=每米公斤(kg/m)×皮带速度(m/s)×时间(s)
可外加通讯板:
(略)
在主板扩展槽中可安装通讯板,采用主从式通讯协议,上位机呼叫仪表,并发送控制命令,读写仪表过程参数和显示,或直接进行远程键盘操作,通讯板使用标准RS-232或RS-485方式。
6.总结
通过此次课程设计,我们学到了很多知识,同时也对之前学习过的知识进行了一次很好的回顾。
通过对软件电路的设计和理论学习,增强了自己的动手能力。
由原来的被动接受知识转换为主动的寻求知识,学会了更好地让所学知识与实践相结合,让书本上的知识与实际生活中的具体应用相结合。
让自己切实感觉到了学有所用。
特别是在单片机、模电、数电及器件选择方面的知识。
同时通过这次课程设计提高了传感检测技术的知识水平以及单片机编程能力,尤其是获得的软件调试经验。
7.称重传感器仿真程序
#include
#include"intrins.h"
#defineuintunsignedint
#defineucharunsignedchar
//ADC0832的引脚
sbitADCS=P2^2;//ADC0832chipseclect
sbitADDI=P2^1;//ADC0832kin
sbitADDO=P2^1;//ADC0832kout
sbitADCLK=P2^0;
//sbitDP=P0^7;//ADC0832clocksignal
unsignedchardispbitcode[8]={0xf7,0xfb,0xfd,/*0xfe,0xef,0xdf,0xbf,0x7f*/};//位扫描
unsignedchardispbuf[3];
uinttemp;
uchargetdata;//获取ADC转换回来的值
/*=====0-9=====A-G=====*/
unsignedchara[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//共阳极数码管的段码0123456789ABCDEF
#defineshumaP0//定义数码管数据和控制位
sbitLED_4=P1^0;
sbitLED_5=P1^1;
sbitLED_6=P1^2;
sbitLED_7=P1^3;
voiddelay(unsignedintx);//声明数码管显示函数
voiddisplay1(unsignedchard1,unsignedchard2,unsignedchard3,unsignedchard4);
voiddelay(unsignedintx)//数码管显示需要的延时函数
{
unsignedinti;
for(i=0;i}
voiddisplay1(unsignedchard1,unsignedchard2,unsignedchard3,unsignedchard4)
{
shuma=a[d1];//选中第一位,发送第一位段码
LED_4=1;
delay(100);
LED_4=0;
shuma=a[d2]&0x7f;//选中第二位,发送第二位段码
//DP=1;
LED_5=1;
delay(100);
//DP=0;
LED_5=0;
shuma=a[d3];//选中第三位,发送第三位段码
LED_6=1;
delay(100);
LED_6=0;
shuma=a[d4];//选中第四位,发送第四位段码
LED_7=1;
delay(100);
LED_7=0;
}
/************读ADC0832函数************/
unsignedintAdc0832(unsignedcharchannel)
{
uchari=0;
ucharj;
uintdat=0;
ucharndat=0;
if(channel==0)channel=2;//通道选择
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
ADDI=1;//控制命令结束
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高数据端,回到初始状态
dat<<=8;
dat|=ndat;
return(dat);//返回得到的值
}
voiddisp(void)
{
if(Adc0832
(1)>Adc0832(0))
getdata=Adc0832
(1)-Adc0832(0);//调用函数返回A/D值
if(Adc0832
(1)getdata=Adc0832(0)-Adc0832
(1);
temp=getdata*1.0/255*500;//电压值转换,5V做为参考电压,分成256份。
测试程序不使用绝对电压,只显示A/D值。
dispbuf[0]=temp%10;//个位
dispbuf[2]=temp/10%10;//十位
dispbuf[1]=temp/100;//百位
display1(0,dispbuf[1],dispbuf[2],dispbuf[0]);//把返回的A/D值不经过运算,直接送显示,0-255
}
voidmain(void)
{
while
(1)
{
disp();//在大循环中循环显示
}
}