版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目目 录录1 引言引言.42 方案设计方案设计.52.1 系统整体设计.52.2 方案论证.52.2.1 温度传感器的选择.62.2.2 红外探测的选择.62.2.3 控制核心的选择.62.2.4 显示器件的选择.72.2.5 调速方式的选择.72.2.6 驱动方式选择.83 硬件设计硬件设计.8系统各器件简介.83.1.1 单线程数字温度传感器DS18B20 .83.1.2 AT89S52单片机简介.93.1.3 桥式驱动电路L298N简介.103.1.4 LCD1602简介.113.2 各局部电路设计.123.2.1 开关复位与晶振电路.123.2.2 独立控制键盘电路.133.2.3 L
2、CD显示电路.13.133.2.5 温度采集电路.143.2.6 风扇驱动电路.144 软件设计软件设计.15主程序流程图.154.2 液晶显示子程序.174.3 DS18B20 温度传感器子程序.19 温度读取程序.194.3.2 温度处理程序.214.4 键盘扫描子程序.234.5 温度比拟处理子程序.244.6 电机控制程序包含红外探测.264.7 软件设计中的问题与分析.284.7.1 LCD显示程序的问题.284.7.2 DS18B20的显示程序问题.285 硬件调试硬件调试.295.1 按键电路的调试.295.2 温度传感器电路的调试.295.3 电机电路的调试.295.4 红外感
3、应电路的调试.295.5 硬件调试遇到的问题.296 结论结论.29参考文献参考文献.30基 基于单片机的智能风扇控制 南京 210044 摘要:摘要:风扇是人们日常生活中必不可缺的工具,尤其是在夏天,因其价格廉价,用电量较之空调有很大优势,故在中国还有较大市场。本文将以 AT89S52 为主控芯片,辅以 DS18B20 温度传感器,结合红外探测装置,来实现一种智能温控电扇的设计。此风扇通过液晶显示器来显示温度和风速,配备 2 个温度设定按键,由 DS18B20 读取外界温度,红外探头探测是否有人,通过设定的温度配合程序来调节风速,最后通过 L298N 来驱动电机。经过调试,风扇可以按照温度智
4、能变速,无人自动关闭,实现了智能温控的目标。关键词:关键词:DS18B20;AT89S51;红外探头;液晶显示器 1602;L298N Smart fan control based on MCUWang XueleiNUIST,Nanjing 210044,ChinaAbstract:The fans is an indispensable tools in peoples daily life , especially in the summer. because their price is cheap and their electricity consumption has a gr
5、eat advantage compared with air-conditioning, so they have a large market so far in China. This article will use AT89S52 as the main chip and combined with DS18B20 temperature sensor, infrared detection device, to achieve an intelligent temperature control fan design. This fan through the LCD displa
6、y to show the temperature and wind speed, we can set temperature by two buttons. At the same time,the DS18B20 read the outside temperature ,infrared sensor to detect whether someone and analyse the above datas by AT89S52 to adjust the wind speed by setting the temperature with the program, and final
7、ly through L298N to drive the motor. After debugging, the intelligent fan can be in accordance with the temperature intelligent control and automatic shut in the environment with nobody to achieve the goal of intelligent temperature control.KeyKey word:word: DS18B20; AT89S51; infrared probe; LCD Mon
8、itor 1602; L298N1 引言电扇是人们日常生活中常用的降温工具,从开始的吊扇到现在的 USB 风扇,无处不见电扇的踪迹。虽然如今空调已经走进千家万户,但是作为一种节能环保,并且廉价简单的降温工具,电扇还在很多家庭生活中发挥着自己独特的作用。但也随着人们要求的多样化和科学技术的进步,各种多功能的智能风扇在市场上暂露头角并逐渐取代传统风扇。在产品智能化过程中单片机因为其智能化程度高,控制精度高,操作简单,廉价易得,抗干扰能力强等特点,在产品中得到了很好的应用。为提高风扇的市场竞争力,使之在技术含量和人性设计上有所提高,满足现在人们对智能化的要求和人性化的要求。大学四年即将结束,为了检验
9、自己的学习情况,我决定使用之前所学习到的硬件知识结合相关的软件根底来制作一个基于 51 单片机的智能温控风扇,该风扇具有随温度自动调节风速的功能,并且在无人时可以自动关闭,并且可以让使用者依据自身对温度的敏感程度要求来设定基准温度,从而实现了人性化与智能化的双重目标。2 方案设计2.1 系统整体设计本设计的整体思路是:利用温度传感器 DS18B20 来检测环境温度,并依据 DS18B20 的功能特性直接输出数字温度给 51 单片机进行处理,并将实时温度、设置温度、风速显示在 LCD1602 上。用 2 个可调按键辅助设置温度,一个用于提高设置温度,一个那么用来降低设置温度,设置温度只能是整数型
10、式,检测到的环境温度可以精确到小数点后一位。本系统还配备一个红外探头,用于探测出风范围内是否有人,假设在无人的情况下那么自动关闭风扇。否那么在开启电风扇的情况下同时采用单片机模拟 PWM 脉宽调制方式来改变直流电扇电机的转速。系统整体结构框图 1 所示:AT89S52独立键盘LCD1602红外探头DS18B20复位L298N直流电机晶振图图1整体系统结构图整体系统结构图2.2 方案论证本设计要求实现在温度变化的情况下直流电机风扇的转速随之改变,并且能够在无人的情况和温度低于设定温度的时候自行停止,因此需要较高的温度分辨率和稳定的探测工具以及可靠的电机控制部件。2.2.1 温度传感器的选择在本设
11、计中,温度传感器的选择方案有以下两种:方案一:采用热敏电阻。热敏电阻的特性就是阻值可以随温度随之变化,采用热敏电阻作为检测温度的核心部件,然后通过放大电路进行信号放大,再将放大后微弱电压变化信号通过 ADC0809 进行模数转换,将其转化成数字信号并输入单片机处理。方案二:单总线数字温度计 DS18B20。DS18B20 数字温度传感器直接把温度转换为数字量,单片机可以直接读取。对于方案一,如假设采用热敏电阻作为温度采集元件,那么价格方面比拟廉价且元件易得,但是热敏电阻的缺点也是显而易见,对于温度细微变化该元件反响不敏感,而且在后续的放大和转换电路中还会造成采集数据的失真和误差,并且热敏电阻的
12、变化曲线为非线性,每个热敏电阻都不同,还需要单独测试描绘出每个热敏电阻的曲线,虽然可以通过软件方法来实现对该元件误差的修正,但是这会使得电路的复杂性增加,并且在人体所在的实际环境中难以检测到细微较小的温度变化。所以这个方案在本设计中难以胜任。对于方案二,DS18B20 温度传感器的测量范围从-55至+125,因此人体所处的环境温度包括在其中,且该传感器分辨率较高,对温度变化反响灵敏,获取的温度误差小。DS18B20 的一大优势是其能将收集到温度值在自己的器件内部就直接转化成数字信号输出,从而大大简化了系统设计,同时由于该温度传感器采用了明了的单总线技术,使得它的接口与相应的单片机接口变得非常简
13、洁,同时使系统的抗干扰能力也得到了显著的提高,所以本系统采用这个方案。2.2.2 红外探测的选择方案一:热释电红外探测模块。作为一款应用广泛的红外探测模块,具有高灵敏度,可靠性强,工作电压低等特点,在各种场合被广泛使用。但是该模块的使用环境要求应尽量防止流动的风,具有流动的风的环境会对该感应器造成干扰。因此该模块与本设计所需环境有冲突,所以方案一不适用。方案二:对射式光电开关。对射式光电开关是由一红外线发射管与一红外线接收管配对组成使用的一款光电开关。该开关在电路中作用是通过光来传播电路,当红外线发射管跟接受管间有物体阻挡时,电路便会停止工作。利用这个特性,系统就能判断所影响的环境中是否有人,
14、与本系统设计没有任何冲突,所以就采用这种方案。2.2.3 控制核心的选择本设计采用 AT89S52 单片机作为系统的控制核心,通过软件编程的方法对温度的进行实时检测与判断,并在 I/O 口上输出控制信号,进而控制电机工作。AT89S52 是一种低功耗,高性能 CMOS8 位微处理器,具有 8K 在系统可编程 AT89S523 引脚图 DIP 封装 Flash 存储器。片内含 8K 字节的只读程序存储器 ROM 和256 字节的随即数据存储器 RAM,兼容标准 MCS-51 指令系统并使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令与引脚完全兼容。片上 Flash
15、 允许程序存储器在系统可编程,也同样适用于常规编程器,价格廉价,与本系统的设计相符合。2.2.4 显示器件的选择方案一:LED 共阴极数码显示管。方案二:LCD 液晶显示屏 1602。对于方案一,数码管具有本钱低,功耗小,可视距离较远等特点,同时显示温度的程序也相对简单,因此这种显示方式在很多场合得到了广泛应用。但是它采用的显示方式是通过动态扫描,然后逐个点亮各个 LED,因此会产生闪烁,在本设计这个温度实时变化的环境中闪烁可能太快,数据可能不能很好的显示出来,故此方案不采用。对于方案二,液晶显示屏显示字符清晰,自带背光,还能显示符号,并且不会不断闪烁,显示性能一流,并且考虑到此设计不只是要显
16、示温度,还要显示电机和红外的状态,所以从设计完善的角度来考虑,选择此方案更有优势。2.2.5 调速方式的选择方案一:采用数模转化芯片 DAC0832 来控制,有单片机根据当前环境温度输出数值到 DAC0832 中,再由 DAC0832 产生相应的模拟信号控制晶闸管的导通角,从而采用无级调速电路实现电扇电机转速的调节。方案二:采用单片机软件模拟 PWM 调速的方法。PWM 是一种按照一定的规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调节方式,在 PWM 驱动控制的调节系统中,最常用的是矩形波 PWM 信号,在控制时调节 PWM 波的占空比。占空比是指高电平在一个周期时间内的百分比。在控制
17、电机的转速时,占空比越大,转速就越快,假设全为高电平时占空比为 100%,此时转速到达最大2。用单片机的 I/O 口输出 PWM 信号时,有如下三种方法:1利用软件延时。当高电平延时时间到时,对 I/O 口电平取反,使其变成低电平,再延时一定时间,反之在低电平延时到时,对 I/O 口电平取反,如此循环即可得到 PWM 信号。本设计就是采用了这种方法。2利用定时器。控制方法与1相同,只是在该方法中利用单片机的定时器来进行上下电平的转变,而不是利用软件的延时。应用此方法时编程相对复杂,故不予以采用。3利用单片机自带的 PWM 控制器。STC 系列单片机自带 PWM 控制器,但本系统使用的 AT89
18、 系列单片机没有此功能,所以不能使用。对于方案一,该方案能实现对直流电机的无级调速,速度变化灵敏,但是 D/A 转换芯片价格较高,性价比不高,不采用。对于方案二,相对于其他方案来说,采用软件模拟 PWM 实现调速的过程,具有个高的性价比与灵活性,充分的发挥了单片机自身的性能,对本系统的实现又提供了一条有效的途径。所以综合考虑还是选择方案二的第一种。2.2.6 驱动方式选择方案一:达林顿反向驱动器 ULN2803。2 蓝厚荣.单片机的 PWM 控制技术J .工业控制计算机,2021,233:9798方案二:电桥驱动电路 L298N。对于方案一,作为一款反向驱动器,ULN2803 应用广泛,驱动效
19、果也很好,与 TTL 信号兼容性很好,但是在后续的硬件电路中表现不佳,风扇转速改变不明显,而且在最高档出现断档的情况,风扇不转,在修改硬件电路,修改程序后依旧效果不佳,驱动力明显缺乏,故方案一中途停用。对于方案二,由于之前已经有使用过,对 L298N 这个桥式驱动模块的应用上手快速,驱动能力也比ULN2803 好很多,驱动风扇 5 档变速的实际效果明显,故采用方案二。3 硬件设计系统主要器件包括温度传感器 DS18B20、AT89S51 单片机、液晶显示屏 LCD1602、桥式驱动模块L298N、对射式光电开关开关和风扇。辅助元件包括电容电阻、晶振、电源、按键、变压器等。系统各器件简介3.1.
20、1 单线程数字温度传感器DS18B20 本系统的温度采集使用 DS18B20 数字温度传感器。DS18B20 是一种具有单总线接口的数字温度传感器,具有体积小,功耗低,抗干扰能力强和单片机借口简单等优点。DS18B20 的工作电压范围是 3.05.5V,测量温度范围55125其特性如下:1. 单总线接口。与单片机连接时只需要单片机的的一个 I/O 口,该单总线能够实现单片机与 DS18B20 的双向通信。同时该器件除上拉电阻外,不需要任何外围器件支持。2. 可使用数据线供电。当对系统空间要求严格时,DS18B20 可以通过数据线供电。3. 。当使用 9 位数据分辨率时,DS18B20最快可在
21、93.75ms 内完成温度转换,当使用 12 位数据分辨率时。最快可在 750ms 内完成温度转换。4. 多点组网测量功能。多个 DS18B20 可以通过同一根数据线组成分布式测量网3。 图图2温度传感器温度传感器DS18B203 刘波文,刘向宇,黎胜容.51 单片机 C 语言应用开发三位一体实战精讲M.1691703.1.2 AT89S52单片机简介 AT89S52是一种低功耗,高性能CMOS8位微处理器,具有8K在系统可编程AT89S523引脚图DIP封装Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令与引脚完全兼容。片上Flash允许程序存储器在
22、系统可编程,也同样适用于常规编程器。在单芯片上,拥有灵巧方便的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活,超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM,定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中
23、断或硬件复位为止。P0 口:P0口是一个8位漏极开关的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。在Flash编程时,p0口也用来接受指令字节;在程序效验时,输出指令字节。程序效验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL逻辑电平。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入P1.0/T2和定时器/计数器2 的触发输入P1.1/T2EX。 在fl
24、ash编程和校验时,P1口接收低8位地址字节。引脚号第二功能:P1.0 T2定时器/计数器T2的外部计数输入,时钟输出P1.1 T2EX定时器/计数器T2的捕捉/重载触发信号和方向控制P1.5 MOSI在系统编程用P1.6 MISO在系统编程用P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动AT89S52引脚图 PLCC封装4 个 TTL 逻辑电平。对P2 端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。 在访问外部程序存储器或用16位地址读
25、取外部数据存储器例如执行MOVX DPTR 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址如MOVX RI访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。 P3口亦作为AT89S52特殊功能第二功能使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。端口引脚第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外
26、中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。图 3AT89S52 脚图 DIP 封装3.1.3 桥式驱动电路L298N简介本系统要用单片机控制风扇直流电机,需要加驱动电路,为直流电机提供足够大的驱动电流,并能在模拟 PWM 波的情况下实现风扇转速的改变。在本系统驱动电路中,选用桥式驱动电路 L298N 来驱动风扇直流电机。L298N 在使用时接口简单,操作方便,可为电机提供稳定的驱动电流,可以同时
27、驱动两台直流电机,可以在模拟 PWM 波的情况下很好的输出信号,实现风扇转速的平滑改变。L298N 是专用驱动集成电路,属于 H 桥集成电路,与 L293D 的差异是其输出电流增大,功率增强。其输出电流为 2A,最高电流 4A,最高工作电压 50V,可以驱动感性负载,如大功率直流电机,(二相、三相、四相)步进电机,伺服电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。模块接口说明:+5V:芯片电压5V。VCC:电机电压,最大可接 50V。GND:共地接法。EN1、E
28、N2:高电平有效,EN1、EN2 分别为 IN1 和 IN2、IN3 和 IN4 的使能端。IN1IN4:输入端,输入端电平和输出端电平是对应的。3.1.4 LCD1602简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式 LCD,目前常用16*1,16*2,20*2 和 40*2 行等的模块。一般 1602 字符型液晶显示器实物如图:图图5LCD1602LCD1602 主要技术参数:显示容量:162 个字符工作电流:2.0mA(5.0V)4.35(WH)mm第 1 脚:VSS 为地电源。第 2 脚:VDD 接 5V 正电源。第 3 脚:VL 为液晶显示器比照度调整端,接正电源时
29、比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影,使用时可以通过一个 10K 的电位器调整比照度。第 4 脚:RS 为存放器选择,高电平时选择数据存放器、低电平时选择指令存放器。第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线。第 15 脚:背光源正极。第 16 脚:背光源负
30、极。图图6对射式光电开关对射式光电开关光电开关 E18 的技术参数:1、输出电流 DC/SCR/继电器 Control output:100mA/5V 供电2、消耗电流 DC25mA3、响应时间 2ms4、指向角:15,有效距离 3-50CM 可调5、检测物体:透明或不透明体6、工作环境温度:-25+557、标准检测物体:太阳光 10000LX 以下 白炽灯 3000LX 以下8、外壳材料:塑料电气特性: U:5VDC I:100mA Sn:3-50CM3.2 各局部电路设计各局部电路设计3.2.1 开关复位与晶振电路单片机系统中,有两个非常重要的电路,一个是开关复位电路,用来对单片机本身和其
31、外部扩展 I/O接口电路进行复位,还有一个是晶振电路,用于产生谐振,使单片机得以工作。电路图如图 7 所示:ABPWM1XTAL218XTAL119ALE30EA31PSEN29RST9P0.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/T115P
32、2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52R110KC120pFC220pFC310uFX1CRYSTALVCC图图7晶振电路与复位电路晶振电路与复位电路单片机的 XTAL1 和 XTAL2 用来外界石英晶体和微调电容,连接单片机内 OSC 的定时反响电路。如下图,当按下按键开关是,系统复位一次。其中电容 C1、C2 为 20pF,C3 为 10uF,电阻 R1 为 10k,晶振为12MHz。3.2.2 独立控制键盘电路本设计还有两个独立按键,分别连接单片机的 P3
33、.2 口和 P3.3 口,如图 8 所示:PWM1XTAL218XTAL119ALE30EA31PSEN29RST9P0.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/A10
34、23P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52R24.7K图图8按键电路按键电路独立按键 S1 和 S2 一端与单片机相连,另一端接地,当按下时,P3 口读取低电平有效。系统上电进入工作后,扫描按键子程序,此时可以设定温度。其中 S1 为加按键,S2 为减按键,每按下一次后,都会使对应的预设值加一或者减一。3.2.3 LCD显示电路本设计采用的是 LCD1602A 作为显示模块,它与单片机的连接如图 9 所示。其中第一行显示温度与红外探测结果,温度显示到小数点后 2 位。第二行显示设定温度与风扇的风力等级。VCC234567891RP1R
35、ESPACK-8D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016LRV110图图9LCD连接电路连接电路3.2.4 红外探测电路红外光电开关一共有三个接口,一个接+5V,一个接地,还有一端与单片机相连,输出高电平或者低电平信号,在电路中直接用按键开关代替了,就是按键电路中的开关 S3。3.2.5 温度采集电路DS18B20 数字温度传感器通过其内部计数时钟周期来的作用,实现了特有的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55相对应的一个基权值。如果计数器计数到 0
36、 时,高温度系数振荡周期还未结束,那么表示测量的温度值高于-55,被预置在-55的温度存放器中的值就增加 1,然后这个过程不断重复,直到高温度系数振荡周期结束为止。此时温度存放器中的值即为被测温度值,这个值以 16 位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿。DS18B20 由于直接可以输出数字信号,所以可以直接输出给单片机,但是需要在输出口上接一个上拉电阻来确保工作,连接图如图 10 所示:VCC47.0DQ2VCC3GND1U2DS18B20R24.7K图图10DS18B
37、20连接电路连接电路3.2.6 风扇驱动电路本设计采用单片机模拟 PWM 波的方式通过 I/O 口输出 TTL 信号,再通过一个电机驱动模块 L298N 来驱动 12V 直流无刷电机工作,从而实现电扇转速的调节。红外探测控制电机开关,键盘改变设置的温度,然后和预设的温度进行比拟,通过软件判断后由单片机的 P3.4 口输出脉冲信号,经由 L298N 驱动风扇直流电机电路,实现电机的启动和转速的改变。当环境温度改变时,电机的转速会按照设定的程序相对进行改变,温度升高转速变快,温度降低,转速变慢,温度过低时自动停止,无人状态下也会自动停止。当有人出现后,并且温度高于预设温度,电机重新开始工作。如图
38、12 所示:AB+12VPWM1IN15IN27ENA6OUT12OUT23ENB11OUT313OUT414IN310IN412SENSA1SENSB15GND8VS4VCC9U3L298D81N914+88.8kRPMC4100nFD11N914D21N914D31N914C5100nF图图11L298N驱动电路驱动电路4 软件设计软件编写有 C 语言和汇编语言两种,这两种语言我都有所了解,两种语言各有特点。C 语言具有编写简单,容易上手的特点,而且看起来条理清晰,便于修改,能够快速准确的找到错误并进行改正。相对于汇编语言,作为一种低级的机器语言,读程序相对繁琐,但程序写好后意思明了,效率
39、也要高于 C 语言编写的程序,具有很好的开发功能。结合自身实际,我还是选择了 C 语言,容易上手,可以更好的调试与编译程序。主程序流程图程序初始主程序开始读取 DS18B20 温度显示温度读取预设温度调用键盘扫描函数显示设定温度判断显示有人/无人显示风速等级与预设温度经行比拟调用电机控制函数有人无人图图12 主程序流程图主程序流程图主程序如下:void main(void) /初始化uint ltemp; /初始化温度dianji=0; /初始化电机int1=0;int2=0;initlcd(); /初始化液晶显示屏read_temp(); /读取测温子程序,读取温度数值delay(1000)
40、; /延时 while(1) /循环开始 delay(2);ltemp=read_temp(); /温度赋值write_com(0 x80+2); /将温度显示到液晶屏 write_data(0 x30+ltemp%10000/1000); write_data(0 x30+ltemp%1000/100); write_data(0 x2e);write_data(0 x30+ltemp%100/10);write_data(0 x30+ltemp%10);write_data(0 xdf);keyscan(); /读取键盘子程序delay(2);write_com(0 x80+0 x40+4
41、); /将设定温度显示到液晶屏write_data(0 x30+set%100/10);write_data(0 x30+set%10);write_data(0 xdf);deal(ltemp/100); /运行温度判断子程序dianjik(); /运行电机控制子程序write_com(0 x80+0 x40+15); /将风扇转速显示到液晶屏write_data(0 x30+h);write_com(0 x80+15); /将红外探测结果显示到液晶屏 write_data(0 x30+r); 4.2 液晶显示子程序液晶 LCD1602 的子程序要按照说明上的时序图来完成。要想让 LCD 显
42、示的话,首先要对 LCD 进行初始化。在完成 LCD 的初始化后,还需要定义字符的位置,并且定义写数据的函数。其第一行的地址是40H4FH,第二行的地址是从 80H8FH,然后才能根据要显示字符的 ASC码对该字符进行显示。其流程图 14 所示:写指令函数位置初始化函数写数据函数数字和字符图图13液晶显示程序流程图液晶显示程序流程图子程序如下:/*初始化函数*void initlcd(void) uint i; E=0;RW=0; RS=0;delay(10);/延时 10mswrite_com(0 x01);/清屏delay(5);write_com(0 x38);/设显示模式delay(5
43、);write_com(0 x0c);/开显示不显光标 光标不闪delay(5);write_com(0 x06);/地址自动加一 光标自动加一delay(5);write_com(0 x80);for(i=0;i16;i+)write_data(table2i); write_com(0 x80+0 x40);for(i=0;i16;i+)write_data(table1i); /*写指令函数*void write_com(uchar command)RS=0;/指令RW=0;/写入P0=command;delay(5);E=1;/允许delay(10);E=0;/*写数据函数*void
44、write_data(uchar dat)RS=1;/数据P0=dat;delay(5);E=1;/允许delay(10);E=0;4.3 DS18B20 温度传感器子程序4.3.1 温度读取程序DS18B20 温度读取程序负责把 DS18B20 测得的外界数据经过 AD 转化为数字,然后将数据存入存放器中,供温度处理程序进行下一步操作。其流程图 15 所示:延迟至少 750ms传感器初始化读取应答信号从 DS18B20 读取一个字节从 DS18B20 写入一个字节输出数据 图图14 DS18B20程序流程图程序流程图子程序如下:/*延时函数*void delayus(uint z)uchar
45、 i;for(i=0;iz;i+);/*将 DS18B20 传感器初始化,读取应答信号*uchar clean_ds18b20()uchar k;/储存 DS18B20 是否存在的标志,k=0,表示存在;k=1,表示不存在dq=1;/先将数据线拉高delayus(5);/延时dq=0;/再将数据线从高拉低,要求保持 480960usdelayus(30);/略微延时,以向 DS18B20 发出一持续 480960us 的低电平复位脉冲 dq=1;/释放数据线将数据线拉高delayus(3);/延时释放总线后需等待 1560us 让 DS18B20 输出存在脉冲k=dq;/让单片机检测是否输出了
46、存在脉冲dq=0 表示存在delayus(25);/延时足够长时间,等待存在脉冲输出完毕return k;/返回检测成功标志/*从 DS18B20 读取一个字节数据*uchar read_ds18b20_date()uchar value,i;/储存读出的一个字节数据for(i=0;i=1;dq=1;/将数据线人为拉高,为单片机检测 DS18B20 的输出电平作准备if(dq)/如果读到的数据是 1,那么将 1 存入 valuevalue|=0 x80;delayus(6);if(!dq) /如果读到的数据是 0,那么将 0 存入 valuevalue|=0 x00;delayus(6);re
47、turn value;/返回读出的十进制数据/*向 DS18B20 写入一个字节数据*void write_ds18b20_date(uchar date)uchar num;for(num=0;num=1;delayus(4); /4usdq=1;/释放数据线delayus(4);/稍作延时,给硬件一点反响时间4.3.2 温度处理程序温度处理程序将上一把操作中读取的温度值进行转换,将二进制数转化为十进制数,然后输出数字,直接交给显示程序显示。其流程图如图 16 所示:等待初始化完成初始化启动温度测量读取高八位和低八位输出十进制整数处理数据等待转化完成图图15温度处理子程序流程图温度处理子程序
48、流程图其子程序如下:/*做好读温度的准备*uint read_temp()uint g,d,m;uint c;m=1;m=clean_ds18b20();/初始化完成 m=0while(m); /等待初始化完成write_ds18b20_date(0 xcc);/跳过 romwrite_ds18b20_date(0 x44);/启动温度测量delayus(100);m=clean_ds18b20();while(m); /等待转化完成write_ds18b20_date(0 xcc);/跳过 romwrite_ds18b20_date(0 xbe);/读数据命令d=read_ds18b20_d
49、ate();/读低 8 位数据g=read_ds18b20_date(); /读高 3 位数据g4); /整数局部g=g*100;d=(d&0 x0f)*0.0625*100; c=g+d;return c; 4.4 键盘扫描子程序本设计配备两个输入按键,分别可以对设定温度进行加减,此子程序用来检测按键输入。流程图 17 所示:判断是否按下扫描按键延时判断是否按下设定温度加一减一图图16键盘扫描流程图键盘扫描流程图子程序如下:/*键盘输入*void keyscan(void)if(key1=0)/判断 key1 是否按下 delay(10);/延时判断 key1 是否按下if(key1
50、=0)set+;/设定温度加 1if(key1=100)set=18;while(!key1);if(key2=0)/判断 key2 是否按下 delay(10);/延时判断 key2 是否按下if(key2=0)set-;/设定温度减 1if(set=0)set=18;while(!key2);4.5 温度比拟处理子程序温控风扇设定 5 个档位,根据温度的变化来变化风扇的转速。输出的型式采用高地电平的交替变换,档位越高,输出高电平的次数越多,相应的输出低点平的次数变少,反之,档位越低,输出的高电平次数越少,相应的输出的高电平的次数变多。低于设定温度时,风扇不转,大于最大挡位时满负荷运转。流程
51、如图 18 所示:读取温度温度比拟风扇不转设置为 1 档设置为 2 档设置为 3 档设置为 4 档设置为 5 档低于设定温度低于设定温度+1低于设定温度+3高于设定温度+7低于设定温度+5低于设定温度+7图图17温度比拟处理流程图温度比拟处理流程图子程序如下:/*温度处理函数*void deal(uint temp) /温度处理if(tempset)&(temp(set+1)&(temp(set+3)&(temp(set+5)&(temp(set+7)/温度高于设定值+7 h=5; l=0;4.6 电机控制程序包含红外探测本设计最终驱动电机的子程序,包含了红外检
52、测。首先进行红外检测判断,假设没有人,电机不转,假设有人,承接上函数设定的档位,模拟 PWM 波输出,一次输出 5 个电平,1 档就输出一个高电平,四个低电平,2 档输出两个高电平,三个低电平,依次类推。流程图如图 19 所示:电机输出模拟 PWM 波开始模拟 PWM 上下电平次数电机不转红外探测是否有人无人有人图图18红外探测电机输出流程图红外探测电机输出流程图子程序如下:/*电机模拟 PWM 控制程序*void dianjik() uchar q;for(q=0;ql&red=0;q+)/红外感应有人,输出设定的低电平次数dianji=0;int1=0;int2=0;r=1; de
53、lay(100); for(q=0;qh&red=0;q+)/红外感应有人,输出设定的高电平次数dianji=1;int1=1;int2=0;r=1;delay(100);for(q=0;ql&red=1;q+)/红外感应没人,不输出dianji=0;int1=0;int2=0;r=0; delay(10); for(q=0;qh&red=1;q+)/红外感应没人,不输出dianji=1;int1=0;int2=0;r=0;delay(10);4.7 软件设计中的问题与分析4.7.1 LCD 显示程序的问题由于 LCD 要显示的数据有四个,温度、档位、红外探测、设定温度
54、,所以如何合理的安排输出顺序很重要,合理的输出顺序才能对应外部正确的表现。每个数据在输出后都要有一定的延时,这样才能清楚的显示在 LCD 屏幕上。由于本程序是基于温度的,所以第一个输出的就是温度值;然后本程序要执行的是温度的比拟,所以第二个输出的必然是设定温度,设定温度还要同时读取键盘程序,实时跟随键盘输入的改变而改变;第三个输出的就是比拟温度后的设定风速了,显示的风速就是档位数;最后输出的就是红外探测的结果,以 0 和 1 来表示,1 为有人,处于工作状态,0 为无人,处于待机状态。刚开始调试程序的时候,数值没在 LCD 上显示,后来发现是主函数忘记了调用子函数,使得数据没有输入,后来经过修
55、改和调整,终于在 LCD 上正常显示出来了。合理的程序使得程序显示状态井然有序。4.7.2 DS18B20 的显示程序问题在本设计中,DS18B20 的显示是最核心的数据,所有其他数据都与之相对应改变,电机的转速也与之相关,但是在程序调试过程中,发现了一个问题,每次给单片机上电之后,总有那么不到一秒钟的时间,温度显示的值是 85,不断电的情况下复位没有出现这种情况,只有每次启动的时候出现。当显示 85 后,其他的数据也随之变为对应值,风扇也有一个短暂的转动,这对于这个设计来说无疑是一个很致命的缺陷。开始查找原因,从 DS18B20 的数据手册中发现,每次上电后,DS18B20 的暂存器中存储的
56、数据就是85,在读取数据后,内部的 AD 要使用 750ms 的时间来进行数据的转换然后重新写入新的数据,所以在这段时间中,显示的数值就是 85 了,看来这是硬件上不可防止的过程,但是硬件上不能改变的话,我可以使用软件的方法来进行变动,我最后采取的方法是在循环程序开始之前,先读取一次 DS18B20 的数值,然后给与一个 1s 的延时,使得 AD 转换完成,然后在开始循环,这样,这个问题终于得以解决了。5 硬件调试硬件电路的调试相对来说比拟简单。调试的功能包括按键电路,DS18B20,电机电路和红外传感电路。5.1 按键电路的调试按键电路实现的功能是在按键按下后能执行设定温度的改变,这项采用实
57、物调试,按键按下之后,温度随之改变。5.2 温度传感器电路的调试温度传感器 DS18B20 的调试在实物上进行,当用手指去加热温度传感器 DS18B20 的时候,LCD 示数开始随温度的上升而改变,变化明显而且刷新频率适中,可以清晰的看到所显示的温度。5.3 电机电路的调试电机电路进行调试,不断的将设定温度降低,观察电机转速的变化。电机随设定温度与实际温度差值的改变而改变,转速变化较为平滑,到达了预期的效果。5.4 红外感应电路的调试红外感应电路直接测试,在前方无人时,系统处于待机状态,电机不转动。当前方有人时,电机开始转动在温度高于预设温度的时候 。5.5 硬件调试遇到的问题本次设计中遇到的最困难的问题就是出在了电机的驱动上,刚开始的设计使用的达林顿 ULN2803 反向驱动器来驱动电机,可是在软件无误,硬件连接无误的情况下,电机转动表现出来的是变速效果不明显,最高档时停转现象的发生。再不断的修改软件和硬件电路无果的情况下,放弃了这个驱动,改用桥式驱动电路 L298N,所有的问题迎刃而解,反向驱动的驱动力不连续,而且驱动力在小电流的输入输出时缺乏,使得电机驱动产生了非常不理想的效果。6 结论此次的设计遇到的每个问题对我来说都是一个很大的挑战,在老师的帮助和自己的探索中,我完成了“基于 5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东外语外贸大学南国商学院《理化检测下》2023-2024学年第一学期期末试卷
- 广东轻工职业技术学院《景观设计快题》2023-2024学年第一学期期末试卷
- 广东农工商职业技术学院《行政管理专业导论》2023-2024学年第一学期期末试卷
- 广东梅州职业技术学院《影视编剧》2023-2024学年第一学期期末试卷
- 广东茂名幼儿师范专科学校《JSP程序设计》2023-2024学年第一学期期末试卷
- 四年级数学(四则混合运算)计算题专项练习与答案
- 国学智慧(东北师范大学)学习通测试及答案
- 2025新北师大版英语七年级下单词表
- 【名师一号】2020-2021学年新课标版物理选修3-1-第二章恒定电流-测试
- 【名师一号】2020-2021学年高中英语北师大版必修4-随堂演练-第十二单元综合测评
- 工程开工报审表范本
- 航空小镇主题乐园项目规划设计方案
- 保洁冬季防滑防冻工作措施
- 少儿美术课件-《我的情绪小怪兽》
- 永续债计入权益的必备条件分析
- 预应力钢绞线张拉伸长量计算程序单端(自动版)
- 基坑监测课件ppt版(共155页)
- 蠕变、应力松弛、滞后和内耗讲解
- 开发区开发管理模式及发展要素PPT课件
- 急诊科科主任述职报告范文
- 基于MATLAB语音信号降噪处理
评论
0/150
提交评论