基于STM32的风扇模块实验
实验内容
- 熟练应用PWM,并控制风扇转动。
- 编写程序,使得风扇能够以不同的速度转动。
实验目的
- 熟悉风扇模块的使用;
- 了解PWM的概念;
- 能够编程实现用PWM控制风扇;
- 了解霍尔元件的工作原理。
实验环境
实验所需硬件
序号 | 名称 | 数量 | 备注 |
---|---|---|---|
1 | 电脑 | 1台 | 系统Windows7及以上 |
2 | STM32底座模块 | 2个 | · |
3 | 风扇模块 | 1个 | · |
4 | ST-Link下载器 | 1个 | · |
5 | ST-Link下载器连接线 | 1根 | · |
6 | 风扇模块实验代码 | 1份 | · |
实验所需软件
ST-Link下载器 & ST-Link下载器连接线
STM32底座:HIVE PRO STM32是一种基于STM32F103C8T6芯片的蜂巢底座。
实验要求
- 理解PWM相关概念,能够计算PWM频率、周期和占空比等相关参数;
- 能够用IO口来模拟生成PWM波形并控制电机;
- 能够画出程序流程图。
实验原理
风扇模块相关知识介绍
PWM以及占空比:
PWM是Pulse Width Modulation(脉冲宽度调制)的简称,图3.5.5所展示的是PWM的波形,PWM从波形上看就是一系列周期变化的脉冲波形。
所谓的占空比(duty)即Ton脉冲持续的时间与周期T的比值,计算公式如下图所示。
占空比的变化范围可以从0%到100%,当占空为0%时,输出一直为低,当占空为100%时,输出一直为高。在本次的实验中,PWM波通过CC2530的IO口模拟生成,生成PWM的基本原理如下图所示:
霍尔传感器介绍:
霍尔器件是一种基于霍尔效应的磁传感器。霍尔效应简单的说是通电的半导体薄片,加上和薄片表面垂直的磁场B,在薄片的横向两侧会出现一个电压,如下图(图中的Vh称为霍尔电压)。
当电机转速加快时,流过线圈的电流势必加大,霍尔电压也会随之增加,所以通过采集电机输出的霍尔电压,就能知道风扇转速。
硬件设计
电机的电源V-通过N-MOS管Q1接地,要使电机转动,PWM需输出高电平。当PWM的占空比增大时电机的转速也会随之增大。
实验步骤
① 将风扇模块安装在STM32底座上,ST_LINK连接电脑与STM32底座,如下图所示:
② 访问github,进入github界面后点击Code,Clone HTTPS安全链接,如下图所示:
③ 打开电脑终端,进入工作目录workspace (workspace 为工程文件夹所在目录):
$ cd workspace
④ 运行clone
命令:
$ git clone https://github.com/aiotcom/eps.git
下载目录至指定文件夹下。
如果提示“command not found”表示电脑没有安装Git,请至Git官网下载。
如果电脑没有安装 Git 软件,也可以进入Github,点击 Code
-> DownLoad ZIP
下载所有工程代码。如下图所示:
如果电脑没有公网,可以进:D盘\实验教程与代码选择相应的代码。
⑤ 打开MDK5
工程软件,点击工具栏: ` Project ->
Open Project,选择工程文件:
基于STM32的模块实验\14.风扇模块\风扇模块程序\USER\FAN.uvprojx` 并打开。
⑥ 点击 Rebuild
重新编译。如下图:
⑦ 编译成功,如下图:
⑧ 点击 Download
按钮下载程序,如下图所示:
⑨ 下载完成后,将USB线进行重连操作(即:将STLink的USB线从底座上取下,再重新接上)。
⑩ 观察实验:程序运行后,风扇全速转动。
代码讲解
① 程序目录结构,如下图。CORE文件夹为STM32内核代码,HALLIB文件文件夹为底层HAL库文件。我们主要关心,main.c及HARDWARE中的代码。
② main.c风扇PWM信号初始化。每隔5秒改变一次风扇转速度。
int main(void)
{
HAL_Init();//初始化HAL库
TIM4_PWM_Init(64-1,2000-1);//初始化定时器
while(1)
{
PWM_SetTIM4Compare2(500);//高速
delay_ms(5000);
PWM_SetTIM4Compare2(1200);//中速
delay_ms(5000);
PWM_SetTIM4Compare2(1500);//低速
delay_ms(5000);
PWM_SetTIM4Compare2(2000);//关闭风扇
delay_ms(5000);
}
}
常见问题
-
弹出警告窗口,不能下载程序。
- 请确认STLink驱动、STM32F103C8的DFP包是否安装。
- STLink仿真器是否正常接入。
-
下载代码后程序没观察到实验现象。
- 请重新上电,或者按下底座上的复位按键。
- 模块没有安装稳妥。
实验思考
-
修改代码使用GPIO输出高低电平,控制风扇转动。
-
修改代码使用GPIO模拟PWM信号实现风扇转速控制。