目录

一、PWM的简介

1.PWM的定义

2.PWM的优点

3.PWM的几种控制方法

(1)等脉宽PWM法

(2)随机PWM

(3)SPWM法

4.PWM的主要参数

(1)PWM占空比

(2)PWM的频率

(3)PWM的周期

二、创建工程项目

三、编写代码

1.在main.c写入以下函数

2.main函数中的while循环中写入以下代码

3.编译运行

​四、烧录

1.电路连接

2.效果

五、观察PWM波形

1.设置Debug相关参数

​2. 调试

3.加入需要观察的引脚信号

4.输出的PWM波形

​六、总结

七、参考文献


一、PWM的简介

1.PWM的定义

PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

2.PWM的优点

(1)PWM的一个优点是从处理器到被控系统信号都是数字形式的,再进行数模转换。可将噪声影响降到最低(可以跟电脑一样)。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。

(2)对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。

3.PWM的几种控制方法

(1)等脉宽PWM法

VVVF(Variable Voltage Variable Frequency)装置在早期是采用PAM(Pulse Amplitude Modulation)控制技术来实现的,其逆变器部分只能输出频率可调的方波电压而不能调压.等脉宽PWM法正是为了克服PAM法的这个缺点发展而来的,是PWM法中最为简单的一种。它是把每一脉冲的宽度均相等的脉冲列作为PWM波,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化.相对于PAM法,该方法的优点是简化了电路结构,提高了输入端的功率因数,但同时也存在输出电压中除基波外,还包含较大的谐波分量 。

(2)随机PWM

在上世纪70年代开始至上世纪80年代初,由于当时大功率晶体管主要为双极性达林顿三极管,载波频率一般不超过5kHz,电机绕组的电磁噪音及谐波造成的振动引起了人们的关注。为求得改善,随机PWM方法应运而生。

其原理是随机改变开关频率使电机电磁噪音近似为限带白噪声(在线性频率坐标系中,各频率能量分布是均匀的),尽管噪音的总分贝数未变,但以固定开关频率为特征的有色噪音强度大大削弱。

正因为如此,即使在IGBT已被广泛应用,对于载波频率必须限制在较低频率的场合,随机PWM仍然有其特殊的价值;另一方面则说明了消除机械和电磁噪音的最佳方法不是盲目地提高工作频率,随机PWM技术正是提供了一个分析,解决这种问题的全新思路。

(3)SPWM法

SPWM(Sinusoidal PWM)法是一种比较成熟的,使用较广泛的PWM法。

前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。该方法的实现有以下几种方案:

1)等面积法

该方案实际上就是SPWM法原理的直接阐释,用同样数量的等幅而不等宽的矩形脉冲序列代替正弦波,然后计算各脉冲的宽度和间隔,并把这些数据存于微机中,通过查表的方式生成PWM信号控制开关器件的通断,以达到预期的目的。由于此方法是以SPWM控制的基本原理为出发点,可以准确地计算出各开关器件的通断时刻,其所得的的波形很接近正弦波,但其存在计算繁琐,数据占用内存大,不能实时控制的缺点。

2)硬件调制法

硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形。通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形.其实现方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波。但是,这种模拟电路结构复杂,难以实现精确的控制。

3)软件生成法

由于微机技术的发展使得用软件生成SPWM波形变得比较容易,因此,软件生成法也就应运而生.软件生成法其实就是用软件来实现调制的方法,其有两种基本算法,即自然采样法和规则采样法。

4)自然采样法

以正弦波为调制波,等腰三角波为载波进行比较,在两个波形的自然交点时刻控制开关器件的通断,这就是自然采样法。其优点是所得SPWM波形最接近正弦波,但由于三角波与正弦波交点有任意性,脉冲中心在一个周期内不等距,从而脉宽表达式是一个超越方程,计算繁琐,难以实时控制。

5)规则采样法

规则采样法是一种应用较广的工程实用方法,一般采用三角波作为载波。其原理就是用三角波对正弦波进行采样得到阶梯波,再以阶梯波与三角波的交点时刻控制开关器件的通断,从而实现SPWM法。

4.PWM的主要参数

(1)PWM占空比

PWM信号保持高电平的时间百分比称为占空比。如果信号始终为高电平,则它处于100%占空比,如果它始终处于低电平,则占空比为0%。如图1所示,T1为占空比,T为一个PWM周期。

(2)PWM的频率

是指一秒钟内从高电平时间在到低电平时间,再从低电平跳到高电平的瞬间次数,也就是一秒钟内有多少个PWM的周期。f = T / 1(HZ)。

(3)PWM的周期

是指一秒钟内从高电平时间在到低电平时间,T = f / 1(s)。

二、创建工程项目

选择芯片STM32F103C8T6:

 配置RCC:

 配置SYS: 配置定时器(TIM3,TIM4):

配置GPIO。将PA5和PC13配置为GPIO_Output:

项目设置:

打开项目:

三、编写代码

1.在main.c写入以下函数

uint16_t duty_num = 10;//储存占空比

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);//开启TIM3的通道1
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);//开启TIM4的通道2

2.main函数中的while循环中写入以下代码

HAL_Delay(50);duty_num = duty_num + 10;if(duty_num > 500){duty_num = 0;}__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,duty_num);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,duty_num);

3.编译运行

 四、烧录

1.电路连接

3v3-3v3

GND-GND

PA9-RXD

PA10-TXD

A6-LED正极(LED呼吸灯)

C13-LED正极(PC13小灯呼吸灯)

两者无法同时显示

2.效果

 

五、观察PWM波形

1.设置Debug相关参数

2. 调试

3.加入需要观察的引脚信号

4.输出的PWM波形

六、总结

通过本次实验,我对于定时器的使用以及PWM波形的生成和分析有了更深的理解。并且通过在STM32上进行PWM的配置,我对于PWM的产生原理和配置方法以及使用领域有了更加深刻的了解和认识,还有如何实现呼吸灯。

七、参考文献

STM32CUBEMX_基于PWM的呼吸灯 | MCU起航

使用STM32输出PWM波形_不#曾&轻听的博客-CSDN博客_stm32输出pwm波形

STM32输出PWM波形以及实现LED呼吸灯相关推荐

  1. 使用STM32输出PWM波形并驱动LED呼吸灯

    目录 前言 一.PWM 二.工程代码 1.用STM32CubeMx创建工程 创建新项目 配置RCC和SYS 配置定时器TIME3 配置定时器TIM4 配置时钟 生成项目 2.用Keil编写代码 3.硬 ...

  2. 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...

  3. 嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果

    目录 1.任务要求 2.PWM介绍 关于PWM的定义 分频-计数时钟 计数器 定时器输出PWM的原理 定时器的初始化 3.配置STM32CubeMX 4.keil5的代码 5.运行结果 6.心得与体会 ...

  4. 嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    一.实验要求: 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼 ...

  5. STM32输出PWM波形及LED呼吸灯

    目录 一.PWM的介绍 1.概述 2.优点 3.主要产生方法 SPWM法 1.等面积法 2.硬件调制法 3.软件生成法 4.PWM电路图 5.PWM基本原理 二.cubemx项目的建立 1.选择芯片S ...

  6. 使用STM32输出PWM波形实现2个 LED呼吸灯

    目录 一.PWM简介 二.STM32配置PWM输出 三.keil仿真 四.烧录运行 五.现象 六.总结 七.参考链接 一.PWM简介 含义 PWM(Pulse Width Modulation)即脉冲 ...

  7. Arduino ESP32利用PWM实现板载LED呼吸灯效果

    Arduino ESP32利用PWM实现板载LED呼吸灯效果 LEDC简介 LED控制(LEDC)外围设备主要用于控制LED的强度,尽管它也可以用于生成PWM信号用于其他目的.它具有16个通道,可以生 ...

  8. 使用STM32输出PWM波形LED呼吸灯的效果

    文章目录 前言 一.PWM简介 1.1 关于PWM 1.2 使用步骤 二.使用STM32CUBEMX实现2个 LED呼吸灯的效果 2.1.配置环境 2.2 代码配置 2.3.输出PWM波形 2.4 呼 ...

  9. STM32输出PWM波形并实现呼吸灯

    文章目录 一.环境配置 二.PWM简介 三.使用STM32CubeMX配置工程 四.使用Keil配置代码 五.运行效果 六.用Keil自带的逻辑仿真器观察占空比 七.总结 八.参考资料 一.环境配置 ...

最新文章

  1. java 参数类型不确定_详细解析Java虚拟机的栈帧结构
  2. 招行java开发面试,面经:Java后台开发-招行网络科技
  3. Asp.Net MVC4入门指南(3):添加一个视图
  4. SQL Server 跨数据库查询
  5. ubuntu12.04默认gcc4.6.3,如何升级到gcc4.8
  6. python经典类新式类_Python新式类与经典类(旧式类)的区别
  7. ForeignKey和ManyToManyField的限制关系
  8. mysql linux 迁移mac_Mac和Linux之间传输数据,并导出mysql数据到本地
  9. OpenJudge数据结构与算法-计算点的距离并排序
  10. 程序员之痛:六次创业五回失败了
  11. bzoj 2179: FFT快速傅立叶 -- FFT
  12. [JavaScript] - replaceAll,将字符串中的字母或数字等全部替换掉的方式
  13. ecshop在nginx下实现负载均衡
  14. android drawable-hdpi 分辨率,android – 设置可用于不同分辨率的drawable文件夹
  15. aspen分离膜_双膜组件强化CO_2混合气分离的研究
  16. 关于一次生产环境项目线程数一直增长问题排查记录
  17. Docker的中央仓库
  18. docker 容器资源限制
  19. 【冬瓜哥画PPT】最完整的存储系统接口/协议/连接方式总结
  20. curl 支持ws吗_使用CURL请求WebService | 字痕随行

热门文章

  1. 电商数据分析流程 | Excel实操
  2. Markdownpad2安装注册
  3. 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(十九):卷积神经网络笔记(下)
  4. 国外开放课程及一些国外大学的网址
  5. 西南科技大学计算机专业全国排名,西南科技大学为什么在全国大学排名很低?...
  6. 学透for循环-传统for循环与增强for循环
  7. CSS“超出显示省略号,后面还能显示其他内容”的解决方案
  8. 分形之城--没过,吃宵夜去了,生蚝真好吃
  9. 语音聊天源码开发之常用动画效果的实现
  10. HTML5传送带视差图片展示js特效