单片机产生SPWM课程设计报告_第1页
单片机产生SPWM课程设计报告_第2页
单片机产生SPWM课程设计报告_第3页
单片机产生SPWM课程设计报告_第4页
单片机产生SPWM课程设计报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计基于89C52单片机SPWM波形发生器摘 要本系统由89C52单片机控制模块、滤波和稳压模块组成。利用Matlab计算SPWM脉冲序列占空比,采用查表方式,控制双极性SPWM控制脉冲序列的输出。关键字:单片机 Matlab 查表 SPWM1设计目的和要求1.1设计目的设计并制作一套单相SPWM触发脉冲电路,掌握SPWM算法和硬件实现方法,理解驱动电路功能。1.2任务要求采用双极调制算法,产生一个7脉冲SPWM触发脉冲,并用单片机数字化近似实现;完成拓展硬件电路,软件编程和调试;具有2ms死区设计;低次谐波较少;2设计方案本系统以89C52单片机为控制核心,由查表法通过定时器产生SPWM

2、波,系统设计框图如下:电源模块输出+5V双极性pwm转换电路spwm波单片机主控电路模块图1 设计框图3 理论分析和计算3.1查表产生SPWM波理论分析SPWM采用频率数倍于正弦波的三角波调制正弦波,可得到近似于正弦波的输出。三角波的频率越高,即载波比越高,谐波的频率就越高,输出端滤波器就更容易去除谐波。查表就是通过计算得到脉冲序列中每一个矩形脉冲周期内高低电平持续时间,c语言编程时用数组来表示,通过编写对应程序来查表进而控制输出端口高低电平时间及转换,从而产生SPWM波。图2 SPWM原理图3.2利用Matlab计算SPWM脉冲序列占空比MATLAB是一个高级的数学分析与运算软件,具有强大的

3、计算功能。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 =

4、 0.00000001;start = 0;stop = 0.02;% plotx=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)&

5、#39;,'L2=4*sin(2*pi*f*x)/5');xlabel('x');ylabel('y'); %找交点jCount = 0;t=0;j=0;for i=1:length(x) if(abs(L1(i)-L2(i) <prec) jCount = jCount + 1; j=j+1; t(j)=x(i); display(strcat('第',num2str(jCount),'交点是:'); if jCount=1 display(strcat('(',num2str(x(i),&

6、#39;,',num2str(L1(i),')') else X=216-(t(j)-t(j-1)*106;%计算定时器初值 HEX=dec2hex(round(X),4);%将初值化为十六进制 display(strcat('(',num2str(x(i),',',num2str(L1(i),'),第 ',num2str(jCount),'与',num2str(jCount-1),'交点电平持续时间:',num2str(t(j)-t(j-1),'ms,','定时器初

7、始值:',num2str(HEX); end lh = line(x(i) x(i),min(min(L1),min(L2) L1(i); %横坐标 set(lh,'color','green'); set(lh,'LineStyle','-'); text(x(i),L1(i),strcat('P_',num2str(jCount),'(',num2str(x(i),',',num2str(L1(i),')'); end end3.2.2Matlab运行结果

8、>>第1交点是:(0,0)第2交点是:(0.00097685,0.24167),第2与1点电平持续时间0.00097685ms,定时器初值:FC2F第3交点是:(0.0025405,0.57283),第3与2点电平持续时间0.0015636ms,定时器初值:F9E4第4交点是:(0.0029758,0.64361),第4与3点电平持续时间0.00043531ms,定时器初值:FE4D第5交点是:(0.0048886,0.79952),第5与4点电平持续时间0.0019128ms,定时器初值:F887第6交点是:(0.0051114,0.79952),第6与5点电平持续时间0.000

9、22276ms,定时器初值:FF21第7交点是:(0.0070242,0.64361),第7与6点电平持续时间0.0019128ms,定时器初值:F887第8交点是:(0.0074595,0.57283),第8与7点电平持续时间0.00043531ms,定时器初值:FE4D第9交点是:(0.0090232,0.24167),第9与8点电平持续时间0.0015636ms,定时器初值:F9E4第10交点是:(0.01,0),第10与9点电平持续时间0.00097685ms,定时器初值:FC2F第11交点是:(0.010977,-0.24167),第11与10点电平持续时间0.00097685ms,

10、定时器初值:FC2F第12交点是:(0.01254,-0.57283),第12与11点电平持续时间0.0015636ms,定时器初值:F9E4第13交点是:(0.012976,-0.64361),第13与12点电平持续时间0.00043531ms,定时器初值:FE4D第14交点是:(0.014889,-0.79952),第14与13点电平持续时间0.0019128ms,定时器初值:F887第15交点是:(0.015111,-0.79952),第15与14点电平持续时间0.00022276ms,定时器初值:FF21第16交点是:(0.017024,-0.64361),第16与15点电平持续时间0

11、.0019129ms,定时器初值:F887第17交点是:(0.01746,-0.57283),第17与16点电平持续时间0.00043531ms,定时器初值:FE4D第18交点是:(0.019023,-0.24167),第18与17点电平持续时间0.0015636ms,定时器初值:F9E4第19交点是:(0.02,0),第19与18点电平持续时间0.00097685ms,定时器初值:FC2F图3 Matlab运行结果图3.3单片机电平时间间隔表由MATLAB计算结果可以得出下表:十进制电平时间间隔表:976 1563 435 1912 222 1912 435 1563 976976 1563

12、 435 1912 222 1912 435 1563 976十六进制定时器初值表:FC2F F9E4 FE4D F887 FF21 F887 FE4D F9E4 FC2F FC2F F9E4 FE4D F887 FF21 F887 FE4D F9E4 FC2F4单片机程序设计4.1程序设计流程图查表切换计数值,翻转I/O口开始I/O端口初始化定时器A初始化定时器A赋初始值,开总中断启动定时器定时器计数,I/O端口保持电平图4 程序流程图4.2C语言实现程序4.2.1主程序#include<reg52.h>#include<intrins.h>#define uint

13、unsigned intint i=0;char flag=0;sbit P10=P10;sbit P17=P17;sbit P20=P20;/近似int a=1000,1000,1900,200,1900,500,1500,1000,1000,1500,500,1900,200,1900,500,1500,2000;/精确int a1=976 1563 435 1912 222 1912 435 1563 976 976 1563 435 1912 222 1912 435 1563 976;void main()P10=0;P17=0;IE=0x82;TMOD=0x01;TH0=(6553

14、6-ai)/256;TL0=(65536-ai)%256;TR0=1;while(1)if(flag=1)flag=0;P17=P17;P20=P20; 4.2.2中断程序void timer0() interrupt 1i+;if(i=18)i=0;TH0=(65536-ai)/256;TL0=(65536-ai)%256;flag=1;5电路设计图5 单片机主控电路图6 电源模块图7 双极性pwm转换电路6测试和结果6.1测试过程6.1.1使用直流稳压电源,示波器,万用表以及低通滤波器进行测试图8 测试环境6.1.2使用低通滤波器对输出电压进行处理图9 滤波过程6.1.3正负12V直流电源

15、供电图10 供电电源6.2测试波形6.2.1低通滤波的截止频率较低时的输出波形图11 实验波形6.2.2含有少量杂波的输出波形图12 实验波形6.2.3截止频率较大时的输出波形图13 实验波形6.2.4含有少量杂波的输出波形图14 实验波形6.2.5黄色为使用较低截止频率的滤波器后的输出波形图15 实验波形6.2.6使用较高截止频率的滤波器测试结果蓝色为SPWM波形,黄色为使用较高截止频率的滤波器后的输出波形图16 实验波形6.2.7使用非常高的截止频率的滤波器测试结果蓝色为SPWM波形,黄色为使用非常高的截止频率的滤波器后的输出波形图17 实验波形图18 实验波形7测试结果分析偏差原因:在定时器中断服务程序中查表赋定时的初值,占用时间较多,导致定时不准确;另外,测试仪器本身存在测量误差。8体会和收获经过两周的课程设计,我们对SPWM波形产生的原理有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论