1 引言
随着人们环保意识的加强以及资源的日渐紧张,新能源的利用已快速进入人们的生活。太阳能路灯以太阳光为能源, 白天充电、晚上使用, 无需铺设复杂、昂贵的管线, 可任意调整灯具的布局, 安全节能无污染, 充电及开/关过程采用光控自动开关, 无需人工操作, 工作稳定可靠, 节省电费, 免维护, 太阳能路灯的实用性已经得到人们的认可。
本文介绍基于单片机的太阳能路灯控制器的方案设计, 对12 V 和24 V 蓄电池可自动识别, 可实现对蓄电池的科学管理, 指示蓄电池过压、欠压等行状态, 具有两路负载输出, 每路负载额定电流可达5 A, 两路负载可以随意设置为同时点亮、分时点亮以及单独定时等工作模式, 同时具有负载过流、短路保护功能; 具有较高的自动化和智能化水平。
2 硬件电路组成及工作原理
2.1 系统硬件结构
太阳能路灯智能控制器系统硬件结构如图1所示, 该系统以STC12C5410AD 单片机为核心, 外围电路主要由电压采集电路、负载输出控制与检测电路、LED 显示电路及键盘电路等部分组成。电压采集电路包括太阳能电池板和蓄电池电压采集, 用于太阳光线强弱的识别以及蓄电池电压的获取。单片机的P3 口的两位作为键盘输入口, 用于工作模式等参数的设置。
图1 系统硬件结构框图
2.2 STC12C5410AD 单片机
STC12C5410AD 是STC12 系列单片机, 采用RISC型CPU 内核, 兼容普通8051 指令集, 片内含有10 KB Flash 程序存储器, 2 KB Flash 数据存储器,512 B RAM 数据存储器, 同时内部还有看门狗(WDT) ; 片内集成MAX810 专用复位电路、8 通道10 位ADC 以及4 通道PWM; 具有可编程的8 级中断源4 种优先级, 具有在系统编程( ISP) 和在应用编程( IAP) , 片内资源丰富、集成度高、使用方便。
STC12C5410AD 对系统的工作进行实施调度, 实现外部输入参数的设置、蓄电池及负载的管理、工作状态的指示等。为充分使用片内资源, 本文所设置的参数写入Flash 数据存储器内。
2.3 键盘电路
P3.4(T0)接F1 键, 用于设置状态的识别及参数设置; P3.5(T1)接F2 键, 用于自检及"加1"功能, 根据程序流程, 分别实现不同功能。
2.4 电压采集与电池管理
太阳能电池板电压采集用于太阳光线强弱的判断, 因而可以作为白天、黄昏的识别信号。同时本系统支持太阳能板反接、反充保护。
蓄电池电压采集用于蓄电池工作电压的识别。
利用微控制器的PWM 功能对蓄电池进行充电管理。若太阳能电池正常充电时蓄电池开路, 控制器将关断负载, 以保证负载不被损伤, 若在夜间或太阳能电池不充电时蓄电池开路, 控制器由于自身得不到电力, 不会有任何动作。当充电电压高于保护电压( 15 V) 时, 自动关断对蓄电池的充电; 此后当电压掉至维护电压( 13.2V) 时, 蓄电池进入浮充状态, 当低于维护电压( 13.2 V) 后浮充关闭, 进入均充状态。当蓄电池电压低于保护电压(11 V)时, 控制器自动关闭负载开关以保护蓄电池不受损坏。通过PWM充电电路( 智能三阶段充电) , 可使太阳能电池板发挥最大功效, 提高系统充电效率。本系统支持蓄电池的反接、过充、过放。
2.5 负载输出控制与检测电路
本系统设计了两路负载输出, 每路输出均有独立的控制和检测, 具有完善的过流、短路保护措施,电路原理如图2 所示。设计了两级保护: 第一级采用了由R7(0.01 Ω康铜丝)以及运放LM358、比较器LM393 等器件组成的过流、短路检测电路, 配合单片机的A/D 转换及外部中断响应来实现负载过流及短路保护, 是一种硬件+软件的方式, LM358 的输出送P1.7(A/D 转换)口, 用作过流信号识别, 当电流超过额定电流20%并维持30 s 以上时, 确认为过流; 短路电流整定为10 A, 响应时间为毫秒数量级。
图2 负载输出控制与检测电路
第二级采用了电子保险丝保护, 当流经电子保险丝的电流骤然增加时, 温度随之上升, 其电阻大大增加, 工作电流大大降低, 达到保护电路目的, 响应时间为秒数量级, 过流撤消或短路恢复后电子保险丝恢复成低阻抗导体, 无须任何人为更换或维修。系统采用了两级保护措施后, 在长达数小时的负载短路实验后, 控制器仍没出现电路烧毁现象。解决了用传统保险丝只能对电路进行一次性保护以及一旦器件烧毁必须人为更换的问题, 同短路后需手动复位或断电后重新开启的系统相比, 也具有明显的优点。简化了太阳能路灯控制器维护, 提高了系统的安全性能。[page]
2.6 硬件设计过程中的注意事项
( 1) 感应雷保护电路应设计在太阳能电池板引线入口处, 保护电路周围4 mm 内不能布置其他器件。
( 2) 防止太阳能电池板反接的二极管必须采用快恢复二极管, 这种二极管导通内阻小, 充电时发热量小, 不用散热器也可以连续充电, 充电效果好。
( 3) 充电、负载放电电路的印刷线路宽度至少为4 mm~5 mm, 线路上用搪锡处理以增加过电流能力, 大电流导线从一层过渡到另一层时, 要放置3~5个过孔。
( 4) 过流、短路保护电路选用的电流取样电阻要综合考虑电流、功率及热稳定性三个因素。电阻增大则电路效率下降, 本系统选用电阻为0.01 Ω, 过电流能力在10 A 以上的康铜丝作为电流取样电阻, 来产生取样电压, 取样电压最多不超过0.2 V, 故采用运放LM358 对其进行放大。
( 5) 器件的布局和PCB 的布线采用模块化方式, 大电流信号与小电流信号要分离,对放大电路的线路尤其要精心布置。数字地和模拟地分开, 注意电源线和地线的布局。
3 系统软件设计
与本设计方案的硬件电路对应的软件程序包括: 主程序、定时中断程序、A/D 转换子程序、外部中断子程序及键盘处理子程序、充电管理子程序、负载管理子程序。单片机的软件编程以Keil C 编译器的Windows 集成开发环境μvision2 作为开发平台, 采用C51 高级语言编写。
3.1 软件编程要点
( 1) 本系统采用较少的按键实现了诸多功能, 如负载工作模式的设置、双灯同时工作还是分时工作、负载工作时间的设定、自检功能等, 为防止误操作采取了一些措施。这种方法实际上是一键多用的一种尝试, 还可以推广到更复杂的人机对话的设计, 其思路可参见按键处理流程图。
( 2) 键盘在定时中断服务程序中读取, 用中断间隔时间实现键盘的去抖, 不必编写另外的延时程序, 提高了CPU 的利用效率。键盘值存入数据缓冲区, 在主程序中读数据缓冲区的内容, 执行键盘功能散转子程序。
( 3) 环境光线( 闪电、礼花燃放) 对太阳能电池板的采样电压有明显影响, 故在白天、黄昏的识别时, 要进行软件延时, 一般控制在2~3 min.
( 4)外部中断为高优先级中断, 编制子程序实现负载过流、短路保护时, 要充分考虑到负载启动瞬间会产生数倍于额定电流的冲击电流, 冲击电流维持时间在3 ms~5 ms, 应在软件上采取措施,避免短路与负载开启的误判。确定负载过流、短路后, 切断负载输出。负载切断后, 每隔一段时间, 如20 s, 应试接通负载开关, 当发现过流、短路信号已消除, 则恢复负载的输出, 否则负载开关仍然保持断开。
( 5) 为保护负载( 灯具) , 蓄电池过放保护恢复时应用软件设置一个回差电压, 这样负载开关不会出现颤抖现象, 有利于延长灯具的使用寿命。
( 6) 根据STC12C5410AD 的Data Flash 的特点,数据写入时必须启动ISP/IAP 命令, CPU 等待IAP动作定时后, 才继续执行程序, 要先关断中断( EA) .
还应注意数据写入Data Flash 存储器, 不能跨越扇区。
3.2 单片机软件编程
系统单片机软件流程如图3、4 所示。
图3 按键程序流程。
图4 电压检测子程序流程
(1)ADC 子程序
INT8U ADC(INT8U number)using 2
{number=number&0x07;//通道号不超过7
ADC_CONTR = ADC_CONTR&0xe0; //清ADC_
FLAG、AD 不启动
ADC_CONTR = ADC_CONTR|number; //选择通道
ADC_CONTR = ADC_CONTR|0x08;//启动A/D 转换
while((ADC_CONTR&0x10)! =0x10); //等待A/D转换结束
return (ADC_DATA);//结果返回
}
(2) 外部0 中断响应子程序
void Service_INT0() interrupt 0 using 1
{ if(P3_2) //高电平,认为是干扰信号触发中断
return;
delay1(5000);//10ms 延时
if(P3_2==0)
{load_switch_1=LSTOP;//负载开关1 关
LOOP1_DL=1;//置负载短路标志
}
}
4 结束语
本文所设计的太阳能路灯控制器可适用12 V或24 V 工作的光伏系统, 可以直接驱动直流节能灯或通过逆变器驱动无极灯等作为照明光源, 也可以驱动一些直流低压负载用于城市亮化。控制器的两路负载输出可以用于机动车道和人行道的照明, 照明时间和工作模式可以灵活设置。着重解决了如何对蓄电池及负载进行有效管理的问题,提高了太阳能电池板的使用效率, 延长了蓄电池的使用寿命, 防止因线路问题而造成意外事件的发生。
上一篇:MSP430单片机在高功率因数电源中的设计方案
下一篇:单片机16进制转10进制程序
推荐阅读最新更新时间:2024-03-16 13:34