① 单片机产生spwm波
#include <AT89X52.H>
unsigned char code table[]={127,
130,
133,
136,
139,
143,
146,
149,
152,
155,
158,
161,
164,
167,
170,
173,
176,
179,
182,
184,
187,
190,
193,
195,
198,
200,
203,
205,
208,
210,
213,
215,
217,
219,
221,
224,
226,
228,
229,
231,
233,
235,
236,
238,
239,
241,
242,
244,
245,
246,
247,
248,
249,
250,
251,
251,
252,
253,
253,
254,
254,
254,
254,
254,
255,
254,
254,
254,
254,
254,
253,
253,
252,
251,
251,
250,
249,
248,
247,
246,
245,
244,
242,
241,
239,
238,
236,
235,
233,
231,
229,
228,
226,
224,
221,
219,
217,
215,
213,
210,
208,
205,
203,
200,
198,
195,
193,
190,
187,
184,
182,
179,
176,
173,
170,
167,
164,
161,
158,
155,
152,
149,
146,
143,
139,
136,
133,
130,
127,
124,
121,
118,
115,
111,
108,
105,
102,
99,
96,
93,
90,
87,
84,
81,
78,
75,
72,
70,
67,
64,
61,
59,
56,
54,
51,
49,
46,
44,
41,
39,
37,
35,
33,
30,
28,
26,
25,
23,
21,
19,
18,
16,
15,
13,
12,
10,
9,
8,
7,
6,
5,
4,
3,
3,
2,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
2,
3,
3,
4,
5,
6,
7,
8,
9,
10,
12,
13,
15,
16,
18,
19,
21,
23,
25,
26,
28,
30,
33,
35,
37,
39,
41,
44,
46,
49,
51,
54,
56,
59,
61,
64,
67,
70,
72,
75,
78,
81,
84,
87,
90,
93,
96,
99,
102,
105,
108,
111,
115,
118,
121,
124,
};
//-----------------------定义管脚--------------------------------------------------------
#define PWM_T 255 //定义PWM的周期T为10ms
unsigned char PWM_t; //PWM_t为脉冲宽度(0~100)时间为0~10ms
unsigned char time_count; //定时计数
unsigned char a;
sbit PWM=P2^7; //PWM 波形输出
void main(void)
{
PWM=0;
PWM_t=0;
TMOD=0x12; /*定时器1为工作模式1,0为模式2(8位自动重装) */
TH0=0x216; //保证定时时长为0.1ms
TL0=0x216;
TR0=1;
ET0=1;
EX0=1;
EA=1;
while(1)
{
}
}
void t0(void) interrupt 1 using 0
{
time_count++;
if(time_count>=PWM_t)
{
time_count=0;
a++;
if(a>=255)
a=0;
}
if(time_count<table[a])
PWM=1;
else
PWM=0;
}
void M() interrupt 0
{
PWM_t = PWM_t+ 20;
}
② 新人求助,怎么用51单片机产生SPWM波
用51单片机产生SPWM波,所谓SPWM波、就是PWM波 的占空比按照正弦波的规律 变化,也就是PWM波 是 正弦波的 载波,编程时 按照 正弦波 的 规律 调整 PWM 的占空比 就可以了。
③ 已经用单片机产生SPWM波,但如何控制调节正弦波的幅度
看来你没真正理解spwm
SPWM(Sinusoidal PWM)法是一种比较成熟的,目前使用较广泛的PWM法。前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。
其实改变频率就可以改变功率了
④ 1.简述什么是PWM和SPWM波形。并指出两者的区别2在SPWM调制中,调制波和载波的信号波形一般各是什么
PWM波形就是指占空比可变的波形;SPWM波形是指脉冲宽度按正弦规律变化且和正弦波等效的PWM波形。两者的区别在于PWM改变输出方波的占空比,来改变等效输出电压;SPWM调制脉冲方式,脉冲宽度时间占空比按正弦规律排列,这样输出波形经过适当的滤波可以做到正弦波输出。
PWM脉冲宽度调制是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
在SPWM调制中,调制波指的是正弦波,载波的信号波形是三角波。SPWM波形有2种形式:单极性SPWM波和双极性SPWM波,还有三相SPWM波。
(4)单片机spwm波扩展阅读
具体应用:
SA8281型SPWM波发生器原理及在变频器中的应用
脉宽调制技术通过一定的规律控制开关元件的通断,来获得一组等幅而不等宽的矩形脉冲波形,用以近似正弦电压波形。脉宽调制技术在逆变器中的应用对现代电力电子技术以及现代调速系统的发展起到极大的促进作用。
由于场控自关断器件的不断涌现,相应的高频SPWM(正弦脉宽调制)技术在电机调速中得到了广泛应用。
SA8281是MITEL公司推出的一种用于三相SPWM波发生和控制的集成电路,它与微处理器接口方便,内置波形ROM及相应的控制逻辑,设置完成后可以独立产生三相PWM波形,只有当输出频率或幅值等需要改变时才需微处理器的干预,微处理器只用很少的时间控制它,因而有能力进行整个系统的检测。
保护和控制等。基于SA8281和89C52的变频器具有电路简单。功能齐全。性能价格比高。可靠性好等优点。
单片机生成
市场上使用的很多单片机都有生成SPWM控制波形的功能,该生成波形外接驱动电路即可驱动功率桥,达到逆变的目的。应该说,只要具有PWM模块和定时器模块的单片机都可以完成此任务。
具体实现即首先将正弦表赋值给数组。然后PWM波形发生模块每个PWM周期进入中断,在ISR中按照正弦表更改PWM比较器的值,依次循环即可 。
⑤ 关于单片机产生PWM波,我使用调制波载波比较方法生成一个SPWM波,那么如果想要调整占空比如何调整
单片机产生PWM波,用调制波载波生成一个SPWM波,所谓SPWM是 用 PWM 生成载有正弦波分量的一种PWM波 称为 SPWM 波,通过电感、电容回路 可以得到 正弦波。单片机要产生 SPWM 波,就是 要 让 PWM 波 按照 正弦波的 规律 调节 PWM 波的 占空比 就是 SPWM 波。
⑥ 用单片机输出 spwm 波形
stc12c5608ad单片机有硬件PWM功能,只要在主程序里按正弦规律改变输出脉冲的占空比即可,可将正弦波分成50个时间段,每个时间段是20ms/500=400us,用定时器定时400us改变一次CCAP1L的值(该值除以256即是占空比)即可,CCAP1L的值可以在程序中用三角函数计算,也可以事先计算好存入数组中.
/*******************************/
void PWM_init (void){//PWM初始化函数
CMOD=0x02; //设置PCA定时器,计数频率为晶振频率/2 当为12Mhz时,PWM输出频率约23.4Khz
CL=0x00;
CH=0x00;
CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(0100 0010)
CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同
CCAP1H=0x00; // PWM1初始时为0
CR=1; //启动PCA定时器
}
/******************************************************************************/void PWM1_set (uchar a)//PWM1占空比设置函数
{
CCAP1L=a; //设置值直接写入CCAP1L
CCAP1H=a; //设置值直接写入CCAP1H
}
⑦ 简述spwm控制的工作原理
一个连续函数是可以用无限多个离散函数逼近或替代的,因而可以设想用多个不同幅值的矩形脉冲波来替代正弦波,在一个正弦半波上分割出多个等宽不等幅的波形(假设分出的波形数目n=12);
如果每一个矩形波的面积都与相应时间段内正弦波的面积相等,则这一系列矩形波的合成面积就等于正弦波的面积,也即有等效的作用。为了提高等效的精度,矩形波的个数越多越好,显然,矩形波的数目受到开关器件允许开关频率的限制。
例如,把正弦半波分作n等分(n=9),把每一等分的正弦曲线与横轴所包围的面积都用一个与此面积相等的矩形脉冲来代替,矩形脉冲的幅值不变,各脉冲的中点与正弦波每一等分的中点相重合,这样就形成spwm波形。
同样,正弦波的负半周也可用相同的方法与一系列负脉冲波等效。这种正弦波正、负半周分别用正、负脉冲等效的spwm波形称作单极式spwm。
单片机生成
市场上使用的很多单片机都有生成SPWM控制波形的功能,该生成波形外接驱动电路即可驱动功率桥,达到逆变的目的。应该说,只要具有PWM模块和定时器模块的单片机都可以完成此任务。
具体实现即首先将正弦表赋值给数组。然后PWM波形发生模块每个PWM周期进入中断,在ISR中按照正弦表更改PWM比较器的值,依次循环即可。
⑧ 单片机产生spwm波详解
这个型号的单片机我没用过,我主要应用dsp,在dsp里面是利用pwm模块产生的pwm,有好几种模式,相差多少度都可以设置,你有空的时候看看单片机的这一部分就行,没有pwm功能的话就利用普通定时器也是可以产生的,利用里面的比较中断控制普通io就可以PWM可以用定时器产生,相位的话,你用两个引脚,P1.0 P1.1 在一个周期内轮换输出PWM,P1.0输出PWM则P1.1输出低电平,P1.1输出PWM则P1.0输出低电平,这里有一篇文章挺好http://wenku..com/view/61592b6c1eb91a37f1115c1e.html 思路有了,1、用普通I/O口采用软件定时器中断可以模拟SPWM输出。"/**/"里面的内用是对程序的标注,解析。 2、/*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号*/ /*定时100ms,周期2.5s需25次中断,高电平0.5s需5次中断*/ #include <reg51.h> typedef unsigned char uchar; sbit P1_0=P1^0; uchar time=0; stc12c5608ad单片机有硬件PWM功能,只要在主程序里按正弦规律改变输出脉冲的占空比即可,可将正弦波分成50个时间段,每个时间段是20ms/500=400us,用定时器定时400us改变一次CCAP1L的值(该值除以256即是占空比)即可,CCAP1L的值可以在程序中用三角函数计算,也可以事先计算好存入数组中.
⑨ 如何实现spwm
实现spwm的方法:
1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进;
2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制;
3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器;
4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。
(9)单片机spwm波扩展阅读:
SPWM(Sinusoidal PWM)法是一种比较成熟的、使用较广泛的PWM法。冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。
PWM的全称是Pulse Width Molation(脉冲宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压。广泛地用于电动机调速和阀门控制,比如电动车电机调速就是使用这种方式。