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

  • 格式:doc
  • 大小:162.50 KB
  • 文档页数:18

数控恒压恒流源学校:电子科技大学中山学院指导老师:刘根据参赛队员:李俊龙、梁创学、黄立群2013年12月20日目录摘要 (3)1.方案论证与比较 (4)1.1系统总体框图及设置 (4)1.2控制方案的比较论证 (4)1.3 输出方案 (5)1.4按键选择方案 (5)1.5提高效率的方案 (5)1.6 MULTISIM软件仿真 (5)2.电路设计与参数计算 (5)2.1 系统总体设计原理图 (5)2.2主回路器件的选择及参数计算 (5)2.2.1开关管的选择 (6)2.2.2电感的选择 (6)2.2.3电容的选择 (6)2.2.4采样电路的选择 (6)2.3控制电路设计 (6)2.3.1控制回路采样信号的处理 (6)2.3.2 PWM波的产生 (6)2.4效率的分析 (6)4.测试方法与数据 (8)4.1测方法试 (8)4.2测试仪器 (8)4.3测试数据 (8)5.测试结果分析 (8)5.1恒压源 (8)5.2恒流源 (9)5.3改进方案 (9)附录1:整体程序 (10)附录2:设计原理图 (18)摘要本系统以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 波的产生。

降压斩波电路负载双三极管 隔离采样 电 路开关管CD4051 TL494显示DA 转换 AD 转换单片机系统按键1.3 输出方案方案一:选用1602,但1602界面简单,只能显示字母和阿拉伯数字。

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

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

1.4按键选择方案方案一:矩阵按键的编程复杂,在使用时要时刻扫描,浪费单片机的资源。

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

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

1.5提高效率的方案开关管,电感电容的选择很重要。

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

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

电容要注意耐压。

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

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

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

输入指标为最大输入电压Vinmax=24V,最小输入电压Vinmin=10V,输出电压Vout=5-10V,输出电流Iout=100m-1000mA2.电路设计与参数计算2.1 系统总体设计原理图:见附件22.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的输入端产生PWM2.3.2 PWM波的产生TL494是一种固定频率脉宽调制电路。

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

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

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

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

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

3.软件设计程序流程图如下:主程序 按键程序 AD 采样程序完整源程序参见附录1开始LCD 初始预置电压预置开中断LCD 显示判断键值恒压 恒流切 换步进步减实时电压电流显清中断按键触发外部中断返回0.5s 时基中断AD 采样清中断返回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<STC12C5A.h>#include<intrins.h>#include "Font_code.c"#include"Font_code_816.c"#include "LCD5510_V1.H"#define uint unsigned int#define uchar unsigned char#define BYTE unsigned char#define ulong unsigned longsbit choose=P1^7;sbit CS=P1^4;sbit SCLK=P1^5;sbit DIN=P1^6;bit jiemian=0; //界面切换标识uint DAvalue=0;int times=0;void delay(){uchar a;for(a=5;a>0;a--);}void delayms(unsigned int ms) //延时多少MS{unsigned char a,b;for(;ms>0;ms--)for(b=222;b>0;b--)for(a=12;a>0;a--);}unsigned int get_AD_result(unsigned char channel){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转换1000 1000 即POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0_nop_(); _nop_(); _nop_(); _nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR 寄存器while(!(ADC_CONTR&0x10)); //等待转换完成ADC_CONTR&=0xe7; //关闭AD转换,ADC_FLAG位由软件清0return(ADC_RES*4+ADC_RESL); //返回AD转换完成的10位数据(16进制)}void DA_conver(uint DAdata){uchar i;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;}unsigned char keyboard() //矩阵键盘检测,共11行即可返回0~16键值.{char i,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;}}return 16;}unsigned char keyplay() //按键程序{int k,j;k=keyboard();if(k==0)j=1;else if(k==4) j=2;else if(k==12)j=3;else if(k==8) j=4;else if(k==1) j=5;else if(k==5) j=6;else if(k==13) j=7;else if(k==9) j=8;else if(k==2) j=9;else if(k==6) j=0;else if(k==14) j=14;else if(k==10) j=10;else if(k==3) j=12;else if(k==7) j=13;else if(k==15) j=15;else if(k==11) j=11;else j=16;return j;}void display_V(uchar x,uchar y,uint V_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');}void display_I(uchar x,uchar y,uint I_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');}////////////////////////////////////////////////////////////////////void main(){uint V_temp,V_face;uint I_temp,I_face;uint P=0;uchar k=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();}}}void time0() interrupt 1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;times++;if(times==4){DA_conver(1023);times=0;}}附件2:设计原理图。