2020年简易电子直流负载精编版简易直流电子负载(C题)摘要:本系统设计的是恒流(CC)工作模式的简易直流电子负载,是以单片机STC89C52为主控芯片,包括控制器、独立按键、显示电路、MOSFET功率电路、恒流电路、电压电流检测电路和保护电路。
由单片机输出给定的电流值,并经过运算处理控制D/A输出,控制MOSEFT漏极电流,从而使直流电子负载的电流处于设定值。
设计着重阐述了系统框架、工作原理、软硬件设计,并给出了系统测试表。
测试结果表明,该系统具有稳定性强、调节速度快的特点,很好的满足了提出的性能指标。
关键词:电子负载;恒流;功率电路;信号处理1.系统方案论证1.1各种方案比较与选择1.1.1主控器模块的设计方案与选择方案一:采用纯硬件控制电路,虽然避免了软件的设置,但电路难度增加,且成本也高,也不利于实时调整电路。
方案二:采用单片机STC89C52。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
且指令代码完全兼容传统8051。
综合考虑选择方案二以宏晶单片机STC89C52为核心,组成单片最小系统。
1.1.2 显示模块的设计方案与选择方案一:采用数码管显示。
数码管成本较低,对环境要求低,编程也容易。
但所显示的信息量有限,一般信息量越大,占的I/O口也越多。
方案二:采用1602液晶显示。
采用液晶显示,画面效果好,分辨率高,抗干扰能力强。
功耗也低,显示的信息量也多。
根据题目要求,需要显示电压、电流等多种信息,数码管已不能满足要求故选择方案二,本系统采用的点阵式LCD型号为1602。
1.1.3 MOSFET功率电路的设计方案与选择方案一:采用IRF540场效应管。
IRF540属于高电压,大电流的N通道增强型场效应功率晶体管,栅极电压与漏极电流关系如图2所示。
图1 栅极电压与漏极电流关系方案二:采用TI的CSD17505Q5A。
N 通道MOSFET管。
栅极电压与漏极电流关系如图3所示。
图2 栅极电压与漏极电流关系基于题目要求,电流的范围为100MA-1000MA,在此范围内,CSD17505Q5A栅极电压与«Skip Record If...»关系的线性度要比IRF540好的多,故选择方案二。
1.1.4 信号处理电路的设计方案与选择(1)A/D转换电路方案一:采用ADC0804。
ADC0804属于连续渐进式的A/D转换器,模拟输入电压的范围0~+5v,分辨率只有8位。
方案二:采用TI的ADS1115IDGSR 。
ADS1115IDGSR是具有内部基准的超小型、低功耗、16位模数转换器。
封装尺寸要小 70%,14 倍的采样速率支持严苛的测量要求。
根据设计要求,电压的测量精度要达到0.02%,分辨力为1mv,通常10位A/D芯片无法满足题目的要求,而16位模数转换器满足题目的技术要求,并且ADS1115IDGSR是比赛提供的材料,而且ADS1115IDGSR是比赛提供的材料,故选择方案二。
(2)D/A转换电路方案一:采用DAC0809。
DAC0809是并行8位数/模转换器,占用端口多,转换频率低于1M。
方案二:采用TI的TLC5616。
TLC5616是串行12位数/模转换器,占用端口少,转换频率高。
两者相比TLC5616的速度快,由于题目要求的分辨力分别为1mv和1mA,通常8位的D/A芯片无法满足题目的要求,而12位数模转换器满足题目的技术要求,并且TLC5616又为比赛提供的材料,故选择方案二。
2.系统硬件设计2.1系统的总体设计2.1.1 总体思路利用单片机及其外围电路,包括独立按键、液晶显示等。
按键设定负载参数并显示,搭建电压/电流检测、电压/电流比较以及功率控制电路,模块化实现恒流,并加入自动过载保护。
2.1.2直流电子负载结构框图图3 直流电子负载结构框图2.2 主控电路的设计主控电路主要由STC89C52单片机系统,DA、AD转换电路等构成。
它可实现负载电流的设定,«Skip Record If...»电流的动态稳定以及负载电压过压保护等功能。
主控电路原理图如图5所示。
图4 主控电路原理图2.3 恒流电路的设计本设计通过单片机程控输出数字信号,经过D/A转换器转换成模拟量,再经过射极跟随器隔离,输出至场效应管的栅极,控制场效应管漏极电流,漏极电流的大小通过键盘设定。
当电路由于某种原因导致«Skip Record If...»上升,电阻上的电压«Skip Record If...»上升,通过A/D转换芯片,实时把电流值转化为数字量,再经单片机分析处理,减小输出量,再经过D/A转换器转换成模拟量通过数据形式的反馈环节,使电流更加稳定,电子负载主电路如图5所示。
图5 电子负载主电路2.4 过压保护电路的设计负载的电压经电阻分压,取得比较电压,送到比较器LM358中于基准电压进行比较,低于基准电压,输出高电平,反之,则输出低电平,该电平加至场效应管的栅极使漏极电流减小。
REF5025为比较器提供2.5V的基准电压,由专门的基准电压芯片可以使保护电路更加精确。
过压保护电路如图6所示。
图6 过压保护电路3.系统软件设计3.1程序总体设计此电子负载除了要完成作为负载的功能以外,还要实现I/U数据采集、测量与显示的任务。
主程序流程图如图7所示。
图7 主程序流程图3.2 恒流电路流程图流程图如图8所示。
图8 恒流电路流程图4.系统的组装与调试4.3系统的测试4.3.1 测试仪器数字万用表VICIOR 8145B,万用表VC101,直流稳压电源GPS-3303C4.3.2 测量数据记录表1 负载端电压与预置电流的关系表2 负载变化时的测试4.4测试结果及其分析由数据表明,在恒流(CC)模式下,不管电子负载两端电压是否变化,流过电子负载的电流为一个设定的恒定值。
经计算,相对误差小于1%。
说明系统在恒流模式下工作正常。
5.结论经过团队的不懈努力,我们实现了题目的设计要求,在某些性能参数上超过了题目的要求。
贴片Mos管的散热是一个很头疼的问题,想了很久也没有一个很满意的方案,另外A\D、D\A的芯片都是以前没有接触过的,网上的资料也很少,增加了编程的难度。
且由于时间紧,工作量大,还有很多需要改进的地方,例如系统的整体布局,布线的合理性等都需要今后不断的实践。
这次竞赛极大的锻炼了我们,结果是美好的但过程总是艰辛的。
正是这种困境不断的提高了我们解决问题的能力。
我们将不断的挑战自己,取得更大的收获。
参考文献[1]吴文进.多功能直流电子负载的设计与实现.安庆师范学院学报:自然科学版,2011,17(3).[2] 曲延昌. 数字电压表过压保护电路.电子世界,2007(6).[3] 张迎新. 单片微型计算机原理应用及接口技术. 国防工业出版社,1993[4] 黄智伟. 全国大学生电子设计竞赛训练教程 . 电子工业出版社,2006[5] 徐爱钧. 智能化测量控制仪表原理与设计. 北京航空航天大学出版社,2006附录附录1 总原理图图10 总原理图附录2 部分源程序#include<reg52.h> //包含单片机寄存器的头文件#include"intrins.h"#include "stdio.h"#define uchar unsigned char#define uint unsigned intsbit RS=P1^2; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P1^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P1^0; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚sbit tlv5616_clk=P2^1; //TLC5615sbit tlv5616_data=P2^0; //TLC5615sbit tlv5616_fs=P2^3;sbit tlv5616_cs=P2^2;sbit button1=P3^2;sbit button2=P3^3;sbit clock=P3^6; //锁信号sbit SDA=P1^5;sbit SCL=P1^4;/******************************************************************************* 以下横流变量程序*******************************************************************************/ unsigned int d=1800; //控制数unsigned int s; //控制程序字unsigned int b=100; //基准数字量/*****************************************************/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}void delayns (unsigned int delay){while(delay--);}函数功能:延时若干毫秒入口参数:nvoid delay(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/***************************************************** 函数功能:主函数***************************************************/ void main(void){float AD_code,AD_code1,AD_codesave;double AD_codef,AD_codef1,fulls,result;interintit();LcdInitiate(); //将液晶初始化while(1){qDisplaya(0x0a);WriteAddress(0x0a);Displayd(d-1715);confige1115(0);PointRegister();AD_code=Rd_ADS1115();AD_codef=(AD_code-1)*18.5175/32767;if(flag2==1){fulls=AD_codef;}else{result=(fulls-AD_codef)/fulls;qDisplaya(0x4b);WriteAddress(0x4b);Displayfz(result);//显示百分数负载调整率}qDisplaya(0x00);WriteAddress(0x00);Displayuf(AD_codef);confige1115(1);PointRegister();AD_code1=Rd_ADS1115();if(flag1==0){AD_codesave=AD_code1;}if(clock==0){flag1=1;}tiaozheng(AD_code1,AD_codesave); //调用调整函比较两者大小AD_codef1=(AD_code1-1)*4/327670/0.33;qDisplaya(0x40);WriteAddress(0x40);Displayaf(AD_codef1);}}。