数控恒压恒流源设计报告.docx

上传人:b****8 文档编号:30278649 上传时间:2023-08-13 格式:DOCX 页数:19 大小:113.13KB
下载 相关 举报
数控恒压恒流源设计报告.docx_第1页
第1页 / 共19页
数控恒压恒流源设计报告.docx_第2页
第2页 / 共19页
数控恒压恒流源设计报告.docx_第3页
第3页 / 共19页
数控恒压恒流源设计报告.docx_第4页
第4页 / 共19页
数控恒压恒流源设计报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数控恒压恒流源设计报告.docx

《数控恒压恒流源设计报告.docx》由会员分享,可在线阅读,更多相关《数控恒压恒流源设计报告.docx(19页珍藏版)》请在冰豆网上搜索。

数控恒压恒流源设计报告.docx

数控恒压恒流源设计报告

 

数控恒压恒流源

 

学校:

电子科技大学中山学院

指导老师:

刘根据

参赛队员:

李俊龙、梁创学、黄立群

2013年12月20日

摘要

本系统以STC12C5A60S2为核心,实现电压可预置,步进电压为100mV,输出电压范围为5V到10V,输出电流为100-1000mA。

可显示预置电压,实测电压,实测电流,实测效率。

该系统主要由STC12C5A60S2单片机系统,PWM信号控制芯片TL494,斩波主回路,按键,A/D以及D/A等组成。

系统通过键盘预置电压值送给TL494形成闭环反馈电路,采样精密电阻上的电压,采样康铜丝上的电压间接推算出其电流并显示。

本系统具有调整速度快,精度高,电压调整率低,负载调整率低,效率高,输出纹波小等优点。

关键词:

STC12C5A60S2、TL494、恒压、恒流

1.方案论证与比较

1.1系统总体框图及设置

通过按键单片机对主电路进行恒压或恒流功能的切换,并且经单片机给控制芯片TL494提供一个基准电压,与采样电压进行比较,从而改变TL494输出波形的占空比,进而控制IRF540的开启与截至,从而控制主电路电压的大小,达到设定值。

采样得到的电压值、电流值在液晶12864上进行实时显示。

1.2控制方案的比较论证

方案一:

直接用单片机产生PWM波控制开关管,这样编程变得很复杂,干扰较大。

方案二:

用芯片TL494去控制PWM波的产生,单片机编程简单,并且TL494的占空比调节范围大,易于进行控制。

综上所述,选用方案二用TL494芯片去控制PWM波的产生。

1.3输出方案

方案一:

选用1602,但1602界面简单,只能显示字母和阿拉伯数字。

方案二:

选用12864,12864除了现实字母与阿拉伯数字外,还可以显示汉字,人机界面比较好。

综上所述选用方案二用12864作为显示。

1.4按键选择方案

方案一:

矩阵按键的编程复杂,在使用时要时刻扫描,浪费单片机的资源。

方案二:

独立按键编程简单,在该系统中使用了外部中断,并且只用到四个按键,这样就不用时刻扫描,因此可以节省资源去处理DA和AD转换。

综上所述选用方案二用按键进行控制。

1.5提高效率的方案

开关管,电感电容的选择很重要。

开关管要注意导通压降,开关速率,额定电流。

电感要注意在设定频率下工作是否会饱和。

电容要注意耐压。

各器件的额定电流值尽量大于导通电流的两倍以上。

主通路线路尽量粗,减少导通电阻。

1.6MULTISIM软件仿真

在进行系统实现之前,先用MULTISIM软件对所需要满足的指标进行仿真。

输入指标为最大输入电压Vinmax=24V,最小输入电压Vinmin=10V,输出电压Vout=5-10V,输出电流Iout=100m-1000mA

2.电路设计与参数计算

2.1系统总体设计原理图:

见附件2

2.2主回路器件的选择及参数计算

2.2.1开关管的选择

场效应管选用开关频率高,导通电阻小的IRF540。

其开关频率可以达到100k以上。

2.2.2电感的选择

电感的选择在综合考虑电感的品质系数,电路的工作频率,是否饱和,最大纹波电流,工作在连续模式还是断续模式等因素后,鉴于此电路输出3A,选用额定为5A的电感,电感值最小为

L=5(Vin-Vout)*Vout*T/(Vin*Iout)=3.7mH,这里选用5mH的电感与电容组成pi型滤波。

2.2.3电容的选择

电容起到滤波储能的作用,电容选用耐压50V的电解电容,最小值为C=0.2*65*10-6*Iout/Vout=4400uF,这里选用多个电容并联。

2.2.4采样电路的选择

电流采样电阻采用0.02欧的电阻,分压小,且电阻值随温度的变化小,精度高。

电压采样利用精密电阻分压采样。

2.3控制电路设计

2.3.1控制回路采样信号的处理

采波通过光电隔离器件TL250驱动开关管或者进入单片机的AD口中进行电压电流实时显示。

样后电压经过跟随器(采样电流还有放大器)通过多路开关CD4051后进入固定频率脉宽调制器件TL494的输入端产生PWM

2.3.2PWM波的产生

TL494是一种固定频率脉宽调制电路。

它内部电路由基准电压产生电路、振荡电路、间歇期调整电路、两个误差放大器、脉宽调制比较器以及输出电路等组成。

输入的采样信号与基准信号进行比较,通过脉宽调制比较器,若采样信号大于基准信号时产生低电平,若采样信号小于基准信号则输出高电平。

2.4效率的分析

分析:

为了达到高效率,主通路应选择导通电阻小、适合高频的器件,尤其是场效应管开关频率一定要高,电感不能饱和,而且品质系数要高。

通过比较,选用开关频率高,导通电阻小的IRF540。

选用电感前使用函数发生器提供高频信号,送入电感,选择发热小的电感。

3.软件设计

程序流程图如下:

主程序按键程序AD采样程序

完整源程序参见附录1

4.测试方法与数据

4.1测方法试

4.1.1恒压恒流源测试方法

将电流表连入输入输出端,电压表并入输出输入端,并在输出端用示波器单通道跟踪,依次改变负载的值(负载采用滑动变阻器),使得输出电压在5-10V之间变化,或者电流在100mA-1000mA之间变化,测出每次变化之后的输出电压,电流,输入电压,电流,并对示波器所显示的输出纹波进行记录。

4.2测试仪器

电压表:

2个

电流表:

2个

示波器:

1个

4.3测试数据

4.3.1恒压源5-10V模式测试数据

4.3.2恒流源100-3A模式下的测试数据

5.测试结果分析

5.1恒压源

(1)给定一个输出电压,用示波器测量得到的波纹小于10mv。

(2)测试结果表明当所加负载变化使得输出电流变化时,恒压源输出电压在9.93到10.04之间浮动,满足输出电压偏差小于10m的要求。

(3)改变输入电压10-24v改变时,并且输出的纹波电压在4mV到10mV之间浮动,满足10mV纹波的要求。

5.2恒流源

(1)测试结果表明,当所加负载在5到10欧姆之间变化时,1A,800mA,500mA恒流源输出值的变化在正负10mA量级,很好的满足了要求。

(2)当输出电流为1A,负载电阻为10欧姆时,输出纹波电压满足要求。

5.3改进方案

结果与设计指标进行比较,分析产生偏差的原因,并提出改进方法:

产生偏差的原因为电路的导线内阻,开关频率的变化等因素,其他设计均达了设计指标。

为了进一步提高效率,可以将采样电阻的阻值换为更小,更精密的电阻,并且放大倍数做相应更改。

附录1:

整体程序

#include

#include

#include"Font_code.c"

#include"Font_code_816.c"

#include"LCD5510_V1.H"

#defineuintunsignedint

#defineucharunsignedchar

#defineBYTEunsignedchar

#defineulongunsignedlong

sbitchoose=P1^7;

sbitCS=P1^4;

sbitSCLK=P1^5;

sbitDIN=P1^6;

bitjiemian=0;//界面切换标识

uintDAvalue=0;

inttimes=0;

voiddelay()

{

uchara;

for(a=5;a>0;a--);

}

voiddelayms(unsignedintms)//延时多少MS

{

unsignedchara,b;

for(;ms>0;ms--)

for(b=222;b>0;b--)

for(a=12;a>0;a--);

}

unsignedintget_AD_result(unsignedcharchannel)

{

P1ASF=0x07;//P1.0为模拟功能AD使用

ADC_RES=0;//清零转换结果寄存器高8位

ADC_RESL=0;//清零转换结果寄存器低2位

ADC_CONTR=0x80;//开启AD电源

delayms

(1);//等待1ms,让AD电源稳定

ADC_CONTR=0x88|channel;//开启AD转换10001000即POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0

_nop_();_nop_();_nop_();_nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR寄存器

while(!

(ADC_CONTR&0x10));//等待转换完成

ADC_CONTR&=0xe7;//关闭AD转换,ADC_FLAG位由软件清0

return(ADC_RES*4+ADC_RESL);//返回AD转换完成的10位数据(16进制)

}

voidDA_conver(uintDAdata)

{

uchari;

DAdata<<=6;

CS=1;

SCLK=0;

DIN=0;

CS=0;

for(i=0;i<12;i++)

{

DIN=(bit)(DAdata&0x8000);

SCLK=1;

DAdata<<=1;

SCLK=0;

}

CS=1;

SCLK=0;

}

unsignedcharkeyboard()//矩阵键盘检测,共11行即可返回0~16键值.

{

chari,j,temp,hang[]={0xfe,0xfd,0xfb,0xf7};

for(j=0;j<4;j++)

{

P3=hang[j];

temp=0x10;

for(i=0;i<4;i++)

{

if(!

(P3&temp))

{

delayms(5);//延时5ms消抖

if(!

(P3&temp))

return(i+j*4);

}

temp<<=1;

}

}

return16;

}

unsignedcharkeyplay()//按键程序

{

intk,j;

k=keyboard();

if(k==0)

j=1;

elseif(k==4)j=2;

elseif(k==12)j=3;

elseif(k==8)j=4;

elseif(k==1)j=5;

elseif(k==5)j=6;

elseif(k==13)j=7;

elseif(k==9)j=8;

elseif(k==2)j=9;

elseif(k==6)j=0;

elseif(k==14)j=14;

elseif(k==10)j=10;

elseif(k==3)j=12;

elseif(k==7)j=13;

elseif(k==15)j=15;

elseif(k==11)j=11;

elsej=16;

returnj;

}

voiddisplay_V(ucharx,uchary,uintV_temp)

{

LCD_printc(x,y,V_temp/1000+'0');

LCD_printc(x+1,y,V_temp%1000/100+'0');

LCD_printc(x+2,y,'.');

LCD_printc(x+3,y,V_temp%100/10+'0');

LCD_printc(x+4,y,V_temp%10+'0');

LCD_printc(x+5,y,'v');

}

voiddisplay_I(ucharx,uchary,uintI_temp)

{

LCD_printc(x,y,I_temp/1000+'0');

LCD_printc(x+1,y,I_temp%1000/100+'0');

LCD_printc(x+2,y,I_temp%100/10+'0');

LCD_printc(x+3,y,I_temp%10+'0');

LCD_printc(x+4,y,'m');

LCD_printc(x+5,y,'a');

}

////////////////////////////////

////////////////////////////////////

voidmain()

{

uintV_temp,V_face;

uintI_temp,I_face;

uintP=0;

uchark=16,num=16;

TMOD=0x11;

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

TH1=(65535-50000)/256;

TL1=(65535-50000)%256;

EA=1;

ET0=1;

ET1=1;

TR0=1;

TR1=0;

LCD5510_Init();

choose=0;

while

(1)

{

num=keyplay();

if(num==12)//向上键

{

jiemian=~jiemian;

}

if(jiemian==0)//恒压界面

{

LCD_clr_scr();//液晶显示清除

LCD_showsh(0,0,"恒压");

LCD_showsh(0,1,"当前");display_V(6,2,V_face);///目前电压显示

LCD_showsh(0,2,"设置");display_V(6,4,V_temp);//设置电压显示

DAvalue=V_temp;

V_face=get_AD_result(0);

V_face=V_face*5*100/1024;

if(num==10)

{

V_temp++;

}

if(num==11)

{

V_temp--;

}

while(num==13)//进入修改电压界面

{

LCD_clr_scr();//液晶显示清除

LCD_showsh(0,0,"请输入电压");

V_temp=0;

while(num==13)

{

k=keyplay();

if(k<10)

{

V_temp=V_temp*10;

V_temp=V_temp+k;

LCD_showsh(0,2,"设置");display_V(6,4,V_temp);//设置电压显示

if(V_temp>1000)

V_temp=0;

}

if(k==12)//按下确定键

{

num=16;

LCD_clr_scr();

}

if(k==15)//则退出密码程序

{

num=16;

LCD_clr_scr();//液晶显示清除

}

while(k<16)

{

k=keyplay();

}

}

}

}

if(jiemian==1)//恒流界面

{

LCD_clr_scr();//液晶显示清除

LCD_showsh(0,0,"恒流");

LCD_showsh(0,1,"当前");display_I(6,2,I_face);//////目前电流显示

LCD_showsh(0,2,"设置");display_I(6,4,I_temp);////设置电流显示

if(num==10)

{

I_temp++;

}

if(num==11)

{

I_temp--;

}

while(num==13)

{

LCD_clr_scr();//液晶显示清除

LCD_showsh(0,0,"请输入电流");

V_temp=0;

while(num==13)

{

k=keyplay();

if(k<10)

{

I_temp=I_temp*10;

I_temp=I_temp+k;

LCD_showsh(0,2,"设置");display_I(6,4,I_temp);////设置电流显示

if(I_temp>1000)

I_temp=0;

}

if(k==12)//按下确定键

{

num=16;

LCD_clr_scr();

}

if(k==15)//则退出密码程序

{

num=16;

LCD_clr_scr();//液晶显示清除

}

while(k<16)

{

k=keyplay();

}

}

}

}

while(num<16)//等待松手

{

num=keyplay();

}

}

}

voidtime0()interrupt1

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

times++;

if(times==4)

{

DA_conver(1023);

times=0;

}

}

附件2:

设计原理图

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1