主页 > 案例大全 > 论文案例实践-基于单片机的智能温控风扇

论文案例实践-基于单片机的智能温控风扇

2021-04-13 14:41:53

  2.1系统总体设计

  本次设计采用单片机作为温控风扇的控制核心,结合温度传感器,液晶显示屏,电机驱动模块,语音模块等重要部件共同完成本次设计所要求的系统功能。温度传感器检测周围环境温度后,传送数据给单片机,单片机对接收到的信号进行处理,然后在显示屏上显示周围环境温度、已设定的温度上下限、风扇状态及档位。通过三个按键设置温度上下限值,一个提高温度,一个降低温度,一个切换控制温度上下限值。该温控风扇可以在不同温度下实现不同的转速,而且能够接收语音指令做出相应的反馈,具有较好的节电节能效果和人机交互体验感。

  2.2系统硬件框图

  本设计硬件部分由温度采集电路、电机驱动电路、按键控制电路、显示电路、语音控制电路五部分构成,硬件框图如图1所示。STM32F103C8T6单片机作为控制核心,将DS18B20温度传感器采集到的当前环境温度传送给单片机进行处理,并且当前环境温度会实时显示在TFT-LCD液晶显示屏上。该风扇工作状态分为两种:温控状态和语音状态。两种状态的切换通过语音模块控制。温控状态下,单片机通过控制电机驱动L298N控制风扇转速,风扇电机转速受当前环境温度以及温度上下限的影响。当SNR3512M语音模块接收到语音关键词组信息时,系统切换到语音控制状态,通过串口发送对应的数据到单片机,单片机通过接收到不同的数据来区分动作,并给出相应的语音反馈,从而实现语音控制风扇的开关和档位。为了满足不同的人对不同温度的适应性,采用三个按键来实现对温度上限,温度下限的设定,同时温度上下限值具有记忆功能。

  图1:系统硬件框图

  2.3系统软件总体流程图

  温控风扇系统主要是由TFT-LCD显示程序,电机驱动程序,温度采集程序,语音控制程序,按键处理程序等共同组成,各子程序通过主程序的运算处理,实现TFT-LCD液晶显示屏显示风扇状态、周围环境温度值和设定的温度上下限值等数据,语音控制模式转换,温度采集,按键设置上下温度值等功能,达到本次系统设计的要求。该软件总体流程图是,当电源开关开启后,单片机控制器开始工作,各个模块进行初始化,使系统进入TFT-LCD显示页面,然后从24c04(数据参数存储器)中读取已设定的温度上下限,再进入温度处理子函数,将温度传感器收集到的温度数据与温度上下限值进行比较处理,进而调节风扇的档位。若是周围温度低于温度下限值,则风扇静止;若是周围温度高于温度下限值并且低于上限值,则风扇档位调为1档;若是周围温度高于温度上限值,则风扇档位调为4档。使用按键设置温度上下限时,进入温度设置子函数,加减选中的上限或下限值,将读取到的温度上下限值存入24c04,然后进入温度处理子函数,进行数据比较调节风扇档位。本设计研究的智能温控风扇系统的工作状态分为两种:温控状态和语音控制状态。当有语音指令时,进入模式设置子函数,切换到语音控制模式,进入语音控制子函数,根据接收到的语音指令,对风扇做出相应的动作并给出语音反馈。当语音控制发出“打开风扇”的指令时,单片机通过读取语音模块的串口数据,通过控制电机驱动控制风扇以一档的转速转动。当发出“关闭风扇”指令时,风扇关闭,此时风扇进入温控状态。系统软件总体流程图如图2所示:

  图2:系统软件总体流程图

  注:24c04是EEPROM存储芯片,掉电后数据不会丢失。与外界通讯采用I2C总线方式,容量是512字节。与单片机通讯采用两线串行的总线方式,其电压最低可以到2.5V,它的额定电流为1mA,电压为5.5V时,静态电流为10uA,主要用于存储掉电后需要保存的数据。

  3系统硬件设计

  3.1 STM32F103C8T6控制电路

  1.STM32F103C8T6简介

  单片机是本次系统设计的重要核心部分。因为在本次设计中对温度和语音的控制具有较严格的标准,所以针对这些要求就必须选择一个具有高性能而又平价实惠的单片机。STC12系列单片机与51单片机在工作方式上比较类似,但功能较为丰富。它的处理速度快于51单片机但是又慢于STM32系列,而至关重要的是STC12系列单片机不能够支持TFT-LCD液晶显示屏的显示。STM32F103C8T6微控制器是32位微控制器,是基于ARM Cortex-M内核STM32系列。该单片机具有32位高性能、丰富的外围设备配置、低功耗的优点。另外,ARM Cortex-M3处理器缩减了管脚的数目、降低了系统功耗,系统性能得到改善,并且平台的成本比较低,同时还提供了优异的计算性能和出色的终端系统响应,是嵌入式ARM处理器最新一代的代表。完全符合本次设计中对单片机的使用标准,所以作为本次设计的核心部分选用的是属于STM32系列的STM32F103C8T6单片机最小系统,

  STM32F103C8T6内置有高速存储器(包括128k字节的闪存和20k字节的SRAM),其工作频率为72MHZ,它包含两个12位的ADC、一个PWM定时器和三个通用的16位定时器,还有规范和较先进的通信接口。在-40℃至+105℃的温度范围内,供电电压为2.0V至3.6V内,单片机能够正常工作,其引脚分布如图3所示:

  图3:STM32F103引脚分布图

  在STM32F103C8T6单片机中,存在着HIS振荡器时钟、PLL时钟以及HSE振荡器时钟,这3个不同的时钟源都可以作为驱动系统时钟。上述的三个时钟源都具备2个二级时钟源,分别为低速内部RC时钟源,其频率为40KHZ,以及低速外部时钟源,其频率为32.768KHZ,这两个二级时钟源能够驱动看门狗时钟和RTC。每一个时钟源的开启与关闭都是独立的,有着优化系统功耗的作用。

  STM32F103C8T6提供48脚的封装形式,丰富的外设配置使得STM32微控制器适合于多种应用场合:

  ①电机驱动和应用控制;

  ②手持和医疗设备;

  ③GPS平台和电脑游戏外设;

  ④工业应用:可编程控制器(PLC)和打印机等。

  2.SM32F103C8T6控制电路

  图4:STM32F103C8T6单片机最小系统原理图

  本设计以STM32F103C8T6单片机为控制核心,其原理图如图4所示。该单片机的PA9引脚与PA10引脚连接的是SNR3512M语音模块,组成语音控制电路。PB5、PB8、PB9引脚连接的是三个按键,组成按键控制电路。PB11引脚连接的是DS18B20温度传感器,组成温度采集电路。PA1引脚和PA0引脚连接的是L298N电机驱动,组成电机驱动电路。PB15、PB13、PB1、PB1引脚连接的是TFT-LCD液晶显示屏,组成显示电路。

  3.2温度采集电路

  1.DS18B20简介

  DS18B20是一种常用的单线式数字温度传感器,它的温度测量范围在-55℃~+125℃之间,在-10℃~+85℃范围内,精度高达±0.5℃。电压范围在3.0~5.5V之间,三线上可以并联多个DS18B20,且不需要其他任何的外围元件,在微处理器与DS18B20温度传感器中只需要一条口线相互连接便可以实现双方的通讯。它的可分辨温度为0.5℃、0.25℃、0.125℃和0.625℃,且在9位分辨率时,可以快速的把温度转变成数字,甚至在12位分辨率时能够更快的实现温度值与数字之间的转变。在输出数字温度信号之后,会传送给CPU,传送数据具有着很高的准确性和可靠性,因为传送数据的同时也会传送校验码。电源极性接反时,虽然不会破坏芯片,但是无法正常工作。正是因为这些特性,DS18B20具有体积小,适应电压范围更宽,抗干扰能力更强,高精度等优点。

  测温元件不仅有DS18B20温度传感器还有热电偶和热敏电阻。热电偶的使用方法是测量时让它与被测物体进行直接接触,它的测量不容易被周围环境影响,但是它不能直接由微处理器进行处理,需要加上补偿电路然后经过专门接口电路(AD转换电路),硬件方面较DS18B20温度传感器更为复杂,且成本价格更高。热敏电阻适用于测量常温,硬件连接较为简单,但是测试精度不高,容易被周围环境影响。综上所述,DS18B20温度传感器可直接读出数字,硬件电路简单,精度高,实用性强等优点。因此本次设计测量环境温度的元件选用了DS18B20温度传感器。该温度传感器的引脚图如下图5所示:

  图5:DS18B20引脚与封装图

  DS18B20引脚说明:

  DQ:数字信号输入/输出端。GND:电源地端。

  VDD:外接供电电源输入端。NC:无连接

  2.温度采集电路

  本系统中使用DS18B20温度传感器实现环境实时温度的采集,该温度传感器与单片机的连接图如图6所示:

  图6:单片机与DS18B20电路连接图

  单片机的PB11引脚连接DS18B20的I/O脚,是温度传感器数据的读入和写出接口。电阻R2是DS18B20的I/O口的上拉电阻,在读时隙结束的时候,I/O引脚会通过此上拉电阻拉回到高电平。为了使DS18B20能够进行精确的温度转换,I/O线在转换期间就必须提供足够的能量,DS18B20的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ,目前用的电阻一般都是固定阻值,对于本次设计,选用了4.7K电阻作为上拉电阻,因为DS18B20是单总线温度传感器,若使它接上电源,则只需要一个上拉电阻即可稳定的工作,不再需要数据线强上拉。

  3.3 TFT-LCD液晶显示屏控制电路

  1.TFT-LCD液晶显示屏简介

  TFT-LCD液晶平板显示器,中文名字是高清真彩显示屏,是利用薄膜晶体管来产生电压以控制液晶转向的显示器。TFT-LCD是一个较大型的半导体集成电路,是通过对在晶片或非单晶片上使用特定工艺形成的膜进行加工而制作出的。在之前传统大规模集成电路的基础上有着大面积、多功能、低成本的巨大进步,到如今TFT-LCD技术已经成熟。另外,LCD1620也是在单片机实验中经常用到的一种显示屏,1602液晶也叫1602字符型液晶,但它是一种点阵型液晶模块,面积较小,并且只能用来显示数字、字母和符号等,而不能显示汉字,不满足本设计的要求。本次设计中对显示屏的要求是所选用的显示屏上需要显示温度传感器采集到的温度数据以及在不同温度范围内风扇不同档数等,包括英文和汉字。所以这也是为什么选择TFT-LCD彩屏而非LCD1620的主要原因。其实在我们生活周围,液晶彩屏显示器早就无处不在了,例如家里的电视、手上的手机,以及超市的公告显示屏等都可以体现出来,而应用于本次设计的人机交流面板中的是tft-1.44,选用的型号为JYT144003-T01。

  本设计使用的是1.44寸的TFT-LCD液晶显示屏,其规格尺寸图如下图7所示:

  图7:tft-1.44规格尺寸图

  JYT144003-T01主要参数如表1所示:

  表1:JYT144003-T01主要参数

  主要技术参数符号最小值最大值单位

  使用温度VDD-20 70℃

  存储温度VIN-30 80℃

  逻辑电压TOPR-0.3 4.6 V

  输入电压TSTG-0.3 VDD+0.3 V

  JYT144003-T01引脚接口说明如表2所示:

  表2:JYT144003-T01引脚接口

  PIN NO.1电源地Ground

  PIN NO.2:电源地Ground

  PIN NO.3:背光负极

  PIN NO.4:背光正极(2.8V~3.3V)

  PIN NO.5:电源地Ground

  PIN NO.6:液晶屏复位信号

  PIN NO.7:数据选择信号/寄存器

  RS=0数据总线传输的是指令;RS=1数据总线传输的是像素值

  PIN NO.8:液晶屏SPI总线数据输入端

  PIN NO.9:液晶屏SPI总线时钟信号

  PIN NO.10:液晶屏供电正极(2.8V~3.3V)

  PIN NO.11:液晶屏供电正极(2.8V~3.3V)

  PIN NO.12:片选信号

  PIN NO.13:电源地Ground

  PIN NO.14:电源地Ground

  此外在TFT液晶显示屏上显示汉字需要通过PCtoLCD2002字模提取软件进行取模,该软件有两种工作模式:字符模式和图形模式。由于在本次设计中只需要用到字符模式,所以在这里简单的介绍一下字符模式的使用。打开软件以后,在模式菜单里选择使用字符模式。在界面的中心区域都变成了点阵格式,在图中下部的文本框中输入要转换的文字。例如输入“字体取模”,就可以看到图8所示的图像。此时通过页面上边的工具栏可以设置文字的字体和对应大小等信息。可以很方便的对文字作出各种调整,直观的使用方式,使用户能够很容易地掌握其使用方法。完成对文字的调整之后,还是进行字模设置选择,然后生成字模图标,就能够显示对应的文字数据(“字体取模”)。另外,如果液晶具有内置字库,只要向液晶控制器传送对应的国标码就可以显示想要的文字,而不需要再生成显示数据。

  图8:“字体取模”显示

  2.TFT-LCD液晶显示电路

  显示电路是本设计中实现人机交流的关键部分,根据对多种显示器的对比和本设计的要求,TFT-LCD液晶显示屏有着突出的优势,可以显示汉字英文等,画质清晰,方便实用。本系统中液晶显示屏模块与单片机的连接图如图9所示:

  图9:TFT-LCD与单片机的连接图

  单片机的PB15引脚连接的是TFT-LCD模块的SDI,PB13引脚连接的是TFT-LCD模块的SCL,PB12引脚连接的是TFT-LCD模块的CS,NRST引脚连接的是TFT-LCD模块的NRST,PB1引脚连接的是TFT-LCD模块的A0。此模块只支持3.3V电源。由于本设计所选用的STM32F103C8T6最小系统板上设有支持TFT-LCD显示屏的插座,可即插即用,方便TFT-LCD的使用,这也是为什么选择这一版本的STM32F103C8T6最小系统的原因之一。

  3.4电机驱动控制电路

  1.直流电机驱动模块简介

  L298N2路直流电机驱动模块是一款比较常见的电机驱动,通常可使用在电池供电的玩具小车、机器人等上面。其供电电压为2V-10V,它有两组输入输出口,可以同时驱动两个直流电机,可进行调速和正反转控制,有热保护并且能够自动恢复。另外一个常见的驱动模块LM2596,虽然也具有体积小、大电容、降压等优点,但是该驱动模块进行降压调节需要通过手动按钮,且电路比较繁琐。所以在本次设计中,选用L298N模块作为本次设计的驱动模块。

  L298N2路直流电机驱动板模块采用了进口原装的专业电机驱动芯片,内置有低导通内阻MOS开关管,有着发热小、无需散热、体积小、省电、质量轻、零待机电流的特点。此模块内置有过热保护电路,这是其另一大优点,就不用怕电机堵转而烧坏,在温度下降后就可自动恢复。即使在输入端悬空时,因为此电机驱动模块内部含有防共态导通电路,所以电机也不会有错误的动作,安全性和可靠性较高。该电机驱动模块产品尺寸为24.7*21*5mm(长宽高),示例图如下图10所示:

  图10:电机驱动模块示例图

  Inx为控制信号输入端,信号电压范围为1.8V-7V;驱动板上面的接口IN1、IN2控制电机A,IN3、IN4控制电机B。注意事项有:①若接反电源正极与负极,则会造成电路损坏,需特别注意;②虽然芯片有过热保护,但是如果峰值电流远超2.5A并且电压过高(10V左右),仍然会造成芯片烧毁。

  2.电机驱动电路

  电机运转是该设计的执行部分,可以反映出系统的执行效果。L298N是常用的电机驱动模块。本系统中电机驱动部分与单片机的连接图如图11所示:

  图11:单片机与风扇电路连接图

  风扇的运转是整个控制系统的执行部分,反映着对指令的执行效果,风扇的可靠运转与其驱动电路密切相关。单片机PA1引脚连接的是电机驱动的输入IN1,PA0引脚连接的是电机驱动的输入IN2。电机驱动的OUT1和OUT2两个输出口,分别连接到风扇电机的两个接口。温控状态下,风扇转速受当前温度以及温度上下限的影响,单片机输出不同占空比的pwm信号,控制电机转动。当温度低于温度下限时,风扇静止不动;当温度高于温度下限低于温度上限时,风扇以一档状态运行;当温度高于温度上限时,风扇以四档状态运行。语音控制状态下,通过识别不同的语音信号,控制风扇进行不同档位的运行。

  3.5语音控制电路

  1.SNR3512M简介

  SNR3512M是智纳捷科技有限公司生产的高稳定度的语音识别模块,由于此模块集成了精细的语音识别算法和语音压缩算法,因此可以满足本次设计所需要的语音识别的稳定性与效率性,并且缩小了大部分语音播报存储空间,具有驻极体麦克风和喇叭,可实现语音辨识功能以及语音播放功能。SNR3512M还具有UART通信界面,可以在反馈识别成功后,利用UART发送数据,与MCU一起配合使用,不仅能够使语音识别简单化,也能大大提高产品开发效率。SNR3512M语音识别模块的反馈音可以使本次设计更加完善和灵活,因此选用该语音识别模块。

  SNR3512M语音识别模块采用半孔焊盘,封装类型为16-pin SOP,32位CPU内核,其CPU具有两种震荡模式,多种工作模式,提供暂停和唤醒,以降低功耗。内置SPI FLASH存储大容量词条与语音播报内容,通过UART串口输出/查询/控制等,轻松控制并获取模块当前状态此模块是高稳定度的非特定人语音识别模块,可识别32种语言,同时只识别一个语种,无需用户录音训练。具有高品质/高分贝语音播报。工作温度在-40℃~+85℃,识别距离远达6~8米,识别率在85%以上(安静环境下),具有极强的抗干扰能力,就算是在噪声环境下识别率也能高达60%以上,可应用于多种场合。类似智能家居,智能玩具,公共场所,护理/理疗等,也适用于本次设计。

  此模块采用的是半孔焊盘,它的整体大小为14.3*14.6mm,焊盘的间距为1.8mm,尺寸定义如下图12所示:

  图12:SNR3512M模块尺寸图

  模块引脚说明:

  图13:SNR3512M模块引脚分布图

  图14:SNR3512M模块引脚定义图

  UART接口硬件连接方式如下图15所示:

  图15:SNR3512M模块UART连接图

  UART通信命令格式如表3所示:

  通信协议定义上位机/MCU和SNR3512M语音识别模块之间的通信。

  表3:命令格式表

  1 2 3 4 5 6

  串口指令0XF4 0xF5 0x06 0x72 0x01 0x79

  说明Byte1-4位为固定位

  Byte5-6位依次累加,0x01-0x79代表第一条指令

  1 2 3 4 5 6

  串口指令0XF4 0xF5 0x06 0x72 0x01 0x79

  说明Byte1-4位为固定位

  Byte5-6位依次累加,0x01-0x79代表第一条指令

  2.语音控制电路

  在本设计中加入该语音模块可以更好的得到反馈,实现人机交流。本系统中语音模块与单片机的连接图如图16所示:

  图16:语音模块与单片机的连接图

  单片机的PA9引脚连接的是语音模块的TXD(发送数据),PA10引脚连接的是语音模块的RXD(接收数据)。当发出语音指令“小星小星”时,唤醒语音模块,并得到反馈音“你好,主人”、“我在呢”、“主人,请吩咐”中的任意一个。当语音发出“打开风扇”的指令时,单片机通过读取语音模块的串口数据,通过控制电机驱动控制风扇以一档的转速转动,并得到反馈音“风扇已打开”,此时风扇处于语音控制状态。同时语音模块可以实现通过“加大风量”等其他语音指令来实现风扇转速的改变,具体语音指令关键词组以及相应的反馈音和相应动作如下表4所示。

  表4:语音指令表

  序号唤醒词反馈音备注

  指令1

  小星小星你好,主人单次识别成功随机播放一句

  我在呢

  主人,请吩咐

  指令2打开风扇风扇已打开

  指令3关闭风扇风扇已关闭

  指令4加大风量已为您开到n档0<n<5

  指令5减小风量

  指令6最大风量已为您开到4档

  指令7最小风量已为您开到1档

  3.6按键控制电路

  本系统中采用3个按键实现切换和设置上下限的温度范围。这3个按键与单片机的连接图如图17所示:

  图17:单片机与按键电路连接图

  单片机的PB5引脚连接的是增加按键,对设置温度上下限值具有增加数值的功能,PB8引脚连接的是切换按键,进行切换设置温度上限或者下限值,并可保存设置的温度。PB9引脚连接的是减少按键,对设置温度上下限值具有减少数值的功能。

  4系统软件设计

  4.1 keil uVision5集成开发环境介绍

  本次设计所使用的是keil uVision5,uVision5是目前由KEIL公司开发的集成开发环境(IDE)的最新版本。在功能上,它和Eclipse类似,都提供工程管理、编译设置、源代码编辑和下载调试等功能,提供了一个易于开发操作的环境。作为最新版本的Keil uVision5,除了提供了以上的功能之外,还新增了很多其他的功能,比如包管理器。与之前的版本相比,uVision5在不更换MDK Core的情况下,Software Packs可以单独的进行中间库的升级更新与新设备的支持,让开发者使用起来非常方便。这也是本次设计选用KEIL5作为编程软件的主要原因。Keil5在功能方面也有进步更新:①提高了开发效率。开发者可以方便的选择使用各种软件组件;文件系统组件:使开发者可以在内存设备中非常方便的进行读写、创建和修订文件的操作;图形组件:美观灵活的人机交互界面,用户可以更加灵活快捷的进行开发工作;网络组件:为了能让使用者方便的开发网络应用,有着服务器网络套接字和物理层交互方式;USB组件:创建USB设备标准级别应用。②访问文档资源更加轻松。③项目维护更加简单,代码重复利用率得到提升,工作效率大大提升。

  4.2温度处理子函数流程图

  对温度的处理流程是首先读取ds18b20温度传感器采集到的温度值,在清除TFT-LCD液晶显示屏的温度显示区之后,判断读取到的温度值是否为正。若为正,则不显示负号;若为负,则显示负号,并且将负的温度值转换为正值,即为当前温度。随即在显示屏上显示温度上限、当前温度以及温度下限。本系统中温度处理流程图和温度函数主体图如下图18,19所示:

  图18:温度处理流程图

  图19:温度函数主体图

  对温度的读取,温度函数主体首先要进行初始化,当DS18B20温度传感器通电时是一种不工作的状态,若这时对其进行数据的读取,是为该温度传感器的默认值(85℃)。要使温度传感器读取的为实时环境温度,则需要发送一个CONVERT T指令,然后开始测量环境温度。对温度传感器发送“0xcc”指令和“0xbe”指令,然后读取LSB和MSB两个字节的信息,最后使TH和TL转换成u8数据temp,并且返回所测温度值。

  4.3模式控制子函数流程图

  当系统开始工作后,首先判断控制状态。若风扇控制状态为温控状态,则在液晶显示屏上显示温控状态,再判断当前温度值。若实时温度小于所设定的温度下限值,则风扇停止转动,液晶显示屏上的风扇档数显示为停止;若实时温度小于设定温度上限而大于温度下限值,则风扇以一档运行,液晶显示屏上显示一档;若实时温度大于温度上限值,则风扇以四档运行,液晶显示屏显示四档。若风扇控制状态为语音控制状态,则在液晶显示屏上显示语音控制状态,再判断档位,根据档位的大小显示风扇运行档数。模式控制流程图和模式控制函数主体图如下图20至图22所示:

  图20:模式控制流程图

  图21:语音控制状态程序图

  图22:温控状态程序图

  4.4语音控制子函数流程图

  语音模块开始工作时,判断串口是否接收到数据,若串口接收到数据,然后判断第五位数据内容,内容为0x01时,唤醒风扇,风扇档数为0,工作状态为语音模式。内容为0x02时,风扇档数为1档,工作状态为语音控制模式。内容为0x03时,风扇档数为0档,工作状态切换到温控模式。内容为0x04时,判断档位值是否小于4,若是,则档数加一,否则档位不变。内容为0x05时,判断档位值是否大于1,若是,则档数减一,否则档位不变。内容为0x06时,风扇档位为4档,即最大风速。内容为0x07时,风扇档位为一档,即最小风速。语音控制流程图和语音函数主体图如下图23、图24所示:

  图23:语音控制流程图

  图24:语音函数图

  5系统测试

  5.1系统功能设计

  在本设计中所用到的硬件有一个STM32F103C8T6单片机最小系统、一个DS18B20温度传感器、三个按键、一块TFT-LCD液晶显示屏、一个SNR3512M语音模块、一个电机驱动、一个黑色小风扇以及一个电源接口,实物图如图25所示。

  本设计的主要目的是通过检测到周围温度的变化,实现风扇转速的自动调节,或者通过语音控制风扇运行,并且将实时温度、温度上下限、风扇档数以及控制模式都显示在液晶显示屏上。根据在第一章的1.3节提过本次系统的主要要求为:①利用单片机实现对本次设计的所需要的功能进行总体控制。②在液晶显示屏中可以显示出周围环境的实时温度、设定的温度上下限值、风扇工作状态以及当前的风扇档数。③通过按键控制的方式实现调节温度的上下限值。低于温度下限值时风扇自动停止。④语音输入一定指令可调节风扇档数,控制风扇的转速变化。

  图25:实物图

  5.2温度传感器测试

  在验证该实物是否完成本设计所提出的要求之前,首先需要验证温度传感器DS18B20是否能够正常工作。验证方法是,将温度传感器检测到的环境温度与手机上的天气软件显示的温度进行比较,二者的结果一致,温度均为14℃,表示该温度传感器能够正常工作。二者结果对比如图26所示:

  图26:检测温度对比图

  5.3液晶显示测试

  图27是在温控状态下,DS18B20温度传感器测得的当前温度为24.1℃,所设定的温度上限值为29.0℃,温度下限值为24.5℃。当前温度低于所设定温度下限值,则电机停止转动,风扇档位为停止。满足要求中所提出的液晶显示屏显示当前温度、控制模式等信息。

  图27:液晶显示图5.4按键控制测试

  本次设计对按键的主要要求为采用三个按键实现可以切换更改温度上限和温度下限数据的功能。图28左侧液晶显示屏中显示的温度下限值为24.5℃,温度上限值为29.0℃,通过使用按键对温度上下限值进行调整,得到图28右侧液晶显示屏中显示的温度下限值为20.1℃,温度上限值为22.0℃。满足要求中按键切换更改温度数据的功能。

  图28按键调整温度上下限值

  5.5语音控制测试

  本设计对语音模块的主要要求是通过语音指令转换控制模式以及通过不同的语音指令调节风扇的档位和控制风扇的启停。图29左侧显示控制模式为温控模式,环境温度低于温度上限值而又高于温度下限值,风扇档数为一档。当发出语音指令“小星小星”时,唤醒语音控制模式,再发出语音指令“加大风量”,收到语音反馈“已为您开到二档”,得到如图29右侧所示的结果,显示控制模式为语音模式,在环境温度低于所设定的温度下限值时,发送的语音指令使得风扇档数为二档。满足语音指令实现模式转换和调节风扇转速的要求。

  图29:语音控制模式

  5.6温度控制测试

  为验证该系统已完整实现温度控制风扇的功能,对其进行一个温控测试。方法是对系统供电后,先将温度下限设置高于环境温度,使风扇状态为停止。然后将打火机点燃靠近温度传感器(但不要接触温度传感器),或者是用手捏住它,明显看到液晶显示屏上实时温度数字不断增大,当超过系统所规定的温度下限时,风扇开始转动,显示风扇为一档;当超过温度上限时,风扇转速加快,显示风扇为四档。当关掉打火机或者松开手指,可看到液晶显示屏上实时温度数字不断减小直至趋于空气的温度,当温度低于系统所规定的温度上限时,风扇的转速会减慢,显示风扇由四档变为一档;当温度低于温度下限时,风扇自动停止。以上现象表明,该温控风扇能够实现所要求的温度控制风扇转速的功能。测试如图30所示。