基于STM32的车载智能风扇系统的设计与实现*

2018-11-28 02:12彭璐佳张莉萍谭莲子童宏伟
传感器与微系统 2018年12期
关键词:温度传感器环境温度显示屏

彭璐佳, 张莉萍, 黄 勃, 谭莲子, 童宏伟

(上海工程技术大学 电子电气工程学院,上海 201620)

0 引 言

在炎热的夏天,经过太阳对车体的照射后,人们刚进入车内时就算打开空调也无法使车内温度快速下降,此时可以利用风扇增加车内空气的流通,增加舒适感。带有通用串行总线(universal serial bus,USB)接头的小风扇安装方便,可与车上的USB接口相连,当空调制冷使车内温度达到令人体舒适的温度时令风扇停止转动。

文献[1]设计的可变速风扇中,采用C51系列单片机作为主控制芯片,该芯片I/O接口少,可以扩展功能模块数量相较于STM32系列单片机要少,而且8位的传统的C51单片机处理能力也不及STM32。一些设计中虽然具有液晶显示屏,但是LCD1602液晶显示屏没有薄膜晶体管(thin film transistor,TFT)液晶屏清晰。结合如今的研究现状,本文提出一种智能USB风扇,选用以ARM Cortex-M3为内核的STM32为主控制芯片,利用Keil μVision5进行软件编程,实现风扇根据环境温度的变化自动调速,改进前人设计风扇中的缺点,并使这种风扇能够应用在车辆中。

1 车载智能风扇系统总体设计

车载智能风扇系统,以STM32为控制核心,外设控制及显示模块主要有按键控制部分、温度检测部分、液晶显示部分和电机驱动部分,整体框图如图1所示。上电复位后,液晶显示屏显示车内的环境温度、风扇的转动状态。按下按键,进入设置界面,设置使风扇变速的限值温度,低于下限温度时风扇停止转动,介于下限温度与上限温度值之间时随温度升高转速变快,随温度的降低转速变慢,大于上限温度值时全速转动,实现直流风扇的智能调速。

图1 车载智能风扇系统总体设计框图

2 硬件设计

2.1 STM32单片机系统

STM32系列微控制器是具有高性能、高度兼容、易开发、低功耗、低工作电压以及实时、数字信号处理的32位闪存微控制器产品[2]。本系统设计中应用了STM32F103VET6芯片,内置ARM Cortex—M3内核,拥有多条I/O口以及APB总线和外设,所有型号的器件都包含2个12位的ADC、3个通用16位的定时器和一个脉宽调制(pulse width modulation,PWM)定时器,还包含标准和先进的通信接口:多达2个内部集成电路(inter-integrated circuit,I2C)总线和串行外设接口(serial peripheral interface,SPI)、3个通用同步异步收发机(universal synchronous asynchronous receiver transmitter,USART)、一个通用串行总线(universal serial bus,USB)和一个控制器局域网(controller area network,CAN)[3]。这些丰富的外设配置,使得STM32F103系列适用于多种应用场合。

2.2 电 源

车载智能风扇系统电源电路采用USB—5V供电,其电路如图2所示,电源为STM32主控制芯片供电,进而驱动直流风扇转动。

图2 USB—5V电源供电电路

2.3 温度采集模块

温度采集模块选用数字温度传感器DS18B20,测温范围为-55~+125 ℃,增量值为0.5 ℃[4]。本系统使用的温度传感器为默认配置的12位分辨率,最大工作周期为750 ms[5]。

设计中DS18B20将数字信号输出接至STM32单片机的PE6口,上拉电阻值R=4.7 kΩ,有利于增加DS18B20输出数字信号的稳定性,其电路如图3所示。

图3 温度传感器电路

2.4 按键控制模块

按键模块由5个独立按键组成,分别连接STM32的PC8,PC9,PC10,PC13,利用电容器的充放电特性对抖动过程中产生的电压毛刺进行平滑处理,实现消抖,使用独立按键使单片机程序易处理按键扫描。

2.5 电机驱动模块

驱动模块选用L298N芯片,具有双路H桥电机驱动,可以同时驱动两路直流电机,对该模块的供电电压为5 V,内置防共态导通电路,输入端悬空时,电机不会误动作,内置带迟滞效应的过热保护电路,无须担心电机堵转[6]。该模块的原理如图4所示,可直接与风扇中的直流电机相连。

图4 电机驱动模块原理

2.6 液晶显示模块

液晶显示模块为TFT液晶显示屏,选用ILI9341芯片,与STM32主控芯片连接原理如图5所示,液晶显示屏主界面显示风扇的转动状态、温度,参数设置界面中显示各个参数的设置值。

图5 液晶显示模块原理

3 软件设计及工作流程

在Keil MDK中选择STM32F103VE型号的产品,新建工程,用C语言进行编程。整体设计流程如图6所示。

图6 系统软件设计流程

3.1 温度检测

中央处理器(central processing unit,CPU)首先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作,每一步操作都要遵循严格的工作时序和通信协议。DS18B20存储的温度是16位的带符号扩展的二进制补码形式,当工作在12位分辨率时,其中5个符号位,7个整数位,4个小数位,温度=符号位+整数+小数×0.062 5[7]。根据DS18B20的通信协议,在每次读写之前要对DS18B20进行复位,复位成功后发送一条只读存储器(read only memory,ROM)指令,最后发送随机存取存储器(random access memory,RAM)指令[8],对DS18B20进行读写操作后,最终将温度值显示在液晶显示屏上。温度采集流程如图7所示。

图7 温度采集流程

3.2 按键设置

首先对按键相应的GPIO口进行初始化,通过按键扫描程序判断按键是否被按下,并读出被按下按键的GPIO口值,实现相应按键的功能,Set_Value_Mode设置了参数模式的选择,按键在不同参数模式的选择下,对不同的参数模式进行操作。通过E2PROM将设置的参数写出[9]。

3.3 液晶显示

STM32通过8080通信接口与ILI9341芯片通信,实现对液晶屏的控制[10]。编程初始化LCD控制器ILI9341芯片与STM32控制器的管脚连接配置,CS为TFTLCD片选信号,WR为向TFTLCD写入信号,RD为从TFTLCD读取信号,RS为命令/数据标志[11]。调用函数显示预设的中英文字符。

3.4 电机调速

电机根据车内环境温度自动调速,通过温度传感器读取温度值后控制PWM波的占空比来实现,首先判断当前温度是否在设定值的范围,若在设定温度的范围内,则计算温度范围与PWM值的比率,通过配置STM32通用定时器TIM3,使GPIO口输出PWM信号,采用PWM波控制直流电机两端的电压[12],当电源电压不变的情况下,输出电压平均值取决于PWM波占空比的大小,改变了占空比的值即改变了输出电压的平均值,从而实现电机转速的控制,实现了PWM调速。PWM波占空比改变时,电机转速亦改变。若低于最低温度,则风扇停止;高于最高温度,则风扇全速运转。

4 车载智能风扇调速实验与结果分析

由键盘将下限温度设为25 ℃,上限温度设为35 ℃,开发板上电复位后,温度传感器测量出六组车内环境温度值:36.5,33,31.4,29.7,27.3,25.6,23 ℃,其对应的PWM占空比和风力依次为(100 %,大);(80 %,大);(64 %,中);(47 %,中);(23 %,小);(6 %,小);(0 %,无)。

软件设置中,温度范围低于下限温度时,风力为无,PWM波占空比为0 %~40 %时,风力显示为小;PWM波占空比为40 %~70 %时,风力显示为中;PWM波占空比为70 %~100 %时,风力显示为大。实验结果符合软件设置要求,刚进入车内时温度为36.5 ℃,风扇全速转动,当空调制冷使车内温度逐渐降低时,风扇在设定的温度范围内,随温度的降低,PWM波的占空比变小,风扇的转速变慢,风力显示中根据风扇速的范围显示大、中、小。

5 结束语

经过实验调试后,该车载智能风扇系统可以实现通过按键切换液晶屏上的状态显示界面和参数设置界面,并通过按键设定使风扇调速的环境温度值的上下限,根据温度传感器检测的车内环境温度,改变PWM波的占空比来改变电机的转速,实现风扇的自动调速,并将风扇的运行状态及车内环境温度显示在液晶显示屏上。该系统采用USB接口供电,易于在车内工作,主控制器选用STM32,具有丰富的GPIO接口,可扩展多个功能模块,将各模块有机结合在一起构成一个系统,使用Keil MDK调用固件库函数进行编程,有利于今后对系统功能的扩展,应用前景广泛。

猜你喜欢
温度传感器环境温度显示屏
一块布就是一个显示屏?
Review of a new bone tumor therapy strategy based on bifunctional biomaterials
温度传感器DS18B20在温度计设计中的应用
一种高性能CMOS温度传感器
苍蝇迷恋显示屏
XTR105电流变送器在温度传感器中的应用
雷克萨斯CT200h车环境温度显示异常
未来五年LED显示屏出货将保持16%增长
温度传感器在笔记本电脑散热系统中的应用
基于AT89S52的手势可控LED滚动显示屏设计