电机自动监控系统的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《检测课程设计》设计报告设计题目:电机自动监控系统的设计班级:组长:组员:1目录一、绪论····························································2二、温度检测及报警电路设计1、数字温度传感器DS18B20介绍··································22、实际电路连线图················································53、程序清单······················································6三、振幅检测及控制电路设计1、原理叙述·····················································92、设计框图·····················································93、超声波测距子程序············································12四、电机转速检测及报警电路设计1、霍尔传感器测量原理··········································132、转速测量方法···············································143、总体硬件设计框图···········································144、硬件连线图·················································155、软件流程图·············································156、程序清单···················································16参考文献·····················································202一、绪论:电机作为一种拖动动力设备,在机床加工、运输、电力等领域有着广泛的应用。电机三相线圈温度过高的原因有:定子绕组匝间或相间有短路故障,电流增大而发热;定子绕组有短路或并联绕组中某支路短线,引起三相电流不平衡增大损耗造成绕组过热;将Δ形接成Y形,或Y形接成Δ形,在额定负载运行时,会使电机过热;三相电源电压不平衡,相间电压不平衡度超过5%,引起三相电流不平衡而使电机发热等等。这就需要在电机的各相上安装温度传感器对电机进行实时监测。电机在运转过程中,可能会出现轴松动,轴振动幅度过大,轴出现裂纹或断裂现象,危及设备和人身安全,为防止此现象发生,在轴上安装一只压电、电感等传感器,测量振幅,振幅超过限定值时,报警同时关断电机电源。电机的转速是电机的一个重要的参数,电机转速过大的原因一般有:电源电压波动过大;电枢绕组短路;电机中部分并励绕组断线;电机起动时会出现转速快、线电流大,并在电刷上出现较大火花。这些现象干扰了电机的正常运转。为了保证电机系统的正常运行,需要通过检测控制装置对它进行监控。重点监控的参数是电机A、B、C三相线圈的温度、电机轴的径向振动振幅、电机轴的转速。二、温度检测及报警电路设计1、数字温度传感器DS18B20介绍(1).DS18B20的主要特性:电压范围:3.0~5.5V,温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。可编程,的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,测量结果直接输出数字温度信号。分辨R1R0分辨率温度最大转换时间3009位93.75ms0110位187.5ms1011位375ms1112位750ms图2:DS18B20内部结构图DS18B20中的温度传感器可完成对温度的测量,以12位转化为例,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,二进制中的前面5位S是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H。表1:DS18B20温度值格式表表2:DS18B20温度数据表4(2)DS18B20的编程:单片机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。表2ROM指令表指令约定代码功能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。搜索ROM0FOH用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。跳过ROM0CCH忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。5表3RAM指令表指令约定代码功能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中。重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第3、4字节。(3)DS18B20与单片机的连接根据要求将将DA18B20的输入输出端DQ与单片机的P1.0口相接即可。电路图如下:2、实际电路连线图621.0DQ2VCC3GND1U2DS18B20XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427AT89S52AT89S52234567891RP1RESPACK-8D1LED-BIBYR13003、程序清单:#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintucharxdatawei_at_0x80;//wei绝对定位到80H(单片机的P0口)ucharxdataduan_at_0x90;//duan绝对定位到90H(单片机的P2口)sbitDQ=P1^0;uinttemp;//显示温度小数位和十位段选值表unsignedcharcodetable[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//显示温度个位段选值表unsignedcharcodetable2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0E};voiddelay(uintx)//延时程序{uinti,j;for(i=0;ix;i++)for(j=0;j200;j++);}voiddsreset(void)//18B20复位函数,默认工作于12位测温,分辨辩率为0.0625{uinti;DQ=0;i=103;7while(i0)i--;DQ=1;i=4;while(i0)i--;}bittmpreadbit(void)//读1位数据函数{uinti;bitdat;DQ=0;i++;//i++作延时用DQ=1;i++;i++;dat=DQ;i=8;while(i0)i--;return(dat);}uchartmpread(void)//读1字节函数{uchari,j,dat;dat=0;for(i=1;i=8;i++){j=tmpreadbit();dat=(j7)|(dat1);//读出的数据最低位在最前面,这样刚好一个字节在DAT里}return(dat);}voidtmpwritebyte(uchardat)//向1820写一个字节数据函数(将dat的值写入1820){uinti;ucharj;bittestb;for(j=1;j=8;j++){testb=dat&0x01;dat=dat1;if(testb)//testb=1时向DS18B20写入1{DQ=0;i++;i++;DQ=1;i=8;while(i0)i--;}else{DQ=0;//testb=0时向DS18B20写入08i=8;while(i0)i--;DQ=1;i++;i++;}}}voidtmpchange(void)//开始获取数据并转换{dsreset();delay(1);tmpwritebyte(0xcc);//写跳过读ROM指令tmpwritebyte(0x44);//写温度转换指令}uinttmp()//读取寄存器中存储的温度数据{floattt;uchara,b;dsreset();delay(1);tmpwritebyte(0xcc);//向DS18b20发温度变换命令tmpwritebyte(0xbe);//读DS18b20内部RAM的9字节内容a=tmpread();//读低8位b=tmpread();//读高8位temp=b;temp=8;//两个字节组合为1个字temp=temp|a;tt=temp*0.0625;//温度在寄存器中是12位,分辨率是0.0625temp=tt*10+0.5;//乘10表示小数点后只取1位,加0.5是四折五入returntemp;//tem的返回值为整型,因此temp强制转换为整型,即去掉小数点后的三位}voiddisplay(uinttemp)//温度显示程序{ucharbai,shi,ge;bai=temp/100;//取temp的百位作为预显示温度的十位shi=temp%100/10;//取temp的十位作为预显示温度的个位ge=temp%10;//取temp的个位作为预显示温度的小数位duan=table[ge];wei=0xfe;//显示温度的小数位delay(3);duan=table2[shi];wei=0xfd;//显示温度的个位delay(3);duan=table[bai];wei=0xfb;//显示温度的十位delay(3);9if(bai=7)p1^7=0;//实现二极管发光报警,手动按下停止按钮SB1,电机惯性停车}vo

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功