程控直流电源论文_第1页
程控直流电源论文_第2页
程控直流电源论文_第3页
程控直流电源论文_第4页
程控直流电源论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.设计要求1.1设计任务(见附录1)1.2设计指标(见附录1)2.方案比较与论证2.1方案描述题目输入端以直流电源供电,经过DC/DC变换以后利用键盘能输出电压,电流并在指定范围内可调,并且要保证效率和精度。了解大体题意以后我们制作了如下的整体设计框图。AD/DA/PWM键盘可调直流电源AD/DA/PWM键盘可调直流电源DC/DC转化电路单片机阻性负载显示图2.1整体设计框图 而根据设计要求,系统可分为DC-DC变换电路模块(Buck电路模块、控制电路模块)、过流保护模块等。2.2方案比较与选择2.2.1DC/DC转换电路方案一:稳压管稳压电路。优点:稳压管稳压电路输出波形稳定,噪声小,结构简单。缺点:稳压管稳压电路带负载能力差,输出功率小,效率低,负载电流较小,一般只为芯片提供基准电压,不做为电源使用。方案二:BUCK降压电路优点:采用BUCK降压电路负载电流大,效率高,发热小。。缺点:通过MOS管的开关实现电源的转换,其纹波比较大,噪音大,需要很多电容为其滤波,而且开关过程中会产生干扰信号。Buck转换电路效率高,适用于75W—2000W功率范围,其应用相当广泛。通过比较,为达到高精度和高效率测试的目的。综合考虑各个部分的连接和配合,以及一些干扰和影响方案二更具有可实现信和更高效率。所以选择方案二。2.2.2控制芯片的选择 方案一:选择MC34063控制芯片。该器件本身包含了DC/DC变换器所需要的主要功能的单片控制电路且价格便宜。它由具有温度自动补偿功能的基准电压发生器、比较器、占空比可控的振荡器,R—S触发器和大电流输出开关电路等组成。该器件可用于升压变换器、降压变换器、反向器的控制核心,由它构成的DC/DC变换器仅用少量的外部元器件。主要应用于以微处理器(MPU)或单片机(MCU)为基础的系统里。方案二:采用TL494芯片。它是一种固定频率脉宽调制电路,主要为开关电源电路而设计,在开关电路中比较常见。综合对芯片的熟悉程度以及考虑到本次设计是比较小的手工制作电路。所以选择方案二最为合宜。2.2.3隔离电路的选择方案一:采用光耦隔离的优点是:占空比任意可调;隔离耐压高;抗干扰能力强,另外,光耦属电流型器件,对电压性噪声能有效地抑制;传输信号范围从DC到数MHz,其中线性光耦尤其适用于信号反馈。其缺点是:在全桥拓扑中,开关器件为4个,需3—4个光耦,而每一光耦都需独立电源供电,增加了电路的复杂性,成本增加,可靠性降低;因光耦传输延迟较大,为保证开关器件开通与关断的精确性,必须使各路的结构参数一致,使各路的延迟一致,而这往往难以做得很好;光耦的开关速度较慢,对驱动脉冲的前后沿产生较大延时,影响控制精度。方案二:采用推挽式放大电路进行隔离。这是一种常用的隔离方式,对于小型手工电路板来说性价比比较高,而且很方便。综合二者性能,本次设计选择方案二。3.理论分析与计算3.1基本要求3.1.1输出为电压源时(1)输入直流电压为20V~30V时,输出电压可设置为6V~12V,最大输出电流不小于2A,电压步进精度100mV。MOS管相当于可控开关,当开关断开时。输出为0V。当开关合上时,Vout=Vin,通过占空比控制Vout,电感L1起到续流的作用。占空比。(2)输入电压UIN为20V~30V,输出电压12V时,电压调整率SU≤2%(IO=2A)即(3)输出电压纹波峰-峰值UOPP≤0.2V(UIN=24V,UO=12V,IO=2A该波是电容的充放电产生的,所以他取决于电阻和电容。工作频率f,我们看着30KHZ,那么他的周期为33us。我们夸张的把它全部都看成电容放电。可以求出要达到UOPP≤0.2V,那么。3.1.2输出为电流源时(4)输出电流IO从0~2A变化时,电流步进精度100mA,负载阻抗不大于6Ω(5)输出电流IO为2A,负载从3Ω变为6Ω时,电流调整率SI≤5%(UIN=20V)(6)无论电压源还是电流源工作模式,变换器在满载情况下效率≥70%(UIN=30V)。满载的时候输出电压为12V,输出电流为2A,输出功率最大值。3.2精密部分3.2.1输出为电压源时(1)输入直流电压为20V~30V时,输出电压可设为6~12V,最大输出电流不小于2A最大输出电流不大于2A,我们保证在2.1A就可以。电压步进精度20mV,12V/20mV=600,所以AD,DA,PWM就选择大于或等于精度的。(2)输入电压UIN为20V~30V,输出电压12V时,电压调整率SU≤0.5%(IO=2A)(3)具有输出短路保护功能,短路电流Ioj=2.2±0.1时,短路保护我们就直接用单片机的程序完成。(4)输出电压纹波峰-峰值UOPP≤0.1V(UIN=24V,UO=12V,IO=2A)。之前的基础部分我们达到了UOPP≤0.2V,这里我们就只需要让。3.2.2输出为电流源时(5)输出电流IO从0~2A变化时,电流步进精度50mA,用精度为的完全就可以满足要求。(6)输出电流IO为2A,负载从3Ω变为6Ω时,电流调整率SI≤2%(UIN=20V)有前面的基础,这个就容易理解要求指标就是要使。(7)电流源方式工作时,具有开路报警功能和保护功能;当时,开路了,我们也直接给单片机写程序以达到报警功能和保护。(8)无论电压源还是电流源工作模式,变换器在满载情况下效率≥80%(UIN=30V);(9)其他。为了使设计更加精确,更有可行信,可以加过热保护、输出功率自动计算等额外的外设电路。我们根据具体情况添加了。输出功率自动计算功能。电路与程序设计4.1电路设计4.1.1DC/DC变换模块DC/DC核心电路为buck电路,是通过对场效应管的控制来达到降压。当效应管导通是,电源给电感充电,当场效应管断开时,电感通过二极管放电,给电容充电,电容通过负载行成一个闭环回路,保护电容不被击穿。与此同时,通过控制电路将电压稳定在6~12V的输出电压。如图4.1。图4.1.1DC/DC变换电路4.1.2电压源转换成电流源模块本题要求在输入直流电压源的时候,输出端既能输出电压源又能输出电流源,这里我们采用取样来达到转换。流程框图如图4.1.2.a。电路连接如图4.1.2.b。调开关的占空比调开关的占空比电流增大取样电压增大AD单片机闭环电路设定值图4.1.2.a电压源转换成电流源的逻辑流程图4.1.3脉冲产生电路模块通过稳压电路输出5V的电压给TL494,他产生CLK脉冲,脉冲进入LM358进行比较,这样就可以输出不同的占空比。图4.1.3脉冲产生电路4.1.4稳压电路模块24S05A1在它的输入端给一个20V~30V直流电压,在它的输出端就能输出5V的电压,以便于给单片机或其他的电路供电。图4.1.4稳压电路4.1.5过流保护电路模块图4.1.5过流保护电路4.1.6显示模块 显示模块采用OLED显示屏,IRC15W415AS型号的STC的单片机控制,与24ACLM903组成电压电流检测显示模块,模块能显示电压和电流。其表内测流结构为高流检测,可有效避免低测检流所带来的不共地等问题。且能由32V以下的电源供电,无需外部供电,界面能显示电压、电流、功率和累积四个指标。图4.1.6显示模块4.1.7比较模块图4.1.7比较电路4.2程序流程图开始初始化开始初始化过流检测开路检测按键检测检测到低电平蜂鸣器响检测到低电平检测到低电平延时消抖结束5.测试方案与测试结果5.1输出为电压源时(1)输入直流电压为20V~30V时,输出电压可设置为6~12V,最大输出电流不小于2A,电压步进精度基础部分要求100mV,发挥部分精度要求20mA分别测试三组数据,每组数据都是按我们能给的最小的增加按钮按键来观察电压的步进精度的实验结果。测试结果如表5-1-1:表5.1.1电压步进精度测试次数123457V7.0066V7.0116V7.0167V7.0217V7.0267V9V9.0061V9.0111V9.0161V9.0211V9.0261V11V11.0069V11.0119V11.0169V11.0219V11.0269V结果分析:根据基本要求,实验结果满足要求。(2)输入电压UIN为20V~30V,输出电压12V时,电压调整率SU≤2%(IO=2A);发挥部分要求SU≤0.5%(IO=2A其中为时与实际值得电压差,为输出电压。测试结果如表5-1-2所示。表5.1.2电压调整率测试参数22V24V26V28V0.0060.0030.0050.0040.5%2.5%4.1%3.3%结果分析:根据基本要求,实验结果满足要求。(3)输出电压纹波峰-峰值≤0.2V(UIN=24V,UO=12V,IO=2A)。发挥部分要求UOPP≤0.1V(UIN=24V,UO=12V,IO=2A)测试结果如表5-1-3所示。表5.1.3峰-峰值UOPP的测量次数参数第一次第二次第三次第四次峰-峰值68mV80mV70mV59mV结果分析:根据基本要求,实验结果满足要求。5.2输出为电流源时(1)输出电流IO从0~2A变化时,电流步进精度100mA,负载阻抗不大于6Ω,发挥部分要求步进精度50mA。分别测试三组数据,每组数据都是按我们能给的最小的增加按钮按键来观察电流表5.1.4电流步进精度测量次数电流起始第一次第二次第三次第四次1A1.006A1.011A1.0017A1.0021A1.5A1.5006A1.5010A1.5017A1.5021A结果分析:根据基本要求,实验结果满足要求。(2)输出电流IO为2A,负载从3Ω变为6Ω时,电流调整率SI≤5%(UIN=20V),发挥部分电流调整率SI≤2%(UIN=20V)表5.1.5电流调整率测试点电流123452A1.996A1.994A1.994A1.994A1.993A经过计算电流都保持在1.90A到2.10A之间,实验结果满足要求。(3)无论电压源还是电流源工作模式,变换器在满载情况下效率≥70%,发挥部分要求。变换器在满载情况下效率≥80%。(UIN=30V)表5.1.6效率 参数输出UIP电压源11.984V2.033A24.363W81%电流源11.982V2.021A24.215W80%结果分析:根据基本要求,实验结果满足要求。附录1设计任务和设计指标程控直流电源(C题)一、任务设计并制作DC-DC式直流电源,输入电压为20V~30V。输出方式为电压源或电流源可设置。利用键盘可设置输出电压或电流。程控直流电源框图如下所示:二、要求1.基本要求输出为电压源时:(1)输入直流电压为20V~30V时,输出电压可设置为6~12V,最大输出电流不小于2A(2)输入电压UIN为20V~30V,输出电压12V时,电压调整率SU≤2%(IO=2A)(3)输出电压纹波峰-峰值UOPP≤0.2V(UIN=24V,UO=12V,IO=2A)输出为电流源时:(4)输出电流IO从0~2A变化时,电流步进精度100mA,负载阻抗不大于6Ω(5)输出电流IO为2A,负载从3Ω变为6Ω时,电流调整率SI≤5%(UIN=20V)(6)无论电压源还是电流源工作模式,变换器在满载情况下效率≥70%(UIN=30V)。2.发挥部分输出为电压源时:(1)输入直流电压为20V~30V时,输出电压可设为6~12V,最大输出电流不小于2A(2)输入电压UIN为20V~30V,输出电压12V时,电压调整率SU≤0.5%(IO=2A)(3)具有输出短路保护功能,短路电流Ioj=2.2±0.1(4)输出电压纹波峰-峰值UOPP≤0.1V(UIN=24V,UO=12V,IO=2A)输出为电流源时:(5)输出电流IO从0~2A变化时,电流步进精度50mA(6)输出电流IO为2A,负载从3Ω变为6Ω时,电流调整率SI≤2%(UIN=20V)(7)电流源方式工作时,具有开路报警功能和保护功能;(8)无论电压源还是电流源工作模式,变换器在满载情况下效率≥80%(UIN=30V);(9)其他。三、说明(1)自备输入部分的可调直流电源;(2)自备4位半或5位半数字万用表;(3)自备测试用负载电阻;(4)电源在最大输出功率下应能连续稳定工作;(5)样机应留出相应的测试端子;(6)题中电压调整率计算公式:,电流调整率。附录2电路原理图附录3源程序主函数:#include"Cpu.h"#include"Events.h"#include"TPM3.h"#include"KB1.h"#include"AS1.h"#include"TI1.h"#include"KB2.h"#include"TPM4.h"#include"PE_Types.h"#include"PE_Error.h"#include"PE_Const.h"#include"IO_Map.h"#include"config.h"#if0voidTERMIO_PutChar(uint8_tChr)/////prt_temp=printffunc{while(!SCI1S1_TDRE);/*等待发送数据缓存器清空*/SCI1D=(uint8_t)ch;}#endifuint32_tg_u32Vout=6000;//6Vuint32_tg_u32Iout=0;//0Avoidmain(void){uint16_ti=0;MemInit();PE_low_level_init();g_pstKeyInfo->g_u32_SelVandATurnONFlag=SEL_Vout_TURN;PWM=(uint16_t)16*g_u32Vout/25;//6VIpwm=(uint16_t)(16*(2500/5));//(uint16_t)160*g_u32Vout/5;//2.5APTDD_PTDD6=0;PTDD_PTDD7=0;PTADD_PTADD5=1;i=printf("I'MDZ,祝你比赛成功!!\r\n");for(;;){OpenVoutCheck();//开路检测UpIoutCheck();//过流检测KeyScan();//按键扫描}Enents://#include"Cpu.h"//#include"Events.h"#include"Cpu.h"#include"Events.h"#include"config.h"uint16_ti;//void#if0bytePWM1_Disable(void){/*TPM1SC:TOF=0,TOIE=0,CPWMS=0,CLKSB=0,CLKSA=0,PS2=0,PS1=0,PS0=0*/setReg8(TPM1SC,0x00);/*Stopcounter(CLKSB:CLKSA=00)*//*TPM1CNTH:BIT15=0,BIT14=0,BIT13=0,BIT12=0,BIT11=0,BIT10=0,BIT9=0,BIT8=0*/setReg8(TPM1CNTH,0x00);/*ResetHWCounter*/returnERR_OK;/*OK*/}bytePWM1_Enable(void){/*TPM1SC:TOF=0,TOIE=0,CPWMS=0,CLKSB=0,CLKSA=1,PS2=0,PS1=0,PS0=0*/setReg8(TPM1SC,0x08);/*Runthecounter(setCLKSB:CLKSA)*/returnERR_OK;/*OK*/}#endifvoidDelayMs(uint8_tms){ uint16_ti; for(;ms>0;ms--) { for(i=0;i<1500;i++) { if(i%50==0) { __RESET_WATCHDOG(); } } } }/*Userincludes(#includebelowthislineisnotmaintainedbyProcessorExpert)*//**/voidKB1_OnInterrupt(void){/*Writeyourcodehere...*/}*/voidAS1_OnError(void){/*Writeyourcodehere...*/}/**/voidAS1_OnRxChar(void){/*Writeyourcodehere...*/}voidAS1_OnTxChar(void){/*Writeyourcodehere...*/}voidAS1_OnFullRxBuf(void){/*Writeyourcodehere...*/}/*voidAS1_OnFreeTxBuf(void){/*Writeyourcodehere...*/}voidRTC_ISR_Hander(void){}voidTI1_OnInterrupt(void){/*Writeyourcodehere...*/g_pstKeyInfo->g_u8_PWMUpdatTime++;g_pstKeyInfo->g_u16_PrintfTime++;if(g_pstKeyInfo->g_u8_PWMUpdatTime==10){ TPM1C0V=PWM; TPM2C0V=Ipwm; g_pstKeyInfo->g_u8_PWMUpdatTime=0; }if(g_pstKeyInfo->g_u16_PrintfTime>=1000){//i=printf("Vout=%f5.3V",Vout);//i=printf("Iout=%f3.2V",Iout);g_pstKeyInfo->g_u16_PrintfTime=0;}if(g_pstKeyInfo->g_u8_IoutFlag==1)//过流{PTAD_PTAD5=1; g_pstKeyInfo->g_u16_IoutTime++; if(g_pstKeyInfo->g_u16_IoutTime>1000) { PTAD_PTAD5=0; g_pstKeyInfo->g_u8_IoutFlag=0; g_pstKeyInfo->g_u16_IoutTime=0; TPM1SC=0X08;//开Vpwm TPM2SC=0X08;//开Ipwm }}if(g_pstKeyInfo->g_u8_VoutFlag==1)//开路{ PTAD_PTAD5=1; g_pstKeyInfo->g_u16_VoutTime++; if(g_pstKeyInfo->g_u16_VoutTime>1000) { PTAD_PTAD5=0; g_pstKeyInfo->g_u8_VoutFlag=0; g_pstKeyInfo->g_u16_VoutTime=0; TPM1SC=0X08;//开Vpwm TPM2SC=0X08;//开Ipwm }}}/*voidKB2_OnInterrupt(void){/*Writeyourcodehere...*/}/*ENDEvents*//*/*MODULEconfig*/#include"config.h"pstKeyInfog_pstKeyInfo;uint32_tPWM;uint32_tIpwm;voidUpIoutCheck(void){if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Vout_TURN)if( PTDD_PTDD6==1){ DelayMs(10); if(PTDD_PTDD6==1) { TPM1SC=0X00;//关闭Vpwm TPM2SC=0X00;//关闭Ipwm g_pstKeyInfo->g_u8_IoutFlag=1; } }}voidOpenVoutCheck(void){if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Iout_TURN)if( PTDD_PTDD7==1){ DelayMs(10); if(PTDD_PTDD7==1) { TPM1SC=0X00;//关闭Vpwm TPM2SC=0X00;//关闭Ipwm g_pstKeyInfo->g_u8_VoutFlag=1; } } }voidMemInit(void){uint16_tl_u8PrintfFlag;uint8_tl_u8MemInitFailVal=0;//void*MemTemp;g_pstKeyInfo=(pstKeyInfo)calloc(1,sizeof(stKeyInfo));if(g_pstKeyInfo==NULL){l_u8MemInitFailVal++;l_u8PrintfFlag=printf("g_pstKeyInfo指针分配失败\r\n");//AD结构体指针分配失败}}//voidPWMScan(void)//{//}/*ENDconfig*//*MODULEKeyScan*/#include"config.h"floatVout=0.0;floatIout=0.0;voidKeyScan(void){ uint16_ti; if(PTBD_PTBD4==0) { DelayMs(10); if(PTBD_PTBD4==0)//t { if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Vout_TURN) { //g_pstKeyInfo->g_u8_VandAFlag=1 i=printf("接收到电压1V步进增加调节命令!!\r\n"); g_u32Vout+=1000; PWM=(uint32_t)(16*g_u32Vout/25); } elseif(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Iout_TURN) { i=printf("接收到电流1A步进增加调节命令!!\r\n"); g_u32Iout+=1000; Ipwm=(uint16_t)(16*(g_u32Iout/5)); } while(!PTBD_PTBD4); } } if(PTAD_PTAD3==0) { DelayMs(10); if(PTAD_PTAD3==0)//t { if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Vout_TURN) { //g_pstKeyInfo->g_u8_VandAFlag=1 i=printf("接收到电压1V步进减小调节命令!!\r\n"); g_u32Vout-=1000; PWM=(uint32_t)(16*g_u32Vout/25); } elseif(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Iout_TURN) { i=printf("接收到电流1A步进减小调节命令!!\r\n"); g_u32Iout-=1000; Ipwm=(uint16_t)(16*(g_u32Iout/5)); } while(!PTAD_PTAD3); } } if(PTBD_PTBD5==0) { DelayMs(10); if(PTBD_PTBD5==0) { if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Vout_TURN) { //g_pstKeyInfo->g_u8_VandAFlag=1 i=printf("接收到电压100mV步进增加调节命令!!\r\n"); g_u32Vout+=100; PWM=(uint32_t)(16*g_u32Vout/25); } elseif(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Iout_TURN) { i=printf("接收到电流100mA步进增加调节命令!!\r\n"); g_u32Iout+=100; Ipwm=(uint16_t)(16*(g_u32Iout/5)); } while(!PTBD_PTBD5); } } if(PTAD_PTAD7==0) { DelayMs(10); if(PTAD_PTAD7==0) { if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Vout_TURN) { //g_pstKeyInfo->g_u8_VandAFlag=1 i=printf("接收到电压100mV步进减小调节命令!!\r\n"); g_u32Vout-=100; PWM=(uint32_t)(16*g_u32Vout/25); } elseif(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Iout_TURN) { i=printf("接收到电流100mA步进减小调节命令!!\r\n"); g_u32Iout-=100; Ipwm=(uint16_t)(16*(g_u32Iout/5)); } while(!PTAD_PTAD7); } } if(PTBD_PTBD6==0) { DelayMs(10); if(PTBD_PTBD6==0) { if(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Vout_TURN) { //g_pstKeyInfo->g_u8_VandAFlag=1 i=printf("接收到电压20mV步进增加调节命令!!\r\n"); g_u32Vout+=1; PWM=(uint32_t)(16*g_u32Vout/25); } elseif(g_pstKeyInfo->g_u32_SelVandATurnONFlag==SEL_Iout_TURN) { i=printf("接收到电流50mA步进调增加节命令!!\r\n"); g_u32Iout+=1; Ipwm=(uint16_t)(16*(g_u32Iout/5)); } while(!PTBD_PTBD6); } } if(PTAD_PTAD4==0) { DelayMs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论