直流电子负载设计电赛获奖论文内容摘要:

10mV, R3 为 欧时电路恒流为 1A,改变 VREF 可改变恒流值,VREF 可用电位调节输入或用 DAC 芯片由 MCU 控制输入,采用电位器可手动调节输出电流。 如采用 DAC 输入可实现数控恒流电子负载。 恒阻:在定电阻工作模式时,电子负载所流入的负载电流依据所设定负 载电阻和输入电压的大小而定,此时负载电流与输入电压呈正比例,比值即是所设定的负载电阻,即负载电阻保持设定值不变。 恒阻功能,在有些数控电子负载中并不设计专用电路,而是在恒流电路的基础上通过 MCU 检测到的输入电压来计算电流,达到恒阻功能的目的,比如要恒定电阻为 10 欧时, MCU 检测到输入电压为 20V,那么会控制输出电流为 2A,但这种方法响应较慢,只适用于输入变化较慢,且要求不高的场合。 专业的恒阻电子负载都是由硬件实现的。 ( 3) 采样模块的设计 采样的目的是为了获得实际端电压、端电流的数据,用于返回单 片机处理后进行显示。 因此,采样点的选取就成为了设计的重点。 根据分析,选取了串联电阻之间如图作为输出端电压的采样点,选取了采样电阻的端电压作为输出端电流的采样点。 本设计选用了 ADS1115 作为 A/D 采样。 采样之后的数据需要进行处理之后才会得到所求得的数据。 ( 4) 液晶显示模块设计 本系统采用 12864 液晶显示屏,通过单片机 STM32 处理采样的信号,将数据发送到液晶显示。 键盘输入的设定值也通过液晶显示。 是整个系统变得简洁。 、软件设计 为了方便编写和调试,我们采用了模块化的编程方法,整个程序分为若 干子程序: ( 1)液晶显示子程序 :显示当前模式(恒压或恒流),设定输出值及实际端电压电流。 ( 2)键盘处理子程序:模式切换,输出值的设定及步进。 ( 3)数据处理子程序:根据设定值换算出调整值,写入 D/A 的值,根据 A/D 采样的数据换算出实际端电压电流值。 ( 4)将调整值送入 D/A。 ( 5)进行 A/D 采样。 ( 6)过载报警程序:当电压或电流值超过设定值时,会自动发出命令断开电路。 流程图见附录三。 程序设计 部分源程序见附录四 测试结果 、测试数据 通过测试数据得出下面的图 图 6 为恒压模式 图 7 为恒流模式 图 8 为恒阻模式 8 图 6 恒压 图 7 恒流 图 8 恒阻 数据仿真 恒流模式(如图 5) U/V I/A I/A U/V 0 U/V 0 0 9 图 5 恒流模式仿真 恒压模式(如图 6) 图 6 恒压模式仿真 测试结果分析 在 时输入设定电流 ,大约经过 电流恒定为。 在 时设定输入电流 2A,大约经过 电流恒定为 2A。 在 0s 时输入设定电压 1V,大约经过 电压恒定为 1V。 在 时设定输入电流 20V,大约经过 电压恒定为 20V。 由数据我们可以得知:恒压模式时,电压的相对误差小于 %,调节时间小于 ;恒流模式时,电流的相对误差小于 % ,调节时间小于 ;恒阻模式时,电压的相对误差小于 %,调节时间小于 ;都基本满足要求的发挥部分。 本次的设计完成了三种工作模式的负载设计,恒流模式,恒压模式,恒阻模式。 本系统的最高电压可以调节到 25V,电流最大到 ,精度都很大程度上高于基本要求,满足发挥部分的要求。 总结 本次设计的以 STM32 为控制核心的电子负载,能够直接检测被测电源的电流值、电压值,负载参数可以设定,且各个数据均能通过 12864 液晶显示。 此电子负载的可以稳定电压,电流和电子负载,能很好的替代 传统的测试方法中一般采用的电阻、滑线变阻器、电阻箱等,更简单、更快捷、更可靠地对电源、蓄电池等 10 电子设备进行输出特性的测试。 此次设计的电子负载,从最开始的资料搜集,到电路的设计;从最开始的元件选型,到电路板的焊接,再到现在的实物的整体调试……每一步我们都认真的对待, 在实验的过程中也出现了许多问题,由于时间的仓促以及实验条件与自身能力所限,还有方案的选择失误,使我们走了很多弯路,浪费了很多时间,不过我们从中学到很多知识,很多经验。 这是此次设计中最宝贵的。 11 附录一 12P1 Header 212P2 Header 212P3 Header 212P4 Header 22+3+7466*2 OP07Q1 NMOS2R6 Res11KR8 Res21KR10Res21KR9 Res21KR11Res21KR12Res21K R13Res21KR14Res21K R15Res21K1122*7 接线端子1122*8 接线端子2+3+7466*1 OP07R1 Res21KR4 Res21KControlR5 Res21K+12V+12V+12V+12V+12V12V12V12V12VIV0V1R2 Res21KII12+3+7466*3 OP07R3 Res21KV0V002+3+7466*4 OP07R7 Res21KV1V11I1 V00V1112345P5 Header 512V1122*5 接线端子Vcc1Gnd2OUT4GND3P05P16P27P38*6 AD/DA+5VControlV00V1112P6 Header 2+5V12P7 Header 2HI1 12 附录二 13 附录三 主要程序如下 主函数 main .c include include maze .h int main(void) { Init ()。 While (1) { key_get=key_scan()。 if(key_check) { if(key_checkamp。 amp。 (key_get==39。 D39。 )) { menu_display()。 key_get=0。 key_check=0。 } witch(key_get) { case 39。 A39。 :MODE=dianliu。 break。 //02A case 39。 B39。 :MODE=dianya。 break。 //020V case 39。 C39。 :MODE=dianzu。 break。 //01K case 39。 39。 :re_set=1。 break。 case 39。 *39。 :MODE_store=MODE。 MODE=guozai。 break。 default:break。 } if(key_checkamp。 amp。 ((key_get==39。 A39。 )||(key_get==39。 B39。 )||(key_get==39。 C39。 )||(key_get==39。 39。 )||(key_get==39。 *39。 ))) { key_check=0。 display(MODE)。 } } } } int fputc(int ch,FILE *f) { USART_SendData(USART2, (u8)ch)。 14 while(USART_GetFlagStatus(USART2,USART_FLAG_TC) ==RESET)。 return ch。 } /*************结束 ***************/ 驱动源程序: include include maze .h 液晶显示 void display(s8 key) { s8 key_input。 s8 add_v=0x8a。 s8 re_show=1,guozai_reshow=1。 s32 I_preset=0,U_preset=0,R_preset=0,over_I_present=0,over_U_present=0。 switch(key) { case 39。 A39。 ://电流 send_(LCD12864_CLEAR)。 if((SET_I==0)||(re_set==1)) { ata_show=0。 re_set=0。 while(1) { if(re_show) { print(0,0,请输入初始化电流 )。 print(2,6,mA)。 print(3,3, 键确定 )。 } key_input=key_scan()。 if(key_checkamp。 amp。 ((key_input39。 039。 )=0)amp。 amp。 ((key_input39。 039。 )=9)) { re_show=0。 key_check=0。 send_(add_v)。 add_v++。 send_data(key_input)。 I_preset=I_preset*10+key_input39。 039。 if(I_preset2500){ send_(LCD12864_CLEAR)。 print(1,2,Input Error)。 15 print(2,1,请重新输入。 )。 re_show=1。 I_preset=0。 Delayms(200)。 send_(LCD12864_CLEAR)。 add_v=0x8a。 send_(add_v)。 continue。 } } if(key_checkamp。 amp。 (k。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。