打印
[范例教程]

单片机PWM

[复制链接]
1236|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eefas|  楼主 | 2023-11-25 14:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 PWM 简介

PWM(Pulse Width Modulation,脉冲宽度调制)是按一定规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调制方式。

在控制系统中最常用的是矩形波 PWM 信号,在控制时需要调节 PWM 波占空比。如下图所示,占空比是指高电平持续时间在一个周期时间内的百分比。控制电机的转速时,占空比越大,速度越快,如果全为高电平,占空比为 100% 时,速度达到最快。

当用单片机 I/O 输出 PWM 信号时,可采用以下三种方法:

  • 利用软件延时。当高电平延时时间到时,对 I/O 口电平取反变成低电平,再延时;当低电平延时时间到时,对该 I/O 口电平取反;如此循环,就可得到 PWM 信号。
  • 利用定时器。控制方法同上,只是利用单片机的定时器来定时进行高、低电平的翻转,而不用软件延时。
  • 利用单片机自带的 PWM 控制器。
2 定时器的应用

单片机的周期

  • 时钟周期,也成为振荡周期,定义为时钟频率的倒数(单片机外接晶振的倒数,如 12MHz 晶振的时钟周期就是 1/12 us)。它是单片机中最基本、最小的时间单位。在一个时钟周期内,CPU 仅完成一个最基本的动作。
  • 状态周期:时钟周期的 2 倍。
  • 机器周期 T c y T_{cy}Tcy​:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作。如取指令、存储器读/写等。机器周期由 12 个时钟周期( 6 个状态周期)组成。
  • 指令周期:指 CPU 执行一条指令所需的时间。指令周期一般包含 1 ~ 4 个机器周期。

定时器/计数器本质

定时器/计数器的本质是加 1 计数器(16 位),有高 8 位和低 82 个寄存器组成。TMOD 是定时器/计数器的工作模式寄存器,确定工作方式和功能,TCON 是控制寄存器,控制 T0T1 的启动和停止及设置溢出标志。

1 计数器输入的计数脉冲的来源:

  • 一个由系统的时钟振荡器输出脉冲经 12 分频后送来
  • 一个由 T0T1 引脚输入的外部脉冲源,每来一个脉冲计数器加 1

当加到计数器全为 1 时,在输入一个脉冲就使计数器回零,且计数器的溢出使 TCON 寄存器中 TF0TF11,向 CPU 发出中断请求。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。

定时器定时时间:计数值 N NN × 机器周期 T c y T_{cy}Tcy​。

定时器初值

溢出时计数器的值减去计数初值才是加 1 计数器的计数值。

定时器一旦启动,它便在原来的数值上开始加 1 计数,若在程序开始时,没有设置 TH0TL0,则默认是 0,假设时钟频率为 12MHz12 个时钟周期为一个机器周期,那么此时机器周期就是 1 us,计满 TH0TL0 就需要 2 16 − 1 2^{16} - 1216−1 个数,再来一个脉冲计数器溢出,随即向 CPU 申请中断,因此溢出一次共需 65536us,约 65.5ms

如果想要定时 50 ms,那么就需先给 TH0TL0 装入一个初值,在这个初值的基础上计 5000 个数后,定时器溢出,此时刚好就是 50ms 中断一次。当需要定时 1s 时,我们可以产生 2050ms 的定时器中断后,便认为是 1s

定时器初值计算方法

当用定时器的方式 1 时,设机器周期为 T c y T_{cy}Tcy​,定时器产生一次中断的时间为 t tt,那么需要计数的个数为 N = t / T c y N = t / T_{cy}N=t/Tcy​,装入 THX 和 TLX 中的数分别为:

T H X = ( 65536 − N ) / 256 THX = (65536 - N) / 256THX=(65536−N)/256
T L X = ( 65536 − N ) % 256 TLX = (65536 - N) \% 256TLX=(65536−N)%256


使用特权

评论回复
沙发
yorkbarney| | 2024-4-6 20:59 | 只看该作者
PWM信号的频率和占空比(高电平时间与周期时间的比率)会直接影响被控设备的性能。

使用特权

评论回复
板凳
bestwell| | 2024-4-8 10:16 | 只看该作者
在开关电源应用中,为了避免快速的开关动作导致的电流尖峰,需要在PWM信号中加入死区时间。

使用特权

评论回复
地板
linfelix| | 2024-4-8 17:31 | 只看该作者
PWM频率和占空比是影响PWM输出波形的关键参数。PWM频率决定了波形的周期,而占空比则决定了波形在一个周期内的高电平持续时间。在设置这两个参数时,需要根据实际应用需求进行调整。

使用特权

评论回复
5
bartonalfred| | 2024-4-9 12:34 | 只看该作者
PWM信号可能会对电源电路产生影响,尤其是在低功耗应用中

使用特权

评论回复
6
ccook11| | 2024-4-9 13:40 | 只看该作者
PWM通常通过单片机的定时器模块实现。需要正确配置定时器的模式、时钟源、预分频器等参数,以产生所需的PWM频率和占空比。

使用特权

评论回复
7
wengh2016| | 2024-4-9 14:04 | 只看该作者
比较匹配值决定了PWM的占空比。通过调整比较匹配值,可以实现对PWM占空比的精确控制。

使用特权

评论回复
8
mattlincoln| | 2024-4-9 17:38 | 只看该作者
PWM的占空比(即高电平时间占整个周期的比例)决定了控制的精度和效果,比如在照明控制中,不同的占空比对应不同的亮度级别。

使用特权

评论回复
9
houjiakai| | 2024-4-9 20:49 | 只看该作者
PWM的频率应与控制对象匹配,例如,在电机控制中可能需要较低频率的PWM,而在音频控制中可能需要较高频率的PWM。

使用特权

评论回复
10
i1mcu| | 2024-4-10 13:26 | 只看该作者
PWM频率不宜设置过高或过低,过高可能导致负载响应不过来,过低则可能引起噪音或震动。

使用特权

评论回复
11
vivilyly| | 2024-4-10 14:13 | 只看该作者
根据单片机的时钟频率和PWM的频率要求,设置合适的预分频系数。预分频系数会影响定时器的计数频率,从而影响PWM的输出频率。

使用特权

评论回复
12
jackcat| | 2024-4-10 15:12 | 只看该作者
不同的单片机可能支持多种PWM模式,如快速PWM、相位校正PWM等。

使用特权

评论回复
13
jimmhu| | 2024-4-12 04:11 | 只看该作者
大多数单片机都有多个定时器,选择合适的定时器及其工作方式对于生成稳定的PWM信号至关重要。

使用特权

评论回复
14
zerorobert| | 2024-4-12 10:36 | 只看该作者
选择适合应用的工作模式(如相位正确PWM或快速PWM),并根据需要选择合适的PWM分辨率,这决定了PWM的精度。

使用特权

评论回复
15
nomomy| | 2024-4-12 12:57 | 只看该作者
选择适当的PWM频率和占空比以满足具体应用需求。频率选择要考虑电机的特性和应用要求,以避免可听噪声和不必要的机械振动,同时也要避免频率过高增加开关损耗。占空比应小于PWM周期,避免输出口持续为高电平。

使用特权

评论回复
16
maqianqu| | 2024-4-12 16:47 | 只看该作者
在某些单片机中,PWM输出可能与定时器和中断功能有关。在配置PWM输出时,需要确保相应的定时器和中断功能已经正确设置。

使用特权

评论回复
17
benjaminka| | 2024-4-15 15:42 | 只看该作者
更高级的方法是利用单片机自带的硬件PWM输出功能,通过简单配置即可自动输出PWM波形,无需CPU干预,效率高且准确。

使用特权

评论回复
18
lzmm| | 2024-4-16 21:29 | 只看该作者
为了防止过流、过压等故障,需要在PWM电路中加入保护电路。例如,可以使用电流采样电阻和比较器来实现过流保护。

使用特权

评论回复
19
hudi008| | 2024-4-17 12:48 | 只看该作者
不同型号的单片机可能有不同的PWM输出引脚,需要查阅相关资料以确保正确选择。

使用特权

评论回复
20
averyleigh| | 2024-4-20 19:09 | 只看该作者
关闭PWM后,IO口会由PWM输出变为GPIO口,此时的IO口输出为不确定状态

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

2589

帖子

2

粉丝