【STM32学习】PWM学习(四),散热风扇的控制,PWM调速调制,

目录

1、基础概念

2、PWM调速风扇功能介绍

2.1风扇功率

2.2、PWM输出流程图

2.3、PWM占空比计算

2.4参数计算

3、配置实现

3.1、添加TIM1功能

3.2、生成代码

3.3、修改代码


1、基础概念

参考:【STM32学习】PWM脉冲宽度调制学习笔记,(一)基本原理及配置_stm32arr与psc与ccr-CSDN博客

脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,PWM是一种用于控制电子设备的技术,通过调整信号的脉冲宽度和周期,可以模拟出不同的电压或功率级别。

在具有惯性的系统中,通过一系列的脉宽调制,可获得等效的所需的模拟参量。

PWM常见参数有频率 (1/周期Ts),占空比 (高电平占整个周期的比例:Ton/Ts),分辨率(占空比变化最小单位)。

如下图,输出一系列高低电平变化的信号,等效于输出一个虚线状态的模拟信号。

2、PWM调速风扇功能介绍

2.1风扇功率

参考:散热风扇PWM调速信号的频率要求多少? - 知乎 (zhihu.com)

散热风扇的PWM调速信号频率通常要求在20kHz到25kHz之间。 这个频率范围被认为是理想的,因为它高于人耳可听到的范围(一般为20Hz到20kHz),从而避免了产生噪音。

所以可以设置20KHZ的风扇工作频率

2.2、PWM输出流程图

系统时钟频率出来,经过预分频器和自动重装器,可输出固定频率的信号,

设计计数模式,如图中的向上计数模式,从0计数到ARR,再自动重装为0,不断循环。

当经过比较器的时候,比较计数值CNT与CCR的值,选择比较的模式(PWM1和PWM2),如PWM1模式:CNT<CCR,则输出高电平。

如此经过比较器后,就输出高低电平不同宽度的PWM波形了。

2.3、PWM占空比计算

计算PWM占空比的计算方式为:如图为输出50%PWM信号,1KHZ。

TIM_CounterMode,计数模式,一般为向上计数模式,

TIM_Prescaler,预分频器值,也就是PSC值。

TIM_Period,自动重装值,ARR.

TIM_Pulse:比较器值CCR

2.4参数计算

根据以上的知识,

计算一些基本的参数,

以STM32F407为例,配置TIM1的输出PWM信号,TIM1属于APB1的时钟,时钟频率为168MHZ。

时钟参考:STM32F407定时器时钟频率和时钟源_stm32f407vet6 tim8的时钟来源是-CSDN博客

设要配置的风扇PWM频率为20KHZ,

如下图所示,计算出

TIM_Prescaler,预分频器值,也就是PSC值。为83.

TIM_Period,自动重装值,ARR.为99.

3、配置实现

3.1、添加TIM1功能

在TIM中,选择需要的通道,共四个PWM输出通道。选择一个或多个。

3.2、生成代码

有个前提,其他基本功能已经在cubemx中设置过了

这里只介绍增加配置PWM输出功能,

如果对cubemx配置不懂的,可以参考以下文章,把基本配置学习一下。

参考:【STM32学习】stm32cubemx基础配置,点亮/闪烁一个LED灯-CSDN博客

3.3、修改代码

首先在main函数中,增加TIM的的启动配置加入PWM开启函数

在其他设置风扇的c文件中,编辑设置PWM占空比的函数

如下图,这个函数为设置占空比的函数,里面的值填的是CCR的值,

刚刚配置ARR的值为99,所以CCR的范围是0-100。分别表示0%--100%的占空比

需要设置占空比的话,引用这些函数就可以了。

在循环里调用函数,生成对应占空比的PWM信号

相关推荐
ReedFoley5 小时前
【笔记】动手学Ollama 第五章 Ollama 在 LangChain 中的使用 - Python 集成
笔记·langchain
月盈缺5 小时前
学习嵌入式的第二十二天——数据结构——双向链表
数据结构·学习·链表
★YUI★7 小时前
学习游戏制作记录(制作系统与物品掉落系统)8.16
学习·游戏·ui·unity·c#
努力还债的学术吗喽7 小时前
【速通】深度学习模型调试系统化方法论:从问题定位到性能优化
人工智能·深度学习·学习·调试·模型·方法论
技术liul7 小时前
使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本1)
android·stm32·电脑
anghost1509 小时前
基于 STM32 的多传感器健康监测系统设计
stm32·单片机·嵌入式硬件
玉~你还好吗10 小时前
【嵌入式电机控制#34】FOC:意法电控驱动层源码解析——HALL传感器中断(不在两大中断内,但重要)
单片机·嵌入式系统·电机控制
STC_USB_CAN_805111 小时前
所有普通I/O口都支持中断的51单片机@Ai8051U, AiCube 图形化配置
单片机·嵌入式硬件·51单片机
Mr Sorry11 小时前
Non-stationary Diffusion For Probabilistic Time Series Forecasting论文阅读笔记
论文阅读·笔记
正点原子11 小时前
《ESP32-S3使用指南—IDF版 V1.6》第三十四章 RGB触摸实验
单片机·物联网·嵌入式