基于单片机的温度控制电机转速课程设计_第1页
基于单片机的温度控制电机转速课程设计_第2页
基于单片机的温度控制电机转速课程设计_第3页
基于单片机的温度控制电机转速课程设计_第4页
基于单片机的温度控制电机转速课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1引言.22设计要求 .22.1设计目的 .22.2基本要求 .33方案设计 .33.1温度传感器方案论证 .33.1.1方案一 .33.1.2方案二 .33.2总体设计框图 .34硬件设计 .44.1单片机系统 .44.2数字温度传感器模块 .54.2.1DS18B20性能 .64.2.2DS18B20外形及引脚说明 .64.2.3DS18B20接线原理图 .64.2.4DS18B20时序图 .64.2.5数据处理 .84.3 L298电机驱动模块 .94.4 LCD显示电路模块 .95 应用软件介绍 .105.1Proteus 仿软真件的介绍 .105.2Keil 软件 .116软件设

2、计 .106.1主程序模块 .106.2读温度值模块 .116.3中断模块 .136.4仿真模块 .147源程序 .1 68总结.19参考文献: .2011 引言随着人们生活水平的不断提高, 单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的, 各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中温度控制电机转速就是利用单片机实现的典型实例。测量温度时使用数字温度计,其与传统的温度计相比,具有读数方便、测温范围广、测温精确、 功能多样话等优点。 其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用 STC8

3、9C51单片机作控制器,数字温度传感器 DS18B20测量温度,单片机接受传感器输出,经处理用 LCD实现温度值显示。 电机由 L298 电机驱动芯片控制,实现电机的正反转和加速减速 .2 设计要求2.1 设计目的设计一个基于温度的电动机转速控制电路, 在相应的软件控制下可以完成要求的功能,即外部温度大于 65C 时,直流电动机在 L298 驱动下加速正转,温度大于 75C 全速正转,当外部温度小于 0C 时电动机加速反转,温度小于 -10C 时电动机全速反转。温度回到 0C-65C时电动机逐渐停止转动。 在液晶显示屏 1602LCD 上显示当前的温度值。2.2 基本要求控制电机正反转即加速减

4、速 ,实现实时温度显示,测温范围 -55 1280C,误差 50C 以内。画出基于温度的电动机转速控制电路的原理图 ,通过仿真软件来检测所写程序实现功能的正确与否 .23 方案设计3.1温度传感器方案论证3.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样, 进行 A/D 转换后就可以用单片机进行数据处理, 实现温度显示。这种设计需要用到 A/D 转换电路,增大了电路的复杂性, 而且要做到高精度也比较困难。3.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用 DS18B20 数字温度传感器, 此传感器为单总线数字温度传感器

5、, 起体积小、 构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理, 即可实现温度显示。另外 DS18B20具有 3 引脚的小体积封装,测温范围为 -55+125 摄氏度,测温分辨率可达 0.0625 摄氏度,其测量范围与精度都能符合设计要求。以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求, 故本设计采用方案二。3.2总体设计框图本方案设计的系统由单片机系统、 DS18B20数字温度传感器、 LCD温度显示模块、 L298 电机驱动模块、电机组成,其总体架构如下图 1。测温电路单L298电机驱动电机转动电路片机

6、LCD温度显示电路时钟、复位电路图 1 系统总体方框图34 硬件设计4.1 单片机系统1. 本设计采用 STC89C52单片机作为控制器,完成所有功能的控制,包括:DS18B20数字温度传感器的初始化和读取温度值LCD显示驱动与控制L298 电机驱动芯片驱动电机温度值的存储和读取2. 单片机系统电路原理图:4图 2 单片机系统原理图4.2 数字温度传感器模块4.2.1 DS18B20 性能独特的单线接口仅需一个端口引脚进行通信简单的多点分布应用无需外部器件可通过数据线供电零待机功耗测温范围 -55+128,以 1递增可编程的分辨率为912 位,对应的可分辨温度分别为0.5 、0.25 、 0.

7、125 和 0.0625 温度数字量转换时间 200ms,12 位分辨率时最多在 750ms内把温度转换为数字应用包括温度控制、工业系统、消费品、温度计和任何热感测系统负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作54.2.2 DS18B20 外形及引脚说明图 3 DS18B20外形及引脚GND:地DQ:单线运用的数据输入 / 输出引脚VD:可选的电源引脚4.2.3 DS18B20 接线原理图单总线通常要求接一个约 4.7K 左右的上拉电阻,这样,当总线空闲时,其状态为高电平。图 4 DS18B20接线原理图4.2.4 DS18B20 时序图主机使用时间隙来读写DS18B20

8、的数据位和写命令字的位。1. 初始化时序如下图:6图 5 DS18B20 初始化时序2. DS18B20读写时序:图 6 DS18B20读写时序74.2.5 数据处理高速暂存存储器由9 个字节组成,其分配如表5 所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第 0 和第 1 个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。图 7 字节分配下表为12 位转化后得到的12 位数据,存储在18B20 的两个8 比特的RAM 中,二进制中的前面5 位是符号位,如果测得的温度大于0, 这 5 位为 0,只要将测到的数值乘于0.0625 即可得到实际

9、温度;如果温度小于0,这 5 位为 1,测到的数值需要取反加1 再乘于 0.0625 即可得到实际温度。例如 +125的数字输出为07D0H,实际温度 =07D0H*0.0625=2000*0.0625=125 。例如 -55的数字输出为FC90H,则应先将11 位数据位取反加1 得 370H(符号位不变,也不作运算),实际温度 =370H*0.0625=880*0.0625=55 。可见其中低四位为小数位。图 8 DS18B20温度数据表84.3 关于 L298 电机驱动芯片的简介L298 是 ST公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46

10、V;输出电流大,瞬间峰值电流可达3A ,持续工作电流为2A;内含两个H 桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。4.4 显示电路LCD显示简单明了,可以直接读出温度值。图 9 LCD 驱动显示电路95 应用软件介绍5.1Proteus仿软真件的介绍Proteus 是一款 Labcenter 出品的电路分析实物仿真系统, 可仿真各种电路和IC,并支持单片

11、机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点:(1)全部满足我们提出的单片机软件仿真系统的标准, 并在同类产品中具有明显的优势。(2)具有模拟电路仿真、 数字电路仿真、 单片机及其外围电路组成的系统的仿真、 RS一 232 动态仿真、 1 C 调试器、 SPI调试器、键盘和 LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单片机类型有:68000 系列、8051 系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、 Z80 系列、 HC11 系列以及各种外围芯片。 支持大量的存储器和外围芯片。总之该软件是一款集

12、单片机和 SPICE分析于一身的仿真软件, 功能极其强大 ,可仿真 51、AVR、 PIC。5.2 Keil软件Keil C51是美国 Keil Software公司出品的 51 系列兼容单片机 C语言软件开发系统,与汇编相比, C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C 来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高, 多数语句生成的汇编代码很紧凑, 容易理解。在开发大型软件时

13、更能体现高级语言的优势。6 软件设计6.1主程序模块主程序流程图:10主程序流程图6.2读温度值模块读温度值模块需要调用4 个子程序,分别为:DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作DS18B20写字节子程序:对 DS18B20发出命令DS18B20读字节子程序:读取 DS18B20存储器的数据延时子程序:对 DS18B20操作时的时序控制1. 读温度值模块流入口DS18B20 初始化11跳过读序列号启动温度转换返回读温度值子程序流程图2. DS18B20初始化子程序流程图:入口DQ 置高电平稍延时DQ复位 0延时 >480msDQ 拉高电平延时 15

14、60msDQ 为低电平?NY返回DS18B20初始化子程序流程图3. DS18B20写字节和读字节子程序流程图:12DS18B20写字节子程序流程图DS18B20读字节子程序流程图6.3中断模块中断采用 T0 方式 1,初始值定时为50ms。中断模块需调用两个子程序:读温度值子程序:定时读取温度值,实时更新温度值记录温度值子程序:定时记录温度值,供查询使用把这两个子程序放在中断的原因是, 不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。中断模块流程图:13中断入口定时器重置初值计数值加 11 秒?Y读温度值N记录温度值中断返回中断模块流程图6.3 中断模块仿真图1465 -

15、1250 - 6535 - 0157 源程序#include<reg51.h>#include<intrins.h>#include<stdio.h>#define INT8U unsigned char#define INT16U unsigned intextern INT8U Temp_Value;extern INT8U read_Temperature();extern void delay_ms(INT16U x);extern void LCD_Initialise();extern void LCD_ShowString(INT8U,INT8

16、U,INT8U*) reentrant;sbit MA=P10;sbit MB=P11;sbit PWM1=P12;INT8U Back_Temp_Value=0xFF,0XFF;char Temp_Disp_Buff17;float f_Temp=35.0;void T0_INT()interrupt 1static INT8U t_Count=0;TH0=(INT16U)(-11.0592/12*500)/ 256;TL0=(INT16U)(-11.0592/12*500)%256;if(+t_Count=100)t_Count=0;if(Read_Temperature() )if(Te

17、mp_Value0!=Back_Temp_Value0|Temp_Value1=Back_Temp_Value1)Back_Temp_Value0=Temp_Value0;Back_Temp_Value1=Temp_Value1;f_Temp=(int)(Temp_Value1<<8|Temp_Value0*0.0625;sprintf(Temp_Disp_Buff,"TEMP:%5.1fxDFx43",f_Temp);LCD_ShowString(1,0,Temp_Disp_Buff);if (f_Temp>=75) f_Temp=75;if(f_Tem

18、p<=0) f_Temp=0;if(f_Temp>=45)MA=1;MB=0;16#include<reg51.h>#include<intrins.h>#include<stdio.h>#define INT8U unsigned char#define INT16U unsigned intextern INT8U Temp_Value;extern INT8U read_Temperature();extern void delay_ms(INT16U x);extern void LCD_Initialise();extern void

19、LCD_ShowString(INT8U,INT8U,INT8U*) reentrant; sbit MA=P10;sbit MB=P11;sbit PWM1=P12;INT8U Back_Temp_Value=0xFF,0XFF;char Temp_Disp_Buff17;float f_Temp=35.0;void T0_INT()interrupt 1static INT8U t_Count=0;TH0=(INT16U)(-11.0592/12*500)/ 256;TL0=(INT16U)(-11.0592/12*500)%256;if(+t_Count=100)t_Count=0;if

20、(Read_Temperature()if(Temp_Value0!=Back_Temp_Value0|Temp_Value1!=Back_Temp_Value1)Back_Temp_Value0=Temp_Value0;Back_Temp_Value1=Temp_Value1;f_Temp=(int)(Temp_Value1<<8|Temp_Value0)*0.0625;sprintf(Temp_Disp_Buff,"TEMP:%5.1fxDFx43",f_Temp);LCD_ShowString(1,0,Temp_Disp_Buff);bit tmpread

21、bit(void)uint i;bit dat;DS=1;DS=0;i+;i+;DS=1;i+;17dat=DS;i=8;while(i>0)i-;return (dat);uchar tmpread(void)uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tmpreadbit();dat=(j<<7)|(dat>>1);return(dat);void tmpwritebyte(uchar dat)uint i;uchar j;bit testb;for(j=1;j<=8;j+)testb=dat&0x01;da

22、t=dat>>1;if(testb)/write 1DS=0;i+;i+;DS=1;i=8;while(i>0)i-;elseDS=0;i=8;while(i>0)i-;/write 0DS=1;i+;i+;if (f_Temp>=75) f_Temp=75;if(f_Temp<=0) f_Temp=0;if(f_Temp>=45)18MA=1;MB=0;if(f_Temp=45) PWM1=0;delay_ms(30);return; elseif(f_Temp=75) PWM1=1;delay_ms(30);return;PWM1=1;delay_ms(f_Temp-45); PWM1=0;delay_ms(75-f_Temp);else if(f_Temp<=10)MA=0;MB=1;if (f_Temp=10)PWM1=0;delay_ms(10);return;elseif(f_Temp=0)PWM1=1;delay_ms(10);return;PWM1=1;delay_ms(10-f_Temp);PWM1=0;dela

温馨提示

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

评论

0/150

提交评论