
2015年电赛电源题,双向DC-DC
简介
利用正点原子精英版V2开发板STM32单片机,实现对双向DC-DC系统的控制,最终达到充放电的成果
简介:利用正点原子精英版V2开发板STM32单片机,实现对双向DC-DC系统的控制,最终达到充放电的成果开源协议
:CC BY-SA 3.0
描述
题目分析
基本要求
接通 S1、S3,断开 S2,将装置设定为充电模式。
1、U2=30V 条件下,实现对电池恒流充电。充电电流 I1 在 1~2A 范围内步进可调,步进值不大于 0.1A,电流控制精度不低于 5%。
如何实现这个目标呢?你可能想的非常简单,只需要一个简单的PID控制就行了,但在实际过程中,你会发现有点小问题,就是电流的控制精度不稳,会上下跳动,很难符合要求。
问题的解决办法:使用双PID控制,前一个PID的输出作为后一个PID的目标值,实现一个PID的串联。比如我的代码中就使用两个采样,采样I1和U1的值,使得I1最终控制在了2A,控制精度小于5%。
电流实现步进可调
解决方法:用中断触发,比如我用key0去减小target的值,因为中断一定能触发,所以就能修改,如果放在main函数中可能会出现触发不了的状况。
2、设定 I1=2A,调整直流稳压电源输出电压,使 U2 在 24~36V 范围内变化时,要求充电电流 I1 的变化率不大于 1%。
没什么好说的,注意设置输出占空比的上限,上限低了会导致电流不会到2A。
3、设定 I1=2A,在 U2=30V 条件下,变换器的效率≥90% 。
算效率,我不想提了,我做出了的效率是94%多。
4、测量并显示充电电流 I1,在 I1=1~2A 范围内测量精度不低于 2%。
用一些OLED函数,结束。
5、具有过充保护功能:设定 I1=2A,当 U1 超过阈值 U1th=24±0.5V 时,停止充电
这个比较巧妙,我当时想的是采样U1到24v时,输出占空比为0,即不输出PWM波,但这时会导致电路出现问题,会导致电池部分短路,产生大电流,直接烧起来。
这时候可以在电路中加一个继电器,当U1超过时,关闭PWM并用继电器断开电路,这样就成功了。
我的代码中没有写,因为当时测试的时候没用到,用的保险丝,没注意这个
发挥部分
1、断开 S1、接通 S2,将装置设定为放电模式,保持 U2=30±0.5V,此时变换器效率≥95%。
算效率,过。
2、接通 S1、S2,断开 S3,调整直流稳压电源输出电压,使 Us 在 32~38V 范围内变化时,双向 DC-DC 电路能够自动转换工作模式并保持 U2=30±0.5V。
当时我和队友被这个题目迷惑了,以为要在BUCK和BOOST模式中转换,实际上不需要。
只需要控制BOOST始终保持U2等于30V就行,直流稳压电源只是一个干扰项,所以这个题目并不是太难。
3、在满足要求的前提下简化结构、减轻重量,使双向 DC-DC 变换器、测控电路与辅助电源三部分的总重量不大于 500g。
总重小点,简单。
电路部分
双向DC-DC
辅助电源
建议去淘宝买成品模块
为什么需要辅助电源?
因为到时候只有一个电源输出,就是30V左右,而单片机需要5V供电,芯片需要12V和5V供电,所以需要一个辅助电源模块。注:下面左边的端子输出5V,右边输出3.3V,上靠右的输出12V。
测试的视频因为我的文件比较大我将上传到B站,注意我的PCB文件中BOM表不吻合,请按原理图购买,封装和数值都对应即可,代码文件请参考附件。
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 1uf | C1,C3 | CAP-TH_BD5.0-P2.00-D0.8-FD | 2 |
2 | BOOST | CN1 | CONN-TH_2P-P5.08 | 1 |
3 | BUCK | CN2 | CONN-TH_2P-P5.08 | 1 |
4 | FR307 | D1,D2,D3 | FR307 | 3 |
5 | PWM | H1 | HDR-TH_2P-P2.54-V-M-1 | 1 |

评论