历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2020年01月29日 | 如何用AVR单片机设计太阳能电池控制器

2020-01-29 来源:elecfans

随着能源危机和环境污染的加深,太阳能的研究和利用受到广泛的关注。太阳能是人类取之不尽用之不竭的可再生能源,也是清洁能源,不产生任何的环境污染,在太阳能的有效利用中,太阳能充电是近些年发展最快,最具活力的研究领域,是其中最受瞩目的项目之一。太阳能电池发电是基于“光生伏打效应”原理,将太阳能转化为电能,利用充电效应将太阳辐射直接转化为电能。它具有永久性、清洁性和灵活性大的优点,是其他能源无法比拟的。


1 太阳能控制器的设计

1.1 太阳能电池的输出特性

由它的输出特性曲线(见图1) 可知,太阳能电池的伏安特性具有很强的非线性,即当日照强度改变时,其开路电压不会有太大的改变,但所产生的最大电流会有相当大的变化,所以其输出功率与最大功率点会随之改变。然而当光强度一定时,电池板输出的电流一定,可以认为是恒流源。因此,必须研究和设计性能优良的太阳能发电控制器,才能更有效地利用太阳能。

如何用AVR单片机设计太阳能电池控制器?

1.2 系统的硬件结构

太阳能控制器硬件结构图如图2所示。该控制器以AVR mega 32为控制核心,外围电路主要由蓄电池电压及环境温度检测与充放电控制电路、电池板电压检测与分组切换电路、负载电流检测与输出控制电路、状态显示电路、串口数据上传和键盘输入电路构成。

如何用AVR单片机设计太阳能电池控制器?

电压检测电路用于识别光照的强度和获取蓄电池端电压。温度检测电路用于蓄电池充电温度补偿。该系统采用PWM方式驱动充电电路,控制蓄电池的最优充放电。电池板分组切换控制电路用于不同光强度和充电模式下电池板的切换,该系统实现对3组电池板阵列控制。负载电流检测电路用于过流保护及负载功率检测。状态显示电路用于系统状态的显示,包括电压、负载状况及充放电状态的显示。串行口上传数据电路用于系统运行参数的上传,实现远程监控。键盘输入电路用于充电模式设定及LCD背光开启。该控制器在有阳光时接通电池板,向蓄电池充电;当夜晚或阴天阳光不足时,蓄电池放电,以保证负载不停电。


1.3 AVR单片机

AVR微处理器是Atmel公司的8位嵌入式RISC处理器,具有高性能、高保密性、低功耗等优点。程序存储器和数据存储器可独立访问的哈佛结构,代码执行效率高。系统采用的mega 32处理器包含有32 KB片内可编程FLASH程序存储器;1 KB的E2PROM和2 KBRAM;同时片内集成了看门狗;8路10位ADC;3路可编程PWM输出;具有在线系统编程功能,片内资源丰富,集成度高,使用方便。AVR mega 32可以很方便地实现外部输入参数的设置,蓄电池及负载的管理,工作状态的指示等。


1.4 蓄电池的充放电控制

阀控密封铅酸蓄电池具有蓄能大,安全和密封性能好,寿命长,免维护等优点,在光伏系统中被大量使用。由阀控密封铅酸蓄电池充放电特性图(见图3)可知,蓄电池充电过程有3个阶段:初期(OA)电压快速上升;中期(ABC)电压缓慢上升,延续时间较长;C点开始为充电末期,电压开始上升;接近D点时,蓄电池中的水被电解,应立即停止充电,防止损毁电池。所以对蓄电池充电,通常采用的方法是在初期、中期快速充电,恢复蓄电池的容量;在充电末期采用小电流长期补充电池因自放电而损失的电量。

如何用AVR单片机设计太阳能电池控制器?

蓄电池放电过程主要有三个阶段:开始(OE)阶段电压下降较快;中期(EFG)电压缓慢下降且延续较长的时间;在最后阶段G点后,放电电压急剧下降,应立即停止放电,否则将会给蓄电池照成不可逆转的损坏。因此,如果对阀控密封铅酸蓄电池充放电控制方法不合理,不仅充电效率降低,蓄电池的寿命也会大幅缩短,造成系统运行成本增加。在蓄电池的充放电过程中,除了设置合适的充放电阈值外,还需要对充放电阈值进行适当的温度补偿,并进行必要的过充电和过放电保护。


根据阀控密封铅酸蓄电池的特点,控制器利用MCU的PWM功能对蓄电池进行充电管理。若太阳能电池正常充电时蓄电池开路,控制器将关断负载,以保证负载不被损伤;若在夜间或太阳能电池不充电时蓄电池开路,由于自身控制器得不到电力,不会有任何动作。当充电电压高于保护电压(15 V)时,自动关断对蓄电池的充电;此后当电压掉至维护电压(13.2 V)时,蓄电池进人浮充状态,当低于维护电压(13.2 V)后,浮充关闭,进入均充状态。当蓄电池电压低于保护电压(10.8 V)时,控制器自动关闭负载,以保护蓄电池不受损坏。若出现过放,应先进行提升充电,使蓄电池的电压恢复到提升电压后再保持一定时间,防止蓄电池出现硫化。通过PWM控制充电电路(智能三阶段充电),可使太阳能电池板发挥最大功效,提高系统充电效率。


1.5 温度补偿

采用数字温度传感器DS18820检测蓄电池环境温度。对蓄电池的充电阈值电压温度补偿系数取-4mV/(℃·单体)。补偿后的电压阈值可以用以下公式表示:Ve=V+(t-25)αn。其中,Ve为补偿后的电压阈值;V为25℃下的电压阈值;t为蓄电泄环境温度;α为温度补偿系数;n为串联的单体数。控制器对过放电压阈值不做补偿。


1.6 MOSFET驱动电路

设计的控制器属于串联型,即控制充电的开关是串联在电池板与蓄电池之间的。串联型控制器相对于并联型控制器能够更有效地利用太阳能,减少系统的发热量。设计中用MOSFET实现开关。MOSFET是电压控制单极性金属氧化物半导体场效应晶体管,所需驱动功率较小。而且MOSFET只有多数载流子参与导电,不存在少数载流子的复合时间,因而开关频率可以很高,特别适合作为PWM控制充电开关。为此,设计中采用P沟道MOSFET。P沟道MOSFET的导通电压Vth<0,由图4可以实现MOSFET的驱动。当Q2导通时,由于Q2的Vce很小,可以认为Q1的G极接地,Vgs<0,当Vin达到一定值时,Q1导通。

如何用AVR单片机设计太阳能电池控制器?

1.7 键盘电路

采用单按键的输入方式,用于开液晶背光和设定充电模式。初始化时将PC7输出高电平,在程序运行过程中,通过定时中断检测是否有按键按下。当有按键按下时间不超过10 s时,则打开液晶背光,10 s后背光关闭。当有按键按下时间超过10s时,进入模式设定。在设定模式下,每按一次模式加1,按下按键10 s后或者10 s按键无任何动作,模式保存到E2PROM中,退出设定模式。


1.8 状态显示和告警电路

控制器用LCD1602液晶显示系统的状态信息,包括蓄电池电压、负载功率等。 LCD1602采用7线驱动法,Vo接1 kΩ电阻到地,用于调节液晶显示对比度。显示数据和指令通过LCD1602的DB4~DB7写入,同时具备有声光告警功能。当出现过压或过放时,相应的发光二极管闪烁以及蜂鸣器告警,同时相应告警继电器接通。


1.9 数据上传

控制器用RS 232串行口将系统电压、温度、充放电状态以及负载情况数据上传,实现远程监控。


2 控制器的软件流程图

主程序主要完成对I/O、定时器和PWM的初始化,同时根据电池板和蓄电池的状态调用相应的充放电子程序。控制器参数的测量主要由中断服务程序完成。

如何用AVR单片机设计太阳能电池控制器?

3 结 语

在此设计的太阳能控制器性能稳定,具有过充过放保护和温度补偿。经过测试,系统显示出良好的控制效果,不仅提高了太阳电池的工作效率,同时也保护了所使用的蓄电池,在利用绿色能源方面,具有一定的社会效益和广泛的推广价值。

推荐阅读

史海拾趣

Global Connector Technology公司的发展小趣事
继电器的参数设置不正确,导致无法正确识别断相故障。
Anderson Power公司的发展小趣事
长时间运行可能导致继电器内部元件老化或损坏,需要定期检查和维护。
科山芯创(COSINE)公司的发展小趣事

随着产品的不断推出和市场的认可,科山芯创开始积极拓展市场。他们与国内外多家知名企业建立了合作关系,产品广泛应用于通讯网络、物联网、工业自动控制等多个领域。同时,科山芯创还积极参加各种行业展会和交流活动,与业界同行进行深入交流,共同推动电子行业的发展。

Fairchild (ON Semiconductor)公司的发展小趣事

Fairchild Semiconductor在创立之初就致力于半导体技术的研发与创新。公司推出了多种具有革命性意义的半导体产品,如逻辑门、功率MOSFET、模拟集成电路等,这些产品不仅在当时市场上取得了巨大的成功,更为Fairchild在半导体行业中确立了领导地位。

Hi-Optel Technologly Co Ltd公司的发展小趣事

在发展过程中,Fairchild Semiconductor也经历了多次收购与整合。这些收购不仅为Fairchild带来了更多的技术和资源,也进一步巩固了其在半导体行业中的领导地位。然而,随着市场竞争的加剧和技术的不断更新换代,Fairchild也面临着越来越多的挑战和机遇。

Curtis Instruments Inc公司的发展小趣事

在上世纪60年代至70年代的阿波罗登月计划期间,Curtis的技术和产品被美国航空航天局(NASA)广泛应用。在每个登月舱中,NASA都装备了多个Curtis消逝时间指示器,用于监控电力系统的运行情况。同时,阿波罗月球行走车上也安装了Curtis的电子电量安培小时计,以监控电池的使用情况。这些高精度、高可靠性的产品为NASA的太空任务提供了强有力的技术支撑。

问答坊 | AI 解惑

FPGA与CPLD行业用途调查

大家把FPGA和CPLD用于哪个行业?…

查看全部问答>

调用DLL中的函数写串口的问题

我自己编写了一个DLL,这个DLL中有打开,关闭,和读写串口的一些函数。现在,我在外面的一个测试程序中调用DLL中的写串口函数的时候,第一次写串口是OK的,但是为什么第二次写的时候就出错了,返回实际写入的字节数为0。DLL中写串口的函数中就一句W ...…

查看全部问答>

51单片机的问题,大家帮忙看下

我用51单片机读取片外RAM的数据,输出到P0,P0口的输出电压是0伏,和1.3伏,没有输出5伏的,这是为什么?单片机供电没有问题,会是单片机坏了吗?…

查看全部问答>

寻找SAMSUNG S3C2440开发板

寻找SAMSUNG S3C2440开发板,要求支持wince5.0系统,最好在深圳附近,能提供面对面的技术支持服务。…

查看全部问答>

DM642能最大支持多少容量SDRAM

    DM642是不是最大只支持64MB的SDRAM? 如果要更大容量怎么办?比如256MB\\\\512MB…

查看全部问答>

点LED灯,我晕了+_+

#include   /****************主函数****************/ void main(void) {       /*下面六行程序关闭所有的IO口*/     P1DIR = 0XFF;P1OUT = 0XFF;     P2DIR = 0XFF;P2OUT = 0XFF; &nbs ...…

查看全部问答>

MSP430G2 LaunchPad内部温度测量演示应用新问题,求解!

芯片是WSP430G2553, 安装了CCS V5和 IAR,而且aunchPad_Temp_GUI.exe , Temperature Sensor 和 java 都有,就是出现下图这样,无法键盘输入,按S2,LED灯依旧闪烁,肿么办???  …

查看全部问答>

Cyclone V板卡试用报告四 --- PCIe仿真

由于现在用的是笔记本电脑,没有PCIe的接口可以进行调试,这里就只能仿真过过PCIe的瘾了。 实际的FPGA设计工作中,仿真占了很大一块,很多的设计错误都可以通过仿真发现出来。 一个好的仿真环境能够FPGA设计工作事半功倍。Altera的PCIe环境仿真代 ...…

查看全部问答>

protues新手求助!

在protues中找了好久都找不见ds12c887芯片,求知情人士告知!谢谢啦!…

查看全部问答>

急救讨论

MSP430F5529怎么实现定时计数器       比如10S内输入电压大于0.5VCC的C语言编程…

查看全部问答>