问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

采用PWM生成正弦波信号的简单方法

创作时间:
作者:
@小白创作中心

采用PWM生成正弦波信号的简单方法

引用
CSDN
1.
https://blog.csdn.net/propor/article/details/139330247

PWM(脉冲宽度调制)是一种常用的信号处理技术,在电子工程领域有着广泛的应用。本文将介绍如何使用PWM技术生成正弦波信号,包括基本原理和具体实现方法。

1. 原理

采用PWM生成正弦波信号,本质上是用一个PWM周期对应的平均电压去等效生成正弦信号的电压。设输出的正弦波电压(单极性输出,有一个直流偏置电压)如下图。

公式推导如下:

其中,

  • ( t_{on} ) 为PWM开启时间,
  • ( T ) 为PWM周期,
  • ( V_{cc} ) 为供电电压,
  • ( f ) 为输出正弦信号频率

令 ( m = \frac{t_{on}}{T} ),m即调制度,

代入得:

进一步:

对 ( \omega t ) 进行离散化,采样频率为 ( f_s ),一个周期采样点数 ( N ),采样序号 ( k ),则:

至此,我们只要确定输出 ( m ) 的大小及采样点数 ( N ),就可以确定输出PWM开启时间 ( t_{on} )。

在使用MCU/DSP进行PWM输出时,通常调整的是CCR(比较捕获寄存器)和ARR(自动重载寄存器),因此,上述等式也可写成:

注意:要想输出平滑的正弦信号,还需要在PWM输出接口加低通滤波器(如简单的RC滤波器),截止频率比输出模拟信号频率 ( f ) 稍大即可。

2. 实现

清楚原理,实现就比较简单了。对于 ( m ),可将其离散化,做成表格,输出时按表格内容输出即可,MATLAB代码如下:

fm = 100;
fs = 1000;
N = fs / fm;
k = 0:1:N;
y = sin(2 * pi * k / N);
plot(y);

实现过程中只需要将表格中数据按采用频率 ( f_s ) 输出即可(可以用定时器实现),不要忘记在PWM输出端加低通滤波器以平滑输出。

总结,本文介绍了采用PWM生成正弦波信号的简单方法。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号