发布时间 : 星期六 文章单片机产生SPWM课程设计报告更新完毕开始阅读01cca6ae32687e21af45b307e87101f69f31fb3c
课程设计
基于89C52单片机SPWM波形发生器
摘 要
本系统由89C52单片机控制模块、滤波和稳压模块组成。利用Matlab计算SPWM脉冲序列占空比,采用查表方式,控制双极性SPWM控制脉冲序列的输出。
关键字:单片机 Matlab 查表 SPWM
1设计目的和要求 1.1设计目的
设计并制作一套单相SPWM触发脉冲电路,掌握SPWM算法和硬件实现方法,理解驱动电路功能。
1.2任务要求
①采用双极调制算法,产生一个7脉冲SPWM触发脉冲,并用单片机数字化近似实现;
②完成拓展硬件电路,软件编程和调试; ③具有2ms死区设计; ④低次谐波较少;
2设计方案
本系统以89C52单片机为控制核心,由查表法通过定时器产生SPWM波,系统设计框图如下:
电源模块 单片机主控电spwm波 路模块 +5V 双极性pwm转换电路 输出
图1 设计框图
3 理论分析和计算
3.1查表产生SPWM波理论分析
SPWM采用频率数倍于正弦波的三角波调制正弦波,可得到近似于正弦波的输出。三角波的频率越高,即载波比越高,谐波的频率就越高,输出端滤波器就更容易去除谐波。
查表就是通过计算得到脉冲序列中每一个矩形脉冲周期内高低电平持续时间,c语言编程时用数组来表示,通过编写对应程序来查表进而控制输出端口高低电平时间及转换,从而产生SPWM波。
图2 SPWM原理图
3.2利用Matlab计算SPWM脉冲序列占空比
MATLAB是一个高级的数学分析与运算软件,具有强大的计算功能。SPWM控制通过MATLAB进行分析和设计,可取得事半功倍的效果。采用MATLAB可方便地得到正弦波与三角波的交点。在判断交点时,可通过交点的数学定义来判断。所谓交点,就是在交点附近时刻两函数之差值的绝对值趋于0或许某一精度,而在交点附近的极小区域,离交点越远,差值的绝对值逐渐增大。
3.2.1Matlab计算程序
以下子程序为计算交点的MATLAB程序。基波数据L2 =4*sin(2*pi*f*x)/5,载波数据L1=sawtooth(2*pi*9*f*(x+1/1800),0.5),t(j)为交点时刻数据。 % 设置 clc;
prec = 0.00001; %精度 f=50;
step = 0.00000001; start = 0; stop = 0.02; % plot
x=start:step:stop;
L1=sawtooth(2*pi*9*f*(x+1/1800),0.5); L2 =4*sin(2*pi*f*x)/5;
plot(x,L1,'red',x,L2,'blue');
legend({'L1','L2'},'location','NorthWest');
title({'曲线交点图',
'L1=sawtooth(2*pi*9*f*(x+1/1800),0.5)','L2=4*sin(2*pi*f*x)/5'}); xlabel('x'); ylabel('y');