提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
STM32输出双极性SPWM
前言
SPWM(Sinusoidal PWM),即正弦脉冲宽度调制技术,下面讲解如何通过CubeIDE实现STM32H743输出SPWM信号。
一、SPWM逆变原理
SPWM逆变主要基于冲量等效原理,即将一个周期的正弦波等分为N段,每段的长度为T,可以算出任意一段的积分面积S(即正弦波在T时间段内与横轴围成的面积),如果在每一段T时间段内,SPWM波与横轴围成的面积都等于T内正弦波的定积分S,那么通过相应的滤波电路对SPWM进行滤波后即可得到想要的正弦波。
二、单片机输出SPWM步骤
1.确定载波频率 Fp
载波就是下图中红线标出的波形(即单片机输出的PWM波)。PWM占空比的调整都在每个载波周期内进行。对于STM32单片机,我们只需要控制在某个载波周期内PWM的占空比即可。一般来讲,载波频率设置的越高,滤出的正弦波越细腻,能调出的正弦波频率上限也越高。
2.确定想要得到的正弦波频率 Fs
3.计算出正弦波一周波的分段N
N=Fp/Fs (PWM频率除以正弦波频率)
由此可见,正弦波频率越低,N越大,基波频率越低,N越小。
4.得出PWM占空比序列
这里的分段计算,就是在整个正弦波的一个周期内,依次计算。计算出每段S后,另PWM与横轴围成的面积等于S,即可得出该段的PWM占空比。一周期计算完成后,即得出了SPWM的占空比序列。
5.单片机输出PWM通过示波器观测现象
将得到的SPWM序列(一维数组)写入单片机后,在每个定时器中断中更新占空比即可。
二、SPWM序列生成方法
1.微软商店搜索“实用电子工具箱”
时钟频率Ft:单片机输出PWM使用的定时器频率(不知道的查手册,STM32H743定时器一般挂载在APH2上,200MHz)
载波Fp:定时器设置输出的PWM频率
基波Fs:想要的正弦波频率
SPWM幅值ARR:PWM的ARR值,重装载值
每周期点数N:即正弦波一周波的分段N,PWM频率除以正弦波频率
本文使用的参数如图中所示。(勾选对称采样法)
2.Matlab生成SPWM序列方法
代码如下(示例):
%-----硬件设置------------------------------------