ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:192.73KB ,
资源ID:5415957      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5415957.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温度传感器控速.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

温度传感器控速.docx

1、温度传感器控速温控调速系统学生姓名: 华滨 江义 徐鹏 院 系: 电气信息学院 专业班级: 过程自动化 日 期: 2011.7.15 目 录一、 概述. . 3二、总体设计. . 32.1、系统组成. . 32.2、软件设计. . 4三、软件流程图. . 6四、硬件电路设计. . 7 4.1 控制电路模块. . . 7 4.2 温度传感器模块. .7 4.3 液晶显示模块. 8 4.4电机驱动模块. . 9 4.5稳压电源模块. . 10五、中断函数以及主程序的主要部分. 11一:概述本设计基于51单片机控制系统。系统由温度检测模块、液晶显示模块、电机驱动模块等组成。温度传感器18b20从空气

2、中感应并采集温度数据,传给控制系统进行处理,控制系统通过分析处理,根据温度的变化来改变产生的脉冲的占空比,从而实现对电机转速的控制。电机驱动电路则和传统的H桥驱动有所不同,系统采用分离元器件(MOS管)构成电机驱动电路。并且系统通过控制1602液晶显示屏对空气中的实时温度和电机驱动信号占空比进行显示。二:总体设计:2.1 系统组成系统以stc89c51单片机为控制核心,外围连接液晶显示模块、温度检测模块、电机驱动模块、电源模块。系统框图如下:2.2 软件设计电机的转速受其所接受的脉冲信号的控制,占空比越大,转速也就越快.目前最常用的脉冲调制方法为PWM. PWM简称为脉宽调制,它是利用微处理器

3、的数字输出来对模拟电路进行控制的一种非常有效的方法.但PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有,要么完全没有.图1为PWM降压斩波器的原理电路及输出电压波形。在图1a中,假定晶体管V1先导通T1,秒(忽略V1的管压降,这期间电源电压Ud全部加到电枢上),然后关断T2秒(这期间电枢端电压为零)。如此反复,则电枢端电压波形如图1b中所示。电动机电枢端电压Ua为其平均值。图1 PWM降压斩波器原理电路及输出电压波形a) 原理图 b)输出电压波形 (3)式(3)中 (4)为一个周期T中,晶体管V1导通时间的比率,称为负载率或占空比。使用下面三种方法中的任何一种,都可以改

4、变的值,从而达到调压的目的: (1)定宽调频法:T1保持一定,使T2在0范围内变化; (2)调宽调频法:T2保持一定,使T1在0范围内变化(3)定频调宽法:T1+T2=T保持一定,使T,在0T范围内变化。 考虑到频率变化电机的转速会产生影响,本系统采用定频调宽法,具体就是采用定时器方式获得PWM信号. 如下图,定时10us产生一次中断,每次中断根据当前的温度改变占空比.开始时初始化1602和18b20,显示当前温度以及预设的占空比,因为18b20在转换温度时不能中断,否则温度结果出现错误,所以在转换温度前应关闭EA,转换完毕后再开EA.然后把温度划分为几个区域,当温度落在一个区域时就对应一个占

5、空比,这样在下一个中断时就能输出特定占空比的脉冲,实现PWM对直流电机的转速控制.三:软件流程图四:硬件电路设计:4.1 控制电路模块 系统是基于stc89c51单片机设计而成。由于系统只对简单的温度传感器电路采集数据进行处理并且控制1602液晶屏的显示和产生电机的驱动信号,所以8位的51系列单片机能够满足系统的需求。且51单片机应用广泛、价格低廉。因此,我们选择stc89c51单片机作为系统的处理器。控制电路还连接了一些必要的外围设备,如LED灯显示、程序下载电路等。 程序下载电路4.2 温度检测模块:采用温度传感器DS18B20,DS18B20数字温度计提供 9 位(二进制)温度读数 指示

6、器件的温度 信息经过单线接口送入DSl8B20或从DSl8B20送出因此从主机CPU到DSl8B20仅需一线(和地线) DSl8B20的电源可以由数据线本身提供而不需要外部电源.。DSl8B20 的测量范围从-55 到+125 增量值为 0.1 可在 l s(典型值)内把温度变换成数字。图表 9 DS18B20与单片机的接口示意图4.3 液晶显示模块:设计采用1602液晶显示屏。1602能显示16字*2行,本设计中1602显示温度传感器检测的环境中的温度和系统将温度处理后为电机驱动提供的方波的占空比。通过屏幕显示的占空比能够间接的感知电机的转速快慢。图表 12 液晶显示器1602与单片机接口电

7、路示意图 在上图中,PA4用来控制对1602进行数据输入或者指令输入,指令输入可以对1602内部的一些控制寄存器进行赋值,数据输入是把需要显示的数据传输至1602的存储器中。PA5用来控制对数据、指令的写或读。PA6作为使能端,当出现一个正脉冲时,1602将执行指令。P20P27则作为数据传输线,完成单片机与1602的数据交换。15、16端口则是1602的背光电源正负端。4.4 电机驱动模块:本设计采用的传统小型直流电机,当给一定的PWM信号时就可以驱动它转动。驱动电路则采用由MOS管所组成的H桥来组成,由PWM信号来控制MOS管的开启与关闭,这样可以提供一定功率的脉冲信号。当两路信号同时跳变

8、时,会使两个MOS管都导通,所以需要在一边加上一个延时,这样可以减缓MOS管的发热情况。通过实验我们明白了有两种方案能改变它的转速:第一种是通过增加它的电压来改变降落在它上面的功率。所加的电压值越高,会导致MOS管发热明显增强,因此我们只采用7v左右的直流电池供电,测试效果也不错。另一种是通过软件调整PWM信号的占空比,这样也可以明显的加速电机的转速。我们就是通过实时监测温度传感器的温度来给电机一个固定的占空比,从而控制电机的转速。其具体电路图如下:4.5 电源模块:为了保证整个控制系统和个模块能够正常的工作,在电源供电方面采用+5V的稳压电源为个模块电路供电。三端稳压IC78系列组成的稳压电

9、源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。首先由变压器将220V交流电变为9V的交流电,通过整流和滤波后,输出电压稳定在9V左右,最后经过7805三端稳压器件稳压,使输出电压恒定在5V左右。为了防止外围电路对电源的输出造成影响,所以在整流桥后连接一个大容量的电容,使电源更加稳定。五:中断函数以及主程序的主要部分void time0() interrupt 1 if(pwmh=0) pwm=0; else if(pwmh=10) pwm=1; else if(count+=pwmh) pwm=0; if(count=10) count=0;

10、 void main() unsigned char i; unsigned char code wel=dutyfactor : 0%; unsigned char code well=Now Temp :; unsigned char code digit10=0123456789;/定义字符数组显示数字 pwm=0; init_1602(); write_com(0x80+0x00); for(i=0;i16;i+) write_data(weli); write_com(0x80+0x40); for(i=0;i10;i+) write_data(welli); write_com(0

11、x80+0x4c); write_data(.); write_com(0x80+0x4e); write_data(0xdf); write_data(0x43); TMOD=0X02; TL0=255; TH0=255; count=0; TR0=1; ET0=1; pwmh=2; while(1) EA=0; ReadyReadTemp(); /读温度准备 TL=ReadOneChar(); /先读的是温度值低位 TH=ReadOneChar(); /接着读的是温度值高位 EA=1; TN=TH*16+TL/16; /实际温度值=(TH*256+TL)/16,即:TH*16+TL/16/

12、这样得出的是温度的整数部分,小数部分被丢弃了 TD=(TL%16)*10/16; /计算温度的小数部分,将余数乘以10再除以16取整, /这样得到的是温度小数部分的第一位数字(保留1位小数) k=(TN%100)/10; /取十位 l=TN%10; /取个位 write_com(0x80+0x4a); write_data(digitk); write_data(digitl); write_com(0x80+0x4d); write_data(digitTD); if(k*100+l*10+TD=300) pwmh=2; else if(k*100+l*10+TD=305) pwmh=3; else if(k*100+l*10+TD=310) pwmh=4; else if(k*100+l*10+TD=315) pwmh=5; else if(k*100+l*10+TD=320) pwmh=6; else if(k*100+l*10+TD=325) pwmh=7; else if(k*100+l*10+TD=330) pwmh=8; else if(k*100+l*10+TD=335) pwmh=9; write_com(0x80+0x0d); write_data(digitpwmh);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1