文章目录

    • 前言
  • 一、PWM介绍
    • 1、PWM简介
    • 2、PWM控制方法
  • 二、创建项目
    • 1、创建工程
    • 2、Keil代码编写
    • 3、实际效果
  • 三、总结
  • 四、参考资料

前言

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

一、PWM介绍

1、PWM简介

  • 内容

脉宽调制(PWM,Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

  • 基本原理

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

  • 优点

PWM的一个优点是从处理器到被控系统信号都是数字形式的,再进行数模转换。可将噪声影响降到最低(可以跟电脑一样)。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。
对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。

2、PWM控制方法

采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。 PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。

PWM控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在上世纪80年代以前一直未能实现.直到进入上世纪80年代,随着全控型电力电子器件的出现和迅速发展,PWM控制技术才真正得到应用.随着电力电子技术,微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论,非线性系统控制思想的应用,PWM控制技术获得了空前的发展,已出现了多种PWM控制技术。

根据PWM控制技术的特点,主要有以下方法:

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

随机PWM

在上世纪70年代开始至上世纪80年代初,由于当时大功率晶体管主要为双极性达林顿三极管,载波频率一般不超过5kHz,电机绕组的电磁噪音及谐波造成的振动引起了人们的关注。为求得改善,随机PWM方法应运而生。
其原理是随机改变开关频率使电机电磁噪音近似为限带白噪声(在线性频率坐标系中,各频率能量分布是均匀的),尽管噪音的总分贝数未变,但以固定开关频率为特征的有色噪音强度大大削弱。

SPWM法

SPWM(Sinusoidal PWM)法是一种比较成熟的,使用较广泛的PWM法。前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。

SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。

> 该方法的实现有以下几种方案。
> 1.等面积法 该方案实际上就是SPWM法原理的直接阐释,用同样数量的等幅而不等宽的矩形脉冲序列代替正弦波,然后计算各脉冲的宽度和间隔,并把这些数据存于微机中,通过查表的方式生成PWM信号控制开关器件的通断,以达到预期的目的。由于此方法是以SPWM控制的基本原理为出发点,可以准确地计算出各开关器件的通断时刻,其所得的的波形很接近正弦波,但其存在计算繁琐,数据占用内存大,不能实时控制的缺点。
> 2.硬件调制法 硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形。通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形.其实现方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波。但是,这种模拟电路结构复杂,难以实现精确的控制。
> 3.软件生成法 由于微机技术的发展使得用软件生成SPWM波形变得比较容易,因此,软件生成法也就应运而生.软件生成法其实就是用软件来实现调制的方法,其有两种基本算法,即自然采样法和规则采样法。
> 4.自然采样法 以正弦波为调制波,等腰三角波为载波进行比较,在两个波形的自然交点时刻控制开关器件的通断,这就是自然采样法。其优点是所得SPWM波形最接近正弦波,但由于三角波与正弦波交点有任意性,脉冲中心在一个周期内不等距,从而脉宽表达式是一个超越方程,计算繁琐,难以实时控制。
> 5.规则采样法 规则采样法是一种应用较广的工程实用方法,一般采用三角波作为载波。其原理就是用三角波对正弦波进行采样得到阶梯波,再以阶梯波与三角波的交点时刻控制开关器件的通断,从而实现SPWM法。
> (1)当三角波只在其顶点(或底点)位置对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(即采样周期)内的位置是对称的,这种方法称为对称规则采样。
> (2)当三角波既在其顶点又在底点时刻对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(此时为采样周期的两倍)内的位置一般并不对称,这种方法称为非对称规则采样。
> >规则采样法是对自然采样法的改进,其主要优点就是是计算简单,便于在线实时运算,其中非对称规则采样法因阶数多而更接近正弦.其缺点是直流电压利用率较低,线性控制范围较小。
> >以上两种方法均只适用于同步调制方式中。

二、创建项目

1、创建工程

先打开STM32CubeMX软件新建工程,进行基本配置。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:

芯片根据自己的实际情况进行选择,此处选择“STM32F103C8”

打开外部时钟,点击“System Core”,选择RCC,在HSE选项中选择“Crystal/Ceramic Resonator”。

选择调试接口,点击“System Core”,选择SYS,在 Debug选项中选择“Serial Wire”。

配置定时器3。
如图,在相应的位置选中定时器3;位置3选择时钟源为“Internal Clock”,通道1选择“PWM Generation CH1”。

设置分频系数为71,
计数周期为500,
其它默认。
设置占空比初始值为10,其实这里不写也没影响。
配置定时器4
同定时器3类似

时钟配置。
把倍频到72MHZ。先点击“Clock Configuration”页面,按照下面红色框中的值,从左到右进行配置即可。

设置项目名称且进行相应配置,生成工程文件,然后打开项目,跳转至keil

2、Keil代码编写

在main.c文件添加变量

代码如下:

uint16_t pwm=0;   //占空比

4.2 开启TIM3和TIM4的PWM的通道1

代码如下:

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1);

4.3 while中写入调用代码

代码如下:

while (pwm< 500){pwm++;__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwm);  __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_1, pwm);             HAL_Delay(1);}while (pwm){pwm--;__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwm);    __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_1, pwm);  HAL_Delay(1);}HAL_Delay(200);

三、硬件实操展示
线路连接:

USB转TTL STM32F103C8T6开发板
3V3 3V3
GND GND
RXD A9
TXD A10

其他

LED灯短脚 A6
LED灯长脚 3V3
PB6 PC13

线路连接实际图

3、实际效果

PWM占空比实现呼吸灯

三、总结

最开始的时候没有明确的方向,后面结合之前的实验并查阅相关博客和资料才有了一定的相关想法,并且在配置时钟的时候没有配置完全,有一次是没有配置成功,所以在STM32CubeMX上面配置的时候一定要注意再注意。通过本次实验让我意识到了这些实验都有一定的相通性,但也有区别,因此要注意每一个实验的侧重点。

四、参考资料

https://blog.csdn.net/Qxiaofei_/article/details/119059623

利用STM32PWM占空比实现呼吸灯相关推荐

  1. 利用PWM实现LED呼吸灯

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

  2. esp8266灯上电闪一下_如何在ESP8266上实现变色呼吸灯效果?

    引言 呼吸灯最早是由苹果公司发明并应用于笔记本睡眠提示上,一经展出,立刻吸引众多科技厂商争相效仿.将其广泛用于各种电子产品中,尤其是智能手机.于是研究了一下,一起来DIY一个变色RGB呼吸灯吧.呼吸灯 ...

  3. 单片机开发—呼吸灯的三种实现方法

    目录 一.前言 1.什么是呼吸灯 2.如何实现呼吸灯 二.利用for循环实现呼吸灯 三.利用定时器实现呼吸灯 1.利用定时器中断实现 2.利用定时器输出PWM波实现 四.总结 一.前言 提示:本文使用 ...

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

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

  5. HT32F5232学习之利用dealy延时函数实现呼吸灯效果

    在上一篇文章中https://blog.csdn.net/OldHuangC/article/details/104350534,我利用了延时函数实现了按键软件去抖的方法,现在利用系统的滴答定时器来实 ...

  6. 【Verilog HDL 训练】第 10 天(PWM 呼吸灯)

    5月8日 PWM 用verilog实现PWM控制呼吸灯.呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗.系统时钟24MHz,pwm周期1ms,精度1us. 今天的题目我是第一次见,答案借鉴大神的:Veril ...

  7. 简单话题:LED呼吸灯和串口LED指示灯

    最近在串口发送引脚上接LED指示发送或者接收状态,但是需求是希望连续发送或者接收字符过程中LED闪烁,而不是保持在一个常量或者常灭的状态.首先,把实际电路图和串口时序贴出来: 可以看出串口发送接收空闲 ...

  8. wringPi 初始化GPIO 为上拉_玩转GPIO之PWM点亮呼吸灯(非树莓派)

    在这篇文章,我介绍了基于逸宸电子开发的总线适配器来点亮LED灯的基本方法! myastrotong:玩转GPIO之点灯(非树莓派)​zhuanlan.zhihu.com 这款总线适配器的介绍见这里: ...

  9. 【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  10. 【蓝桥杯单片机(14)】PWM波实现呼吸灯

    PWM:Pulse-Width Modulation的缩写,中文意思为脉冲宽度调制,它是一种占空比可控制的脉冲波形 占空比:一个完整的脉冲周期,是由高电平和低电平组成的,而占空比表示在一个脉冲周期里, ...

最新文章

  1. python中文昵称-官方出品 Python 中文文档!拜托,别再说看不懂了
  2. linux debain systemd 开机启动 nodejs 兼容原initd启动 forever 开机自启
  3. pyspark dataframe基本用法
  4. 减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
  5. NOIP2017洛谷P3953:逛公园(分层图最短路、dp、拓扑)
  6. swing程序 过时拉嘛_从关闭或过时的应用程序导入文件
  7. 金融评分卡项目—3.流失预警模型中的数据预处理与特征衍生
  8. python series拼接_pandas数据拼接的实现示例
  9. OBS 录制黑屏的解决方法
  10. Django作为微信小程序后端实践
  11. python基础之排列组合以及正则表达式
  12. 惠普笔记本需要按下FN键,F5起作用;惠普笔记fn键开启和关闭功能;则无需FN可直接使用F1-F12功能按键。
  13. MCE | 世界“第一杀手”——心血管疾病
  14. R语言read.xlsx( )函数报错 LoadLibrary failure: %1 不是有效的 Win32 应用程序
  15. JS: 如何计算一个月有多少天
  16. 手把手教你使用wordpress搭建个人网站
  17. 图像分类竞赛——添翼杯人工智能应用创新大赛——rank4解决方案
  18. 尝试自己制作一个网页版的单机冒险岛!!
  19. 【艾琪出品】《计算机应用基础》【试题汇总7】南开在线作业答案
  20. 基于人工势场法的移动机器人路径规划研究(Matlab代码实现)

热门文章

  1. 聚客通微信scrm系统-微信个人号sdk云控方案实现非微信ipad/mac协议
  2. 1. 查询表customer——查询姓名和联系人相同的顾客信息
  3. 一文详细理解计算机网络 - 物理层(考试和面试必备)
  4. Fake it till you make it: face analysis in the wild using synthetic data alone
  5. 【火灾疏散建模】基于MATLAB的火灾人员疏散建模编程和仿真分析
  6. linux系统查看内核版本是多少,在linux下查看内核版本、gcc版本、操作系统多少位等参数...
  7. 计算机桌面我是电脑丢失,计算机修改用户后,桌面文件丢失. 电脑桌面
  8. 解决 win10飞行模式 无限自动开关 无法关闭
  9. 马斯克的“星链”会不会威胁中国太空安全?肯定会!
  10. Vue前端页面开发之vue2.0脚手架搭建