温控电机调速接口技术-毕业论文_第1页
温控电机调速接口技术-毕业论文_第2页
温控电机调速接口技术-毕业论文_第3页
温控电机调速接口技术-毕业论文_第4页
温控电机调速接口技术-毕业论文_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

温控电机调速TemperatureControlMotorSpeed 题目名称:接口技术页目录前言··············································2方案设计·········································22.1系统整体的选择·····································22.1单片机的选择·······································22.2温度传感器的选择···································32.3调速方式···········································3各单元模块的硬件设计······························33.1DS1820数字温度传感器·······························33.2AT89C52单片机······································43.3LED数码管··········································5电路的设计·········································6软件的设计·········································85.1C语言程序源代码····································85.2用KeilC51编写程序机器编译························145.3本设计基于Proteus的仿真···························15第六章结束语············································15参考文献··········································15附录·····················································16第一章前言在现代的生活和生产中,温控电机系统被广泛的使用,如夏天人们使用的智能风扇、工业生产中大型机械使用的散热系统、用于笔记本散热的智能CPU散热风扇等。而随着温控技术的发展,为了降低风扇运转时的再引及节省能源等,温度控制电机转速这一方案越来越受到重视并广泛的被应有。其可以使转速根据环境温度的变化进行无极调速,当温度升高时,电机的转速增大,而温度降低是电机的速度减小。本文设计了又ATMEL公司的8052系列单片机AT89C52作为控制器,采用DALLAS公司的温度传感器DS1820作为温度采集元件,并通过一个反向驱动器ULN2803驱动电机的转动。同时使系统检测到的环境温度以及系统预设温度动态显示到LED数码管上。根据被测温度和预设温度进行比较从而调节电机的速度。第二章方案设计2.1系统的总体的选择本设计是用温度传感器DS1820检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在LED是吗管上显示但钱环境温度值以及预设温度值。其中预设温度只能为整数形式,检测到的当前环境温度可精确到小数点后以位。同时采用PWM脉宽调制方式改变之流风扇电机的转速。并通过两个按键改变预设温度的大小,一个提高预设温度,另一个降低预设温度。系统结构框图如下:2.2单片机的选择AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。在本设计中采用了AT89C52单片机作为控制核心,通过软件编程的方法进行温度检测和判断,并在其通过软件编程的方法进行温度检测和判断,并在其I/O端口输出控制信号。AT89C52工作在低压,性能高片内含有制度程序存储器ROM和256字节的随机数据存储器RAM,它兼容标准的MCS-51指令系统,单片机价格便宜,并且适合本系统。2.3温度传感器的选择市面上卖的温度传感器各种各样,但各有差别,要根据具体的需要进行选择。DS18B20,常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。其集成化程度高,大大降低了外界放大转换等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使其温度分辨率特别高。温度值在器件内部转化成数字量直接输出,简化了系统的设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变的非常简洁,抗干扰能力强,因此该方案适用于本设计。2.4调速方式通过8052系列单片机AT89C52作为控制器,采用DALLAS公司的温度传感器DS1820作为温度采集元件,并通过一个反向驱动器ULN2803驱动电机的转动。同时使系统检测到的环境温度以及系统预设温度动态显示到LED数码管上。根据被测温度和预设温度进行比较从而调节电机的速度。此方案相对于其他硬件或软件相结合的犯非法实现对电机的调速而言,采用PWM用纯软件的方法来实现调速过程,具有更大的灵活性,并大大降低了成本,能够充分的发挥单片机的功能,对于简单的速度控制系统的实现提供了一种有效的途径。综合考虑选择此方案。第三章各单元硬件模块设计3.1DS1820数字温度传感器DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。其基本的外形图如下:其与单片机的接线图如下:3.2AT89C52单片机AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。其引脚图如下:3.3LED数码管LED数码管(LEDSegmentDisplays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其硬件接线图如下:第四章电路的设计开关复位与晶振电路:在单片机系统中,处于单片机本身需要复位意外,外部扩展I/O端口电路同样需要复位,因此需要一个包括上电按钮复位在内的系统同步复位电路。本设计中开关复位与晶振电路如下所示,当按下开关S1时,系统复位一次。起初电容C1C2为30pF,C3为10uF,电阻R2,R3阻值为100,和10K,晶振频率为12MHZ。独立按键电路:按键包括两个独立按键S2S3,一段与单片机的P1.3P1.4相连另一端接地。系统通电后,进入按键的语言程序,完成温度的设定。按下S2为加键,每按一次,系统对最初设定值加一,按下S3,每按一次,系统对最初设定值减一。其接线图如下:数码管的接线图:驱动器的接线图:本设计驱动装置选用ULN2803驱动器,其余单片机与电机的接线图如下:总体布线图:总体布局图在设计书后附图。第五章软件的设计5.1C语言程序源代码源程序为:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^7;sbitkey1=P1^3;sbitkey2=P1^4;sbitdianji=P3^1;floatff;uinty3;ucharshi,ge,xiaoshu,sheding=20,gaonum,dinum;ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetable[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchardispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchardispbuf[8]={0,0,0,0,0,0,0,0};voidDelay(uintnum){while(--num);}voiddigitalshow(uchara4,uchara3,uchara2,uchara1,uchara0){dispbuf[0]=a0;dispbuf[1]=a1;dispbuf[2]=a2;dispbuf[3]=a3;dispbuf[4]=a4;P2=0xff;P0=dispcode[dispbuf[0]];P2=dispcode[5];Delay(1);P2=0xff;P0=dispcode[dispbuf[1]];P2=dispcode[4];Delay(1);P2=0xff;P0=dispcode[dispbuf[2]];P2=dispcode[2];Delay(1);P2=0xff;P0=dispcode[dispbuf[3]];P2=dispcode[1];Delay(1);P2=0xff;P0=dispcode[dispbuf[4]];P2=dispcode[0];Delay(1);}voiddmsec(uintcount){uinti;while(count--){for(i=0;i<125;i++){}}}voidtmreset(void){DQ=0;Delay(90);DQ=1;Delay(4);}voidtmpre(void){while(DQ);while(~DQ);Delay(4);}bittmrbit(void){uinti;bitdat;DQ=0;i++;DQ=1;i++;i++;dat=DQ;Delay(8);return(dat);}uchartmrbyte(void){uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmrbit();dat=(j<<7)|(dat>>1);}return(dat);}voidtmwbyte(uchardat){uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){DQ=0;i++;i++;DQ=1;Delay(4);}else{DQ=0;Delay(4);DQ=1;i++;i++;}}}voidtmstart(void){dmsec(1);tmreset();tmpre();dmsec(1);tmwbyte(0xcc);tmwbyte(0x44);}uchartmrtemp(void){uchara,b;tmreset();tmpre();dmsec(1);tmwbyte(0xcc);tmwbyte(0xbe);a=tmrbyte();b=tmrbyte();y3=b;y3<<=8;y3=y3|a;ff=y3*0.0625;y3=ff*10+0.5;return(y3);}voidkeyscan(void){if(key1==0){dmsec(5);if(key1==0){sheding++;if(sheding==100)sheding=20;}while(!key1);}elseif(key2==0){dmsec(5);if(key2==0){sheding--;if(sheding==0)sheding=20;}while(!key2);}}voiddeal(uinttmp){if(tmp<=sheding){gaonum=0;dinum=4;}elseif((tmp>sheding)&&(tmp<=(sheding+5))){gaonum=1;dinum=3;}elseif((tmp>sheding+5)&&(tmp<=(sheding+10))){gaonum=2;dinum=2;}elseif((tmp>sheding+10)&&(tmp<=(sheding+15))){gaonum=3;dinum=1;}else{gaonum=4;dinum=0;}}voiddianjik(){ucharq,i;for(q=0;q<dinum;q++){dianji=0;digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);for(i=255;i>0;i--){digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);}}for(q=0;q<gaonum;q++){dianji=1;digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);for(i=255;i>0;i--){digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);}}}voidmain(void){uintlast;dianji=0;tmstart();dmsec(450);while(1){tmstart();dmsec(2);last=tmrtemp()+256;shi=last/100;ge=(last%100)/10;xiaoshu=(last%100)%10;keyscan();dmsec(2);deal(last/10);dianjik();}}5.2用KeilC51编写程序机器编译KeilC51软件步进提供了丰富的库函数,而且它强大的集成开发调试工具为程序编程调试带来便利,在开发大型软件时更能体现高级语言的优势。在使用是建立一个工程,然后再添加文件夹饼编写程序,编写好程序后调试。KeilC51调试界面如下:5.3本设计基于Proteus的仿真本设计基于Proteus的仿真的总图在设计书后附图1、2。把温度传感器DS18B20温度表设置为26摄氏度,用按键S2,S1可以手动调节电机最大和最小转速。系统开始仿真,待一段时间后,观察电机的转速,见后面附图3。把温度传感器DS18B20温度表设置为45摄氏度,待一段时间后,观察电机的转速,见后面附图4。把温度传感器DS18B20温度表设置为35摄氏度,待一段时间后,观察电机的转速,见后面附图5。第六章结束语本次设计的系统从硬件设计和软件编程写到Proteus仿真,在这个过程中用到了大学里学到的东西,把一些重要的知识点串在了一起。本设计是李克用温度传感器DS1820检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在LED是吗管上显示但钱环境温度值以及预设温度值。从而使电机在一定的范围内能够实现速度的调节。广泛应用到各种领域,如笔记本的散热系统、智能电风扇、还有一些发热严重的大型机械等等大都采用了这样的方案来控制机体内部的热量,从而保证工作正常运行等,这种设计在我们的日常生活中将有重要的意义。通过本次的结课大作业,我学习到了更多有关单片机方面的知识。并通过在图书馆查阅大量的资料,对一些电器元件如何运用和计算机相关仿真软件的应用有了更深的掌握。同时这其中也锻炼了我们的语言变成不能力。总之我得到了许多收获,要非常感谢老师!第七章参考文献[1]白延敏.51单片机典型系统开发实例精讲[M].电子工业出版社,2009.[2]刘建清.51单片机C语言[M].北京航空航天大学出版社,2010.[3]袁东.51单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论