PWM详解(嵌入式学习)

这里写目录标题

  • 前言
  • 定义
  • 参数
  • 工作原理
  • 应用
  • 练习

前言

在STM32微控制器中,PWM代表脉冲宽度调制(Pulse Width Modulation)。PWM是一种用于控制电子设备的技术,通过调整信号的脉冲宽度和周期,可以模拟出不同的电压或功率级别。
在这里插入图片描述

在STM32中,PWM功能常用于控制电机速度、调节LED亮度、产生音频信号等应用。通过调整PWM的占空比(高电平时间占总周期的比例),可以控制输出信号的平均电压或功率。例如,如果PWM信号的占空比为50%,即高电平时间等于总周期的一半,那么输出信号的平均电压或功率也将为输入电压或功率的一半。
在这里插入图片描述

STM32微控制器提供了多个PWM通道,每个通道可以配置为不同的输出引脚,并具有灵活的配置选项,例如频率、占空比、极性等。开发者可以使用STM32的PWM功能来实现精确的电子设备控制。
在这里插入图片描述

定义

PWM是脉冲宽度调制(Pulse Width Modulation)的缩写,它是一种调制技术,用于控制模拟信号的平均值。通过调整脉冲的宽度和周期,PWM可以模拟出不同的电压或功率级别。
在这里插入图片描述

在PWM中,信号由一系列固定周期的脉冲组成。脉冲的宽度表示信号的高电平时间,而周期表示脉冲的重复时间。通过改变脉冲的宽度与周期之间的比例,可以控制信号的平均电压或功率。

例如,如果脉冲的宽度占周期的一半,即50%的占空比,那么输出信号的平均电压或功率也将为输入电压或功率的一半。通过改变占空比,可以实现对输出信号的精确控制。

PWM广泛应用于各种领域,包括电机控制、LED亮度调节、音频信号生成等。它是一种高效、精确的控制技术,常用于模拟信号的数字化处理和电子设备的调节与控制。

参数

周期
高低电平变化所需要的时间,单位:ms
T=1/f T是周期,f是频率。
频率
在1秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说一秒钟PWM有多少个周期,单位Hz。
例如:如果频率为50Hz ,也就是说一个周期是20ms,那么一秒钟就有50次PWM周期。
占空比
在一个脉冲周期内,高电平的时间占整个周期时间的比例,单位是% (0%-100%)。
在这里插入图片描述

工作原理

PWM的工作原理基于对脉冲的宽度和周期进行调制。下面是PWM的基本工作原理:

  1. 设定目标数值:首先,确定需要控制的目标数值,例如调节电机的速度或LED的亮度。这个目标数值通常以一个百分比或占空比的形式表示。

  2. 确定频率:选择PWM信号的频率,即脉冲的周期。频率决定了脉冲的重复速率,通常以赫兹(Hz)表示。常见的频率范围是几百赫兹到几十千赫兹。

  3. 计算占空比:根据目标数值和所选频率,计算所需的占空比。占空比表示高电平时间占周期的比例。例如,如果目标是50%的亮度或速度,则占空比为50%。

  4. 生成PWM信号:使用计时器和计数器来生成PWM信号。计时器根据所选频率生成一个固定周期的计时事件,并从0开始计数。计数器在每个计时事件中递增,当计数值小于占空比所对应的计数阈值时,输出为高电平;否则,输出为低电平。

  5. 输出控制:根据计数器的值,控制输出引脚的电平状态。在计数值小于阈值时,输出为高电平;在计数值大于等于阈值时,输出为低电平。这样就形成了一系列固定周期、宽度可变的脉冲信号。

通过调整占空比,可以控制输出信号的平均电压或功率。占空比越高,输出信号的平均电压或功率就越高,而占空比越低,输出信号的平均电压或功率就越低。

使用PWM,可以实现精确的控制,例如精确调节电机的速度或改变LED的亮度级别。PWM技术的优点包括高效率、精度高以及对输出设备影响小等。

计数器寄存器 (TIMx_CNT)
自动装载寄存器 (TIMx_ARR)
捕获/比较寄存器(TIMx_CCRx)

向上计数模式:
在这里插入图片描述
输出过程:
当0-t1这段时间,计数器寄存器的CNT的值是小于CCR,输出高电平。
当t1-t2这段时间,计数器寄存器的CNT的值是大于CCR且小于ARR的,输出低电平。
当CNT的值达到ARR里的值时,产生溢出事件,自动清零再次从0开始向上计数。

应用

PWM广泛应用于各种领域,以下是一些常见的PWM应用:

  1. 电机控制:PWM被广泛用于直流电机和步进电机的速度控制。通过改变PWM信号的占空比,可以调节电机的平均电压或功率,从而控制电机的转速和转矩。

  2. LED亮度调节:PWM常用于LED照明中,可以通过改变PWM信号的占空比来控制LED的亮度。高占空比会使LED接收到更多的电流,从而提高亮度;低占空比则减小电流,降低亮度。由于LED的响应速度很快,所以人眼无法察觉到PWM信号的变化,从而实现了无闪烁的亮度调节。

  3. 音频信号生成:PWM也可以用于产生音频信号,例如在音频合成器或音频放大器中。通过调整PWM信号的频率和占空比,可以生成不同频率和幅度的音频信号。

  4. 电源控制:PWM在开关电源中得到广泛应用。通过调整PWM信号的占空比和频率,可以实现高效的电能转换,从而提高电源的效率和稳定性。

  5. 温度控制:PWM可用于温度控制应用,如加热器或风扇控制。通过调整PWM信号的占空比,可以控制加热器的输出功率或风扇的转速,从而实现精确的温度控制。

  6. 无线通信:PWM可用于数字调制解调器中,将数字信号转换为模拟信号进行传输。例如,脉冲位置调制(PPM)和脉冲编码调制(PCM)等调制技术常用于无线通信系统中。

这只是一小部分PWM的应用领域,实际上PWM技术在各种电子设备和控制系统中都有广泛应用,以实现精确的信号调节和控制。

练习

通过PWM信号调节LED灯亮度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
频率 :
1/T = 1/1ms = 1/0.001s = 1000HZ
周期 :
1ms
占空比 :
50%
在TIM找到PWM信号生成函数:
在这里插入图片描述
在main.c中调用
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32开发——非标协议(DH11+LCD1602)

1.STM32分文件实现代码 编译的总文件夹dh11andlcd,C文件不能跨文件夹查找,新增的分文件,需要都放调用的文件夹下 C文件和H文件理解:H文件是门脸,放在前面给别人的,别人一看就知道有什么东西。C是给内部人用…

电商项目10:商品管理、仓库管理

电商项目10:商品管理、仓库管理 1、商品管理1.1、spu检索1.1.1、后端1.1.2、前端 1.2、sku检索1.2.1、后端 2、库存管理2.1、启动ware后端微服务2.2、仓库维护查询2.3、查询商品库存2.4、查询采购需求 1、商品管理 1.1、spu检索 1.1.1、后端 spu检索接口文档 S…

UDP和TCP网络编程

UDP和TCP网络编程 UDP网络编程UDP通信流程(回显服务)测试扩展《UDP字典查找单词》 TCP网络编程TCP互相通信测试 缓存区和缓存 UDP网络编程 特点: 无连接:发送数据前不需要建立连接。不可靠:没有重发机制,无…

面对Android开发高薪诱惑,如何拿到大厂offer?

前言 出来打工最看重的就是薪资,作为一名5年开发经验的Android人员。在如今的大环境中薪资一降再降,还没人要。技术还还算可以但是面试一直被刷下来?这是为什么,本篇我们来聊聊Android开发面试中的关键。 面试过程 通常面试过程…

VRRP协议是什么?详解它的工作原理

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解VRRP是什么,以及它的工作原理,优点以及基本概念。 目录 一、VRRP协议是什么? 二、VRR…

【FPGA】Verilog:时序电路设计 | 自循环移位寄存器 | 环形计数 | 扭环计数 | 约翰逊计数器

前言:本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器 ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片 配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度 存储器:2Mb…

将当前conda环境导出为yaml文件

conda环境的转移和复制 conda导出已有环境,环境会被保存在environment.yaml文件中。 conda env export > environment.yaml 当我们想再次创建该环境,或根据别人提供的.yaml文件复现环境时,就可以通过下面的命令来复现安装环境了。 conda …

【Docker】子系统与其相关名词的界定、Control Groups等详细讲解

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

tcp、udp调试工具

NetAssist(网络调试助手) 下载地址:http://www.cmsoft.cn/resource/102.html tcp-server代码 # codingutf-8 # 多线程TCP服务器import socket import threadingbind_ip "192.168.137.1" # 监听的IP 地址 bind_port 5100 # 监听的端口# 建立一个socke…

用OpenCV进行OCR字符分割

1. 引言 本文重点介绍如何利用传统的图像处理的方法来进行OCR字符切分,进而可以用分割后的单个字符做相应的后续任务,虽然现在计算机视觉依然是卷积神经网络的天下,但是对于一些相对简单的落地场景传统方案还是很有效的。 闲话少说&#xff…

c#学习笔记

目录 1.语句块2.Write和WriteLine的区别:3.params4.托管代码和非托管代码5.DllImport的使用:6.WriteLine、ReadLine和ReadKey:7.C#中访问修饰符8.类型的实例化9.成员可以分为两种:数据成员和函数成员10.枚举enum和结构struct的区别…

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型 VScode(Visual Studio Code) 安装模型必要插件VScode 预览自定义关节(articulations)动作VScode 导入 GLB 格式模型VScode 导出 GLB 格式模型Cesium 在线示例…