程控DCDC升压电源.docx
- 文档编号:11016052
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:14
- 大小:106.25KB
程控DCDC升压电源.docx
《程控DCDC升压电源.docx》由会员分享,可在线阅读,更多相关《程控DCDC升压电源.docx(14页珍藏版)》请在冰豆网上搜索。
程控DCDC升压电源
《程控DC/DC升压电源》设计报告
-----戴和权陈月敏
一、设计方案
系统原理框图
1、总体方案
采用51单片机作控制电路,驱动LED显示输出电压,同时改变数字电位器的输出电阻,以调整输出电压。
LM2577T-ADJ升压芯片构成DC/DC电源核心部分。
2、LM2577T-ADJ升压电路的设计
DC/DC升压电路
① 利用BOOST变换器升压原理,将5V电压升高到12V。
② 输出电压计算公式:
Vout=1.23V*(1+R1/R2)
③ 图中R1为数字电位器,单片机控制其阻值大小来改变输出电压。
④ LM2577的2脚(FEED-BACK)为反馈取样电压输入引脚,与R1、R2构成闭环反馈网络来稳定输出电压。
⑤ LM2577的1脚(COMP)接补偿电容与补偿电阻。
2、控制电路的设计
① AT89S52单片机作主控制芯片,同时用24C02记忆芯片实现断电输出电压数据不丢失功能,IIC总线与单片机连接。
② 其中数字电位器采用MCP41010,为256抽头线性调节数字电位器,SPI总线与单片机连接,阻值调节范围为0-10K,有足够高的精度满足电路的需要。
MPC41010数字电位器写入时序图
二、测试报告
输入电压:
+5V/DC
一、输出电压测试
1.经测试、电源能够用“+”“—”键调整输出电压的步进或步减
2.经测试、电源能够用按键开启/关闭输出电压
3.经测试、电源具有输出记忆功能,当切断电源供电,重新开启后,输出电压保持不变
理论电压(V)
LED显示电压(V)
测试电压(V)
6.0
6.0
5.99
6.5
6.5
6.50
7.0
7.0
7.00
7.5
7.5
7.50
8.0
8.0
7.98
8.5
8.5
8.48
9.0
9.0
8.98
9.5
9.5
9.50
10.0
10.0
9.99
10.5
10.5
10.43
二、输出电流测试
经测试、输出电流的最大值达1.2—1.3A (输入电流=3A)
三、电源效率测试
测试条件:
输出电压9V,负载电流1A
输入电压(V)
输入电流(V)
输出电压(V)
输出电流(V)
效率(%)
1
5.0
2.42
9.04
0.99
73.9
2
5.0
2.39
8.95
0.99
74.1
3
5.0
2.50
8.95
1.03
73.7
四、输出电压纹波测试
测试条件:
输出电压9V,负载电流1A
输入电压(V)
输入电流(V)
输出电压(V)
输出电流(V)
纹波(mV)
1
5.0
2.39
8.95
0.99
50
2
5.0
2.42
9.04
0.99
50
3
5.0
2.50
8.95
1.03
50
注:
高频干扰尚未滤除
三、C51程序
#include
#include
#define ucharunsignedchar
#define uint unsignedint
#define WriteDeviceAddress0xa0 //定义器件在IIC总线中的地址
#define ReadDviceAddress 0xa1
sbitSCL=P3^0;
sbitSDA=P3^1;
sbitK1=P1^5; //电压增加键
sbitK2=P1^6; //电压减少键
sbitK3=P1^7; //开关键
sbitjdq=P3^3;
sbitCS=P2^7;
sbitSCK=P2^6;
sbitSI=P2^5;
//...........24C02驱动程序..................IIC总线........................................
//定时函数
voidDelayMs(uintnumber)
{
uchartemp;
for(;number!
=0;number--)
{
for(temp=112;temp!
=0;temp--);
}
}
//开始总线
voidStart()
{
SDA=1;
SCL=1;
SDA=0;
SCL=0;
}
//结束总线
voidStop()
{
SCL=0;
SDA=0;
SCL=1;
SDA=1;
}
//发ACK0
voidNoAck()
{
SDA=1;
SCL=1;
SCL=0;
}
//测试ACK
bitTestAck()
{
bitErrorBit;
SDA=1;
SCL=1;
ErrorBit=SDA;
SCL=0;
return(ErrorBit);
}
//写入8个bit到24c02
Write8Bit(unsignedcharinput)
{
unsignedchartemp;
for(temp=8;temp!
=0;temp--)
{
SDA=(bit)(input&0x80);
SCL=1;
SCL=0;
input=input<<1;
}
}
//写入一个字节到24c02中
voidWrite24c02(ucharch,ucharaddress)
{
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(address);
TestAck();
Write8Bit(ch);
TestAck();
Stop();
DelayMs(10);
}
//从24c02中读出8个bit
ucharRead8Bit()
{
uchartemp,rbyte=0;
for(temp=8;temp!
=0;temp--)
{
SCL=1;
rbyte=rbyte<<1;
rbyte=rbyte|((uchar)(SDA));
SCL=0;
}
return(rbyte);
}
//从24c02中读出1个字节
ucharRead24c02(ucharaddress)
{
ucharch;
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(address);
TestAck();
Start();
Write8Bit(ReadDviceAddress);
TestAck();
ch=Read8Bit();
NoAck();
Stop();
return(ch);
}
//....MPC41010数字电位器驱动程序.........SPI总线...........................................
voidWrite_RES(uchardat1) //调整数字电位器 dat为返回参数电阻大小
{
uchari,command=0x11;
CS=1;_nop_();
CS=0;_nop_(); //片选
SCK=0;_nop_();
for(i=8;i>0;i--) //写命令8位
{
if(command&0x80)
SI=1;
else
SI=0;_nop_();
command<<=1;
SCK=1;
_nop_();
SCK=0;_nop_();
}
for(i=8;i>0;i--) //写数据八位
{
if(dat1&0x80)
SI=1;
else
SI=0;
_nop_();
dat1<<=1;
SCK=1;
_nop_();
SCK=0;
_nop_();
}
CS=1;
_nop_();
}
//........延时函数.......................................................................
voiddelay1ms(ucharx)
{
uchari,j,k;
for(i=0;i for(j=0;j<2;j++) for(k=0;k<248;k++); } //....................................................................................... ucharcodetable0[]={18,39,60,81,101,122,143,164,185,227,};//数字电位器信号数组 ucharcodetable1[][3]={{10,6,0},{10,6,5},{10,7,0}, {10,7,5},{10,8,0},{10,8,5}, {10,9,0},{10,9,5},{1,0,0},{1,0,5} }; //由a转换到输出的数字 ucharcodetable2[]={0x03,0x9f,0x25,0x0d,0x99, 0x49,0x41,0x1f,0x01,0x09,0xff }; //数码管显示数组 ucharcodetable3[]={0x02,0x9e,0x24,0x0c,0x98, 0x48,0x40,0x1e,0x00,0x08 }; //小数点控制数组 //............数码管动态显示函数........................................................... xianshi(uchara) { ucharm,n,p; m=table1[a][0]; n=table1[a][1]; p=table1[a][2]; P1=0xfd; P0=table2[m]; delay1ms (1); P0=table3[n]; P1=0xfb; delay1ms (1); P1=0xf7; P0=table2[p]; delay1ms (1); } //.....主程序............................................................................ voidmain() { uchara=0; jdq=0; Write_RES(table0[a]); //写入数字电位器 a=Read24c02(0x02); //读出24c02第一个地址数据 while (1) { xianshi(a); //数码管显示 Write_RES(table0[a]); //写入数字电位器 if(K1==0&&(a<9)) {delay1ms(90);a++;} //判断K1的状态 if(K2==0&&(a! =0)) {delay1ms(90);a--;} //判断K2的状态 if(K3==0) {delay1ms(120); while (1) { jdq=1; //继电器开关 Write_RES(table0[a]); //写入数字电位器 P1=0xf7; P0=0x03; //显示0 if(K3==0) //判断K3的状态 { delay1ms(120); jdq=0; //继电器开关 break; } } } Write24c02(a,0x02); //重新写入24c02 } } 四、电路图 DC/DC升压电源电路 控制电路
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程控 DCDC 升压 电源