单片机课程设计-温控直流电机转速(共15页)_第1页
单片机课程设计-温控直流电机转速(共15页)_第2页
单片机课程设计-温控直流电机转速(共15页)_第3页
单片机课程设计-温控直流电机转速(共15页)_第4页
单片机课程设计-温控直流电机转速(共15页)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上 摘 要本论文要求使用单片机进行电路设计,同时单片机部分应带有显示功能。单片机对某个位置进行温度监控,当外部温度45时,电动机加速正转,当温度75时,电动机全速正转;当外部温度10时,电动机加速反转,当温度0时,电动机全速反转;当温度回到1045之间时电动机逐渐停止转动。温度采集模块可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值, 利用单片机的一个I/O口的引脚,通过软件对这个引脚不断地输出高低电平来实现PWM波的输出,51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。所谓脉冲宽度调制是指

2、用改变电机电枢电压接通与断开的时间的占空比来控制电机转速的方法,称为脉冲宽度调制(PWM)。PWM驱动装置是利用全控型功率器件的开关特性来调制固定电压的直流电源,按一个固定的频率来接通和断开,并根据需要改变一个周期内“接通”与“断开”时间的长短,改变直流电动机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,这种装置又称为“开关驱动装置”。对于直流电机调速系统,其方法是通过改变电机电枢电压导通时间与通电时间的比值(即占空比)来控制电机速度。本次设计可以作为简单控制向复杂控制的过度,实现直流电机启动、正反转控制和顺序控制外,还要进行转速控制。为以后复杂控制设计做基础。关键词

3、: PWM;单片机;温度控制专心-专注-专业1 设计总说明1.1 引言在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用,无论在工业农业生产、交通运输、国防航空航天、医疗卫生、商务与办公设备,还是在日常生活中的家用电器,都在大量地使用着各式各样的电动机。据资料统计,现在有的90%以上的动力源来自于电动机,我国生产的电能大约有60%用于电动机。电动机与人们的生活息息相关,密不可分。随着现代化步伐的迈进,人们对自动化的需求越来越高,使电动机控制向更复杂的控制发展。1.2 研究意义对电动机的控制可分为简单控制和复杂控制两种,简单控制是对电动机进行启动、制动、正反转控制和顺序控制,复

4、杂控制是对电动机的转速转速、转角、转矩、电压、电流等物理量进行控制。本次设计可以作为简单控制向复杂控制的过度,实现直流电机启动、制动、正反转控制和顺序控制外,还要进行转速控制。为以后复杂控制做为基础学习。直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更

5、高的性能。采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率,可以实现复杂的控制,控制灵活性和适应性好,无零点漂移,控制精密高,可提供人机界面,多机联网工作。采用智能功率电路驱动比传统的分立功率器件组成的驱动体积小,功能强;减少了电路元器件数量,提高了系统的可靠性;监控更容易实现;集成化使电路的连线减少,减少了布线电容和电感以及信号传输的延时,增加了系统抗干扰的能力;集成化使系统成本大大降低。1.3系统设计内容本设计将介绍一种基于单片机的温度控制直流电机转速系统。该系统采用AT89C51单片机为核心,通过AT89C51 单片机驱动数字温度传感器DS18B20,进行温

6、度数据采集通过温度的比较和温度范围设定的程序控制产生PWM(脉宽调制)信号;通过L298驱动芯片来控制直流电机的启动、速度、方向的变化;通过LM016L显示温度。论文包括对单片机的功能及各个管脚和晶振复位电路的介绍,整个电路设计包括温度采集模块,单片机控制模块,温度显示模块,和电机及电机驱动模块。2系统方案设计2.1系统的设计要求及主要技术指标 本论文要求使用单片机进行电路设计,同时单片机部分应带有显示功能。单片机对某个位置进行温度监控,当外部温度45时,电动机加速正转,当温度75时,电动机全速正转;当外部温度10时,电动机加速反转,当温度0时,电动机全速反转;当温度回到1045之间时电动机逐

7、渐停止转动。2.2系统总体方案系统总体方案设计,如下图1单片机温度显示温度采集DS18B20PWM输出电机驱动L298直流电动机系统供电图1 系统总体方案图2.3 总体方案论述 该系统采用AT89C51单片机为核心,通过DS18B20进行温度采集,送入单片机,经过软件编程进行温度的比较和范围划定,然后通过程序控制由单片机产生不同的PWM(脉冲宽度调制)信号,送给电机驱动芯片L298的使能端口,通过L298驱动芯片来控制直流电机的启动、速度、方向的变化;单片机将温度数据传送给LM016L显示温度。整个电路设计包括温度采集模块,单片机控制模块,温度显示模块,和电机及电机驱动模块。3 硬件电路设计3

8、.1 温度采集模块的电路连接DS18B20 有三个管脚:GND 为电源地,DQ 为数字信号输入/输出端,VCC 为外接供电电源接入端(用寄生电源方式时接地)。在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时VCC、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。本系统中DS18B20的DQ口与单片机的 P3.3口连接,GND 接地。Protues软件仿真图如图2所示。图 2 DS18B20的Protues仿真图3.2转速控制模块设计A(IN1)、B

9、(IN2)分别与AT89C51单片机的P1.0、P1.1相连接,输入控制电位来控制电机的正反转。ENA与单片机的P1.2口相连接,P1.2口输出控制电动机转速的PWM信号,来控制电动机的加速、减速,启动、停止。由于我们使用的电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。上面接电源那个是当VS断电后,电机的产生的磁场产生很大的电动势保护电机(因为电机可能正传或者反转,所以两个方向均要设计二极管),接地那个作用在于保护单片机等元件。图 3 转速控制模块protues仿

10、真的电路图3.3 温度显示模块设计数据手册中可能介绍LM1602内部D0D7已有上拉,可以使用P0口直接驱动。在Proteus里LM016L内部可能没有,应该人为加上拉电阻。图 5 温度显示模块设计proteus仿真图4 系统软件设计4.1系统软件构架端口初始化液晶显示程序DS18B20函数初始化读取温度值并显示延时开启中断T0定时器控制电动机正/反转,并通过PWM信号控制电动机转速等待中断开始返回图 6系统软件总框图5 元器件清单表 2 元器件清单学名称型号毕数量备注单片机AT89C511二极管1N40071 电容CAP2220pF2100nF电解电容CAP-ELEC110uF晶振CRYST

11、AL112MHZ温度采集器DS18B201电机控制元件 L2981LCD显示器LM016L1电机转子MOTOR-DC1 电阻排阻RESPESPACK11110K4.7K6电路设计仿真图 7 设计电路的proteus仿真结论本方案实现了单片机通过对温度的采集和比较对直流电机进行转速控制,以及利用软件模拟实现直流电机PWM调速的方法。以AT89C51单片机为控制核心,通过DS18B20进行温度采集,送入单片机,经过软件编程进行温度的比较和范围划定,然后通过程序控制由单片机产生不同的PWM(脉冲宽度调制)控制信号,送给电机驱动芯片L298的使能端口,通过L298驱动芯片来控制直流电机的启动、速度、方

12、向的变化实现了对普通直流电机的转速调节,为进一步研究和优化直流电机控制方法提供了基础。达到了系统的设计要求:单片机对某个位置进行温度监控,当外部温度45时,电动机加速正转,当温度75时,电动机全速正转;当外部温度10时,电动机加速反转,当温度0时,电动机全速反转;当温度回到1045之间时电动机逐渐停止转动。从这次的设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次设计中的最大收获。参考文献1 王之道,周靖,刘旭, J机械工程与自动化2009(5) 2 茹占军,基于AT89S5

13、2单片机直流电机调速系统的设计, J.软件导刊2010, 9(8)3 赵鸿图,基于单片机AT89C51的直流电机PWM调速系统J.电子技术 ,2008, 45(10)4 周润景,张丽娜.基于Proteus的电路及单片机系统设计与仿真M.北京:北京航空航天大学出版社,2006. 5 宁成军,张江霞.基于Proteus和Keil接口的单片机外围硬件电路仿真J.现代电子技术,2006,29(18):142-143,146. 6 陈良光,管聪慧.由数字式传感器 DS18B20 构成的多点测温系统J.传感器世界, 1999, 9.7 杜洋,DS18B20温度传感器应用解析,2007.3.168 马忠梅,

14、张凯,等.单片机的C语言应用程序设计(第四版).北京航空航天大学出版社实验程序#include<reg51.h>#include<intrins.h>#difine uchar ;unsigned char#difine uint ;unsigned int#define delayNOP() _nop_();_nop_();_nop_();_nop_();sbit DQ =p33;sbit LCD_RS=p20;sbit LCD_RW=p21;sbit LCD_EN=p22;sbit MA =P10;sbit MB =p11;sbit PWM1 =p12;uchar

15、code temp_DISP_Title ="Current temp : "uchar current_temp_Display_Buffer="TEMP: "/温度字符uchar code_temperature_char8 =0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,;/ 温度小数位对照表uchuar code df_Table =0,1,1,2,2,3,3,4,4,5,6,6,7,8,8,9,9 ;uchar CurrenT = 0; /当前读取的温度整数部分char Signed_Temp = 0

16、; /有符号温度值uchar Temp_Value = 0x00,0x00; /从DS18B20读取温度值uchar Back_Temp_Value = 0xFF,0xFF; /温度数据备份uchar Display_Digit = 0,0,0,0; /待显示的各温度数位bit DS18B20_IS_OK = 1; /传感器正常标志uint tCount = 0;/-/延时 1/-void DelayXus(int x) uchar i; while(x-) for (i=0;i<200;i+);/-/液晶控制函数-/uchar LCD_Busy_Check() reentrant/vo

17、id Write_LCD_Command (uchar cmd)/void Write_LCD_Data (uchar data)/void LCD_Initialise ()/void Set_LCD_POS (uchar pos)/void Write_NEW_LCD_Char ()/-/-/延时2/-void Delay(unit x)while (-x);/-/初始化DS18B20/-uchar Init_DS18B20() uchar DQ=1; Delay(8);DQ = 0;Delay(90); DQ=1; Delay(8);status = DQ;Delay(100);DQ=1

18、; return status; /初始化成功返回0/-/读一字节/-uchar ReadOneByte() uchar i,dat = 0; DQ = 1; _nop_(); for (i=0;i<8;i+) DQ=0; data>>=1;DQ=1; _nop_();_nop_(); if(DQ) dat1=0x80;Delay(30);DQ=1; return dat;/-/写一字节/-void WriteOnebyte (uchar dat) uchar i; for (i=0;i<8;i+) DQ=0;DQ=dat&0x01; Delay(5);DQ=1

19、;dat>>=1; /-/读取温度值/-void Read_Temperature() if(Init_DS18B20() = 1) /DS18B20故障 DS18B20_IS_OK = 0; else writeoneByte(0xCC); /跳过序列号 writeoneByte(0x44); /启动温度转换 Init_DS18B20(); writeoneByte(0xCC); writeoneByte(0xBE); /读取温度寄存器 Temp_Value0 = ReadOneByte(); /温度低8位 Temp_Value1 = ReadOneByte(); /温度高8位

20、DS18B20_IS_OK = 1; /-/在LCD上显示当前温度/-void Display_Temperature() uchar i; uchar t=150;/延时值 uchar ng = 0;/负数标识 /如果为负数则取反加1,并设置负数标识 if(Temp_Value1 & 0xF8) =0xF8) Temp_Value1 = Temp_Value1; Temp_Value0 = Temp_Value0 + 1; if(Temp_Value0 =0x00) Temp_Value1+; ng= 1; /查表得到温度小数部分 Display_Digit0 = df_Table

21、Temp_Value0 & 0x0F ; /获取温度整数部分(无符号) Current = (Temp_Value0) & 0xF0)>>4) | (Temp_Value1 & 0x07)<<4); /获取有符号温度值(忽略小数位) Signed_Temp = !ng ? CurrenT : - CurrenT; /将整数部分分解为三位待显示数字 Display_Digit3 = CurrenT / 100; Display_Digit2 = CurrenT % 100/10; Display_Digit1 = CurrenT % 10; /刷新

22、LCD显示缓冲 Current_Temp_Display_Buffer11 = Display_Digit0 + '0' Current_Temp_Display_Buffer10 = '.' Current_Temp_Display_Buffer 9 = Display_Digit1 + '0' Current_Temp_Display_Buffer 8 = Display_Digit2 + '0' Current_Temp_Display_Buffer 7 = Display_Digit3 + '0' /高位为

23、0时不显示 if (Diplay_Digit3 = 0) Current_Temp_Display_Buffer7 = ' ' /高位为0且次高位为0时,次高位不显示 if (Display_Digit2 = 0 && Display_Digit3 = 0) /负数符号显示在恰当位置 if (ng) if (Current_Temp_Display_Buffer8 = ' ') Current_Temp_Display_Buffer8 = '-' else if (Current_Temp_Display_Buffer7 = &#

24、39; ') Current_Temp_Display_Buffer7 = '-') else (Current_Temp_Display_Buffer6 = '-' /在第一行显示标题 Set_LCD_POS(0x00); for(i = 0; i<16; i+) Write_LCD_Data( Temp_Disp_Titlei ); /在第二行显示当前温度 Set_LCD_POS(0x40); for(i = 0; i<16; i+) Write_LCD_Data(Current_Temp_Display_Bufferi ); /显示温度

25、符号 Set_LCD_POS(0x4D); Write_LCD_Data(0x00); Set_LCD_POS(0x4E); Write_LCD_Data('C');/-/T0定时器控制电动机正/反转,并输出PWM信号控制转速/-Void T0_INT() interrup 1 TH0 = -50000/256; TL0 = -50000%256; Read_Temperature(); /读取温度 if ( !DS18B20_IS_OK )return; /读错时退出 /读取正常且温度发生变化则刷新显示 if (Temp_Value0 != Back_Value0 | Temp_Value1 != Back_Value1 ) Back_Temp_Value0 =Temp_Value0; Back_Temp_Value1 =Temp_Value1; Disply_Temperature(); /75或0时,电动机全速转动,占空比为100%. if (Signed_Temp75 ) Sig

温馨提示

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

评论

0/150

提交评论