一年前我在房子内设计了一套太阳能系统来供电,开始用的是基于LM317的充电控制器和一个能量计来监视这一套系统。最后换成了PWM控制器。在今年4月份把这个PWM控制器分享到网上后,瞬间就引起了大量关注。每天都收到了关于修改太阳能电池板和电池软硬件的邮件,很大一部分都是建议把该系统换成12V电池供电。
为改进上述问题,我设计了一套新的硬件和软件系统,这个全新版本可以让大家使用起来更方便。在这次设计中,我把能量计和充电控制器整合在一起。
第二代充电控制器的规格
1、 内含充电控制器与能量计
2、 可选择6V与12V电池
3、 可依据不同的电池电压自动进行充电调节的PWM充电模式
4、 LED显示电量状态以及负载状态
5、 20*4 LCD显示电压、电流、功率、能量以及温度
6、 雷电保护
7、 反向电流保护
8、短路和过载保护
9、充电温度补偿
电气特性
1、 额定电压=6V/12V
2、 最大电流=10A
3、 最大负载电流=10A
4、 6V系统开路电压=8-11V
12V系统开路电压=15-25V
第一步:准备材料
电子元件:
1、 Arduino Nano
3、 MBR 2045功率二极管
4、 稳压器(LM7805)
5、 温度传感器(LM35)
7、 TVS二极管(P6KE36CA)
8、 三极管(2N3904或2N2222)
9、 电阻(100k*2,20k*2,10k*2,1k*2,330Ω*5)
10、 陶瓷电容(0.1μF*2)
11、 电解电容(100μF和10μF)
12、 20*4 I2C LCD
13、 RGB LED
14、 Bi Color LED
15、 跳线
16、 头针
17、 散热器
18、 保险丝和熔丝架
19、 按钮
20、 穿孔板
21、 外壳
22、 接线端
23、 螺母/螺丝/螺栓
24、 塑料基板
工具:
1、 电烙铁
2、 钢丝钳和剥模器
3、 螺丝刀
4、 钻孔机
5、 Dremel工具
6、 喷胶枪
7、 小刀
第二步:控制器工作
充电控制器的核心是Arduino nano主板,arduino MCU可感应太阳能电池板和电池电压。该主板依据这个电压值来对改变电池充电方式,并且控制负载。
充电电流的大小是由电池电压和充电电压设定值之差决定,该控制器使用了两阶段充电算法。按照此算法,控制器将发送一个固定频率的PWM信号到太阳能电池板的P沟道MOSFET。
第三步:太阳能控制器的主要功能
以下是控制器的主要功能:
1、 电池过冲保护:当电池充满后,通过太阳能电池板来限制供电,这一功能由我的程序的周期代码来实现。
2、 电池过度放电保护:当电池到了低电量状态时,会自动断开与电路负载的连接。由负载控制代码完成。
3、 负载控制功能:在特定的时间内连接和断开负载,当日落时断开负载,日出则进行连接。
4、 监视功率和能量:监视负载功率和能量,并通过显示器显示。
5、 异常状况保护:在雷电、过压、过流和短路的情况下保护电路。
6、 显示功能:所有参数都可显示。
7、 串行通信
----------------------
本文选自电子发烧友网11月《测试测量特刊》EE SHOW栏目,转载请注明出处!
第四步:感应电压、电流和温度
1、 电压传感器
电压传感器用来感应太阳能电池板和电池的电压,可通过两个分压器电路来实现。这两个电路均由100k和20k的电阻分别感应太阳能电池板和电池电压,R1和R2的输出端与arduino A0脚相连,R3和R4与arduino的A1脚连接。
2、 电流传感器
电流传感器在这里是用来测量负载电流的,然后用这个电流值来计算负载功率及能量,我用的是ACS712-20A。
3、 温度传感器
用来感应室内温度,我用的是LM35,使用温度范围在-55℃-150℃范围内。
为何需要温度监控?
首先,随着温度的变化,电池的化学反应也在改变。因此,在温度变化时进行充电调整非常重要。温度传感器专门监控电池温度,同时太阳能控制器还可通过此输入端来调整合适的设定值。酸式电池的补偿值为- 5mv /℃/cell(12V的电池为–30mV/ºC,6V电池是15mV/ºC)。这里的负号表示温度升高时需要调低充电设定值。
第五步:校准传感器
电压传感器:
以arduino Vcc 的5V作为参考,校准电压等于5/1024,即0.0048828V
Vout=Vin*R2/(R1+R2)
Vin = Vout*(R1+R2)/R2 R1=100 and R2=20
Vin= ADC count*0.00488*(120/20) Volt
电流传感器:
灵敏度为100mV/A
无测试电流的输出电压为VCC/2=2.5V
ADC count= 1024/5*Vin ,Vin=2.5+0.100*I
ADC=204.8(2.5+0.1*I) =512+20.48*I
可推出I =(ADC count/20.48)- 512/20.48=0.04882*ADC -25
温度传感器:
灵敏度为10 mV/°C
补偿为(5/1024)*ADC count*100
第六步:充电过程
1、大电流快充,在此模式下预设的恒定电流会经过电池,而这个过程不需要PWM,因为电池正在进行充电,所以电池电压也随之增长。
2、恒压充电,当电池电压到达快充设定值后,PWM会进行控制,保持电压不变。以免过热等反应,同时电流也会降低至安全等级,电池将完全充电。
3、 涓流充电:电池完全充电后,充电电压会逐渐降低。
上述是理想的充电过程。
充电循环过程:
当太阳能电池板的电压大于电池电压时,进行大电流快速充电过程。但电池电压到达14.4V时,将进入恒压充电模式。随后PWM信号会管理充电电流,以使电池电压在14.4V的状态维持1小时。涓流充电过程的电池电压为13.6V,当电池电压值低于13.6V超过10分钟,充电将进一步循环。
第七步:负载控制
通过监控日出、日落来进行负载控制。负载控制的主要作用是断开负载与电池的连接,以防止深度放电而损坏电池。
当太阳能电池电压大于5V是表示日出,反之则为日落。
接通情形:晚上PV电压低于5V,电池电压高于LVD设定值时,控制器将接通负载,并且负载指示灯将变亮。
断开情形:以下两种情形负载会断开:
1、 早上PV电压大于5V时
2、 电池电压低于LVD设定值时
红灯亮即表示负载已经断开(LVD表示低电压断开)
第八步:功率与能量
功率是电压与电流的乘积,即P=U*I
能量则是功率和时间的乘积,E=P*t
为监控负载功率以及能量,参数均会在20*4LCD上显示。
第九步:保护
1、 太阳能电池板的反极性保护
2、 过充保护
3、 深度放电保护
4、 短路和过载保护
5、 反向电流保护
6、 太阳能电池板输入端过压保护
可用功率二极管MBR2045来实现反极性和反向电流保护。而过冲和深度放电保护是通过软件来控制。过流和过载保护只需两个保险丝(一根是在太阳能电池板的一端,另外一个是在负载端)
很多因素可导致暂时性的过压现象,但是雷电的影响最严重。在这个设计中采用了双向TVS二极管P6KE36CA来抑制雷电和过压带来的危害。上一个设计用的是整流二极管,你也可以在负载端加上同样的TVS二极管。
第十步:LED指示灯
电池电量指示灯:这是电池电量的主要表示方式,用RGB LED按照上图进行连接。
Battery LED灯表示电池状态
红色表示电压过低
绿色表示电压正常
蓝色表示完全充
Load LED灯表示负载状态
绿色表示负载连接
红色表示负载断开
最后一个LED是显示太阳能电池板的状态
第十一步:LCD显示
上图20x4 I2C LCD显示了电压、电流、功率、能量和温度。显示的内容可在代码中进行改变。
第十二步:面包板测试
焊接之前在面包板上进行测试是很棒的办法。在连接好所有器件后,上传代码。根据用户的需要,在代码中进行修改即可。
接线端:为太阳能输入端、电池和负载端连接增加三个螺丝接线端,中间的是连接电池的,左边连接太阳能电池板,右边连接负载。
电源:在上一版本里使用了9V电池给arduino供电,现在用稳压器(LM7805)把电池电压调低到5V。经过几次测试后发现用LM7805容易发热而浪费能量,所以采用更高效的DC-DC降压变换器更可靠。
第十四步:装配
按上述图片装好各元件,并在板子背面焊接好。从图中可看到,我分别用红色和黑色线把稳压器的5V端和GND脚连接在板上。不过为了美观性,我把它们焊接在背面。
第十五步:焊接
Show All 9 Items
按照原理图来焊接所有的元件。在两个MOSFET和功率二极管上均装上散热器。
备注:MBR2045有两个阳极和一个阴极,所以需要将这两个阳极短路连接。
第十六步:连接电流传感器
连接好所有元件后,在MOSFET的漏极和负载熔丝架的上端上焊接两根粗线。然后将这两根线连到螺丝接线端。
第十七步:制作LED指示和温度传感板
原理图上只有2个LED,但是为了显示太阳能电池板上的状态,另外增加了一个LED。
这里需要准备一个如上图的小型穿孔板,然后在板的两侧钻两个3.5mm的孔。
将LED插到板上并且在背面进行焊接,还有用来插入温度传感器的3脚的排母和一个连接外部设备的10PIN直角排针。然后把RGB LED的阳极连接到温度传感器的Vcc脚。
第十八步:最终测试
在主板和显示板都设计完后,用跳线连接各排母。每个连接都需按照原理图操作。将USB接线插入arduino,然后下载代码。如果你想看到连续的监控效果,就保持这个连接。
保险丝额定值:在样品中用的是5A的熔丝架,但是实际用途上使用的是120%-125%的短路电流保险丝。
控制器的连接
首先,将控制器与电池连接,而且需要线连接负极再连正极。然后连接太阳能电池板,同样是先负后正。最后连接负载。
测试方法
在这里我用的降压变压器和黑布来测试控制器。变换器的输入端连接电池,输出端连接控制器电池端。
电池状态
用螺丝刀旋转变换器的电位计,来模拟不同的电池电压。LED等也会随着电压的变化变亮和熄灭。注意在这过程中太阳能电池板需保持断开或者是用黑布/纸板将其覆盖。
日出/日落
用黑布来模拟即可
负载控制
按照电池的电量和日出、日落的变化,负载会进行连接或断开。
温度补偿
在温度传感器附近加热或者用冰块等降温,可以在LCD显示屏上立即看到温度的变化。
充电补偿的设定值可在串口监视器上显示。
第十九步-第二十四步,请参见11月《测试测量特刊》。
-
Arduino
+关注
关注
188文章
6468浏览量
186904 -
充电控制器
+关注
关注
1文章
54浏览量
13548
发布评论请先 登录
相关推荐
评论