三相交流电源5555Word格式.docx
- 文档编号:18851351
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:18
- 大小:199.72KB
三相交流电源5555Word格式.docx
《三相交流电源5555Word格式.docx》由会员分享,可在线阅读,更多相关《三相交流电源5555Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
本设计采用的是N沟道增强型MOSFET。
只有在正的漏极电源的作用下,在栅源之间加上正向电压(栅极接正,源极接负),才能使该场效应管导通。
当>
0时才有能有电流即漏极电流产生。
即当时MOS管才导通。
电路中主要运用三极管的导通截止的开关特性。
2.3精密全波整流电路
全波精密整流电路如图
从左到右看电路图,在第一个运放NE5532的作用是一个比例运算放大器,主要就是想把输入的信号缩小成1/2倍,要求R6=2R7,R5=R6*R7/(R6+R7),输出的Uo=-R7*Ui/R6。
图中第二个运放NE5532作用就是精密全波整流,要求R1=2R2=2R3,增益为1/2,输入的正弦波,当UI>
0时,波形没有改变方向;
当UI<
0时,波形就把其往上翻,使其同正向波形方向一样,从而得到精密的全波整流电路,最后全波整流得到的波形幅值为输入的1/2。
C1与C2构成电容滤波电路。
2.4SPWM波生成
方案一:
用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对功率开关器件的通断进行控制,就可以生成SPWM波形。
但这种模拟电路结构复杂,难以实现精确的控制。
方案二:
微机控制技术的发展使得用软件生成SPWM波形变得比较容易,有自然采样法,规则采样法,低次谐波消去法,面积中心等效法等,微处理器可以用DSP,ARM,MSP430等有PWM模块的MCU。
由以上分析知,采用软件生成法,既方案二比较容易实现,而使用DSP成本较高,切手上又有一块现成的ARM7,所以本次设计选用了ARM7系列的LPC2138来生成SPWM波。
SPWM波的具体生成方法如下:
PWM(PulseWidthModulation)控制就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形。
SPWM波形(SinusoidalPWM)就是脉冲的宽度按正弦规律变化而和正弦波等效的PWM波形。
产生SPWM波的原理是:
用一组等腰三角波与一个正弦波进行比较,其相交的时刻(即交点)作为开关管“开”或“关”的时刻,这组等腰三角形波称为载波,而正弦波称为调制波,如图1所示。
正弦波的频率和幅值是可控制的,改变正弦波的频率,就可以改变电源输出电压的频率,改变正弦波的幅值,也就改变了正弦波与载波的交点,使输出脉冲系列的宽度发生变化,从而改变电源输出电压的大小。
而LPC2138的PWM模块有PWMMR0~PWMMR6这7个匹配寄存器,可实现6个单边沿控制或三个双边沿控制PWM输出。
三相逆变桥需要6路SPWM波驱动,可由ARM7产生3路,其余3路以及死区控制由驱动电路产生。
算法分析:
通过实时计算生成电压SPWM需要数学模型,建立数学模型的方法有多种,比如谐波消去法、等面积法、采样型SPWM法以及它们派生出来的各种方法。
本文介绍的生成SPWM波采用的是对称规则采样法。
对称规则采样法包括两种,规则I法和规则Ⅱ法。
规则I法为三角波顶点采样法,规则Ⅱ法为底点采样法。
这里使用的是规则II法,如图:
在规则采样Ⅱ法中,三角波每个周期的采样时刻都是确定的,不作图就可算出相应时刻的正弦波值。
由几何相似三角形关系可得脉宽计算公式:
间歇时间:
式中M=UM/US,即正弦波峰值与三角波峰值之比,M称为调制度。
N=fc/f即三角波频率fc与正弦波频率f之比,N称为载波比。
k为采样带点(k:
0,1,2,3⋯⋯)。
以上是生成单相SPWM波的数学模型,要生成三相SPWM波,必须使用三条正弦波和同一条三角波求交点,三相正弦波依次相差120。
,所以在采样时三相的脉宽分别是:
3.ADC0809的控制程序的设计
ADC0809是M美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片。
ADC0809的工作过程:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
ADC0832的接线图比较简单,将D0~D7接单片机的P1口,CLK接外部时ST=P3.4,EOC=P3.5,OEP接P3.6。
通道选择C=P2.0,B=P3.7,A=P2.7。
INT0和INT1分别为电压测量输入通道0和电流测量输入通道1。
4.液晶显示驱动的设计
开发仿真软件使用KeiluVision3,C语言编程。
采用YJD12864C—1(汉字图形点阵液晶显示模块),可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM),显示内容为128列×
64行。
该模块有并行和串行两种连接方法,在本设计中采用并行连接方法。
该部分利用STC89C52单片机来控制液晶显示,显示输出电压。
5.附录
5.1MC34063的引脚图如下:
5.2LC滤波电路
电路如图3所示
图3LC滤波电路
5.3逆变电源总电路
电路图如图2所示
5.4ADC0809引脚图如下:
ADC0832工作时序图如图所示
5.5PWM波程序流程图:
主函数流程图匹配中断函数流程图
5.6程序流程图如图所示。
5.7程序清单
(一)SPWM波程序
#include"
config.h"
math.h"
#definepi3.1415926
#defineN200
inti=0;
floatTEMP,TEMP1,TEMP2;
intMR1[N],MR3[N],MR5[N];
void__irqPWMCaculate(void)
{
PWMMR1=MR1[i];
PWMMR3=MR3[i];
PWMMR5=MR5[i];
i++;
if(i>
=N)
i=0;
PWMLER=0x7F;
VICVectAddr=0x00;
}
voidPwm_Init(void)
{PINSEL0=(2<
<
2)|(2<
0);
PINSEL1=(1<
10);
PWMTCR=0x02;
PWMPR=0x00;
PWMMCR=0x03;
PWMPCR=(0<
0)|
(0<
3)|
5)|
(1<
9)|
11)|
13);
PWMMR0=Fpclk/12000;
PWMTCR=0x09;
RQEnable();
VICIntSelect=0x00;
VICVectCntl0=0x20|8;
VICVectAddr0=(uint32)PWMCaculate;
VICIntEnable=1<
8;
}
voidInit_VPB_PLL(void)
{
//Fosc=11.0592MHz
//Fcclk=11.0592*6=66.3552MHz
//Fcco=66.3552*2*P=265.4208MHz
//Fpclk=16.5888MHz
//配置VPB分频器相关寄存器
VPBDIV=0x00;
//Fcclk*1/4
//配置PLL锁相环相关寄存器
PLLCON=0x01;
//PLLE=1PLL使能但PLL未连接
PLLCFG=0x26;
//00100111分频器值(P=2)倍增器值(M=7)
PLLFEED=0xAA;
//0xAA和0x55,为固定数据,写入以后。
配置才会生效。
PLLFEED=0x55;
while((PLLSTAT&
(1<
10))==0);
PLLCON=0x03;
//PLLE=1PLLC=1PLL使能并连接
intmain()
{intk=0;
Init_VPB_PLL();
PWMMR0=Fpclk/12000;
while(k<
N)
{EMP=0.5*(1+0.97*sin(k*2*pi/N));
TEMP1=0.5*(1+0.97*sin(k*2*pi/N+2*pi/3));
TEMP2=0.5*(1+0.97*sin(k*2*pi/N-2*pi/3));
MR1[k]=(uint32)(PWMMR0*TEMP);
MR3[k]=(uint32)(PWMMR0*TEMP1);
MR5[k]=(uint32)(PWMMR0*TEMP2);
k=k+1;
Pwm_Init();
while
(1);
return0;
/*********************************************************************************************************
**EndOfFile
********************************************************************************************************/
(二)系统测量程序
#include<
reg52.h>
intrins.h>
math.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitkey1=P3^0;
//定义按键位置
sbitkey2=P3^1;
sbitkey3=P3^2;
sbitADC0809_ST=P3^4;
//定义采样控制口
sbitADC0809_EOC=P3^5;
sbitADC0809_OE=P3^6;
sbitC=P2^0;
//定义采样通道定义
sbitB1=P3^7;
sbitA=P2^7;
sbitRS=P2^4;
//定义LCD显示控制口
sbitRW=P2^5;
sbitE=P2^6;
longintk,z=100,counter1=0;
longintsum1=0,sum2=0;
//定义采样求和
floatcounter2=0,tmp=0;
floatu1=0,i1=0,w=0,w1=0,w2=0;
//定义三相电压电流功率频率
voiddelayms(uintz)//延时zms
{uinti;
ucharj;
for(i=z;
i>
0;
i--)
for(j=110;
j>
j--);
voiddelay(uinti)//延时
while(i--);
voidzhiling(uchara)//LCD12864写命令
E=0;
RS=0;
RW=0;
E=1;
P0=a;
delayms
(2);
//延时5ms
voidshuju(ucharb)//LCD12864写数据
{E=0;
RS=1;
P0=b;
voidlcd_init()//LCD12864初始化
{zhiling(0x01);
//清屏
zhiling(0x30);
//功能设置
zhiling(0x0e);
//开/关显示设置
zhiling(0x06);
//输入方式设置
zhiling(0x14);
//光标右移
voidwritestring(char*str)//LCD12864写字符
{inti=0;
while(str[i]!
='
\0'
)
{shuju(str[i++]);
voidwritedata(longintd)//LCD12864写数字
{uintshi,ge,shifen,baifen,qianfen;
shi=(uint)(d/10000);
ge=(uint)(d%10000/1000);
shifen=(uint)(d%1000/100);
baifen=(uint)(d%100/10);
qianfen=(uint)(d%10);
if(shi)
shuju(shi+'
0'
);
shuju(ge+'
writestring("
."
shuju(shifen+'
shuju(baifen+'
shuju(qianfen+'
voidwritedata1(floatd)//写频率数字
{uintqian,bai,shi,ge,shifen,baifen,qianfen;
qian=(uint)d/1000;
bai=(uint)(d/100)%10;
shi=(uint)(d/10)%10;
ge=(uint)d%10;
shifen=(uint)((d-(uint)d)*10)%10;
baifen=(uint)((d-(uint)d)*100)%10;
qianfen=(uint)((d-(uint)d)*1000)%10;
if(qian)
shuju(qian+'
if(qian||bai)
shuju(bai+'
if(qian||bai||shi)
shuju(shi+'
shuju(ge+'
writestring("
shuju(shifen+'
shuju(baifen+'
shuju(qianfen+'
voiddianyaxianshi()
zhiling(0x80);
电压测量"
zhiling(0x90);
1相U="
writedata(u1);
zhiling(0x97);
writestring("
V"
zhiling(0x88);
2相U="
//writedata(u1);
zhiling(0x8F);
zhiling(0x98);
3相U="
zhiling(0x9F);
voiddianliuxianshi()
电流测量"
1相I="
writedata(i1);
A"
2相I="
//writedata(i1);
3相I="
voidgonglvxianshi()
频率="
writedata1(counter2);
zhiling(0x87);
Hz"
有功W="
w"
无功W="
功率因素="
longintADC0809caiyang1(uintq)//通道1采样
{longinti1;
longintgetdata1;
P1=0xff;
ADC0809_ST=0;
C=0;
B1=0;
A=q;
delay(10);
ADC0809_ST=1;
while(ADC0809_EOC==0);
ADC0809_OE=1;
getdata1=P1;
//初始二进制采样值
ADC0809_OE=0;
i1=getdata1*5000/256;
returni1;
voidInit_Timer(void)//定义定时器
TMOD=0x11;
//使用模式1,16位定时器
TH0=0x3c;
TL0=0xaf;
//给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;
//总中断打开
EX1=1;
//允许外部中断INT1
IT1=1;
//选择外部中断边沿触发方式
ET0=1;
ET1=1;
//定时器中断打开
TR0=1;
TR1=1;
//定时器开关打开
voidmain()
{
z=100;
Init_Timer();
lcd_init();
dianyaxianshi();
while
(1)
{
if(!
key1)
k=1;
//按下1相应的键显示三相电压
key2)
k=2;
//按下3相应的键显示三相电流
key3)
k=3;
//按下4相应的键显示功率与频率
switch(k)
{case1:
lcd_init();
dianyaxianshi();
delayms(1000);
break;
//k=1按下3相应的键显示三相电压
case2:
dianliuxianshi();
//k=2按下7相应的键显示三相电流
case3:
gonglvxianshi();
//k3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三相 交流 电源 5555
![提示](https://static.bdocx.com/images/bang_tan.gif)