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

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

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

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

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

PWM(脉宽调制)是一种常用的信号处理技术,广泛应用于各种电子设备中。本文将介绍如何使用PWM生成正弦波信号,这对于从事电子工程和嵌入式系统开发的工程师来说具有重要参考价值。

原理

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

公式推导如下:

其中,

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

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

代入得:

进一步:

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

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

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

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

实现

清楚原理,实现就比较简单了。

对于 ( V_{out} ),可将其离散化,做成表格,输出时按表格内容输出即可,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号