基于Atmega16单片机的智能太阳能充电器设计

发布者:数字之舞最新更新时间:2013-02-26 来源: 21IC 关键字:Atmega16  智能太阳能充电器  跟踪功能 手机看文章 扫描二维码
随时随地手机看文章

随着经济的发展、社会的进步,人们对能源提出越来越高的要求,寻找新能源成为当前人类面临的迫切课题。现有电力能源的来源主要有3 种,即火电、水电和核电。其中,火电需要燃烧煤、石油等化石燃料。一方面这些燃料蕴藏量有限、越烧越少,正面临着枯竭的危险。另一方面燃烧燃料将排出二氧化碳和硫的氧化物,因此会导致温室效应和酸雨,恶化地球环境。而水电有可能导致生态环境破坏,一个国家的水力资源也是有限的,而且还要受季节的影响。核电在正常情况下固然是干净的,但万一发生核泄漏,后果非常严重。在这种条件下就迫使人们去寻找新能源。新能源要同时符合两个条件:一是蕴藏丰富不会枯竭;二是安全、干净,不会威胁人类和破坏环境。目前找到的新能源主要有:太阳能,风能和燃料电池。其中,最理想的新能源是太阳能。

1 Atmega16 系列单片机概述

美国英特梅尔(ATMEL)公司的Atmega16 系列单片机是基于增强的AVR RISC 结构的低功耗8 位CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。ATmega16 AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。

在开发工具上,ATmega16 系列单片机支持先进的JTAG 调试,其硬件仿真工具(仿真器)只是一个非常简单的USB 转换器,其软件集成开发环境由著名的IAR 公司提供,在实际调试使用时非常方便,能对相应的数据进行实时观测和对程序的执行情况进行判断,在系统整合方面,ATmega16 系列单片机根据不同产品系列,集成了多种不同的功能模块,包括定时器、模拟比较器、多功能串行接口、硬件乘法器、ADC、看门狗定时器(WDT)、I/O 端口、RAM、PWM 以及丰富的中断功能。使用户根据自己的需求,选择合适的ATmega16 单片机。

2 太阳能充电控制系统方案设计

系统主要实现独立光伏路灯太阳电池板的最大功率跟踪功能。在太阳电池板处于工作状态,即整个光伏系统处于充电状态时,控制器在光电流达到一定值后(本系统设定为0.3A),实现对电压、电流数据的检测,通过快速的控制算法,调节蓄电池两端的充电电压,实现太阳电池板的输出功率的最大功率跟踪,提高铅酸蓄电池的充电电流,缩短充电时间,提高充电效率。系统的实现主要应解决如下几个方面的问题:

(a)太阳电池板输出电压的检测:检测太阳电池板不同的输出电压,并根据不同的电压,系统作出不同的控制处理。如系统处于默认工作状态,太阳电池开路电压低于8 V 时,因为其低于电池的充电要求,因而进行卸载处理。

(b)铅酸蓄电池容量的检测:系统为了尽可能地保护蓄电池,延长其寿命,将根据不同的容量和蓄电池不同的状态采取相应的充电控制策略。

(c)太阳电池板输出电流检测:据此得出输出功率,使系统通过一定的算法和控制手段,使系统工作在最大功率点。

(d)PWM 输出控制:根据输入输出检测模块的数据实时调整蓄电池的充电电压和电流和卸载放电功能,实现智能充放电控制。

(e)中央处理系统:实现高效的信息处理和各个功能模块的控制。

由此,我们设计出了系统整体硬件电路结构模型,见图1。从图中可以看出,整个电路由六个功能模块组成:核心控制模块、前级检测模块、Boost 电路控制模块、后级检测模块、PWM 输出模块和卸载模块构成。

当太阳电池板正常工作输出时,其过程为:首先检测该电压能否达到电池的充电要求,在满足基本充电要求的情况下通过控制器对电池两端的电压进行实时监控在适合电池工作的三种情况下,通过ATmega16 微处理器的PWM 模块输出控制充电电压和电流。[page]

3 太阳能充电系统最大功率跟踪算法的实现

光伏系统电流的变化是随着外界环境变化而变化的,要想实现光伏系统的最大功率跟踪,一般可以通过两个步骤来完成:第一步是采用合适的搜索算法,找到光伏系统的最大功率点;第二步是通过控制手段,使光伏方阵工作在最大功率点。该控制系统的总体程序流程图如图2 所示。光伏发电扰动观察法是最常用的MPPT 控制方法之一,其原理是每隔一定的时间增加或者减少光伏阵列输出电压,并观测之后其输出功率变化方向,来决定下一步的控制信号。这种控制算法一般采用功率反馈方式,通过两个传感器对光伏阵列输出电压及电流分别进行采样,并计算获得其输出功率。该方法虽然算法简单,且易于硬件实现,但是响应速度较慢,只适用于那些日照强度变化比较缓慢的场合。而且稳态情况下,这种算法会导致光伏阵列的实际工作点在最大功率点附近小幅振荡,因此会造成一定的功率损失,而日照发生快速变化时,跟踪算法可能会失效,判断得到错误的跟踪方向。针对这种算法在实际应用中遇到的情况,根据本系统实际提出了一种实用的改进算法。在本独立光伏路灯系统中,是要对蓄电池进行充电,需要考虑实现最大功跟踪的同时,还要兼顾最大限度的延长蓄电池的寿命,具体采用了不同的蓄电池充电策略,可以在程序流程图中看出。

本文提出一种改进的最大功率跟踪方法,首先根据蓄电池的当前状态来判断需不需要充电,然后根据电路前级检测到的光伏电池发电的电压和电流大小来决定最大功率点的设定,将光伏发电强度分为两种工作方式,对特定的电池板取一特定的参数。在光伏发电输出调理电路的前级和后级的参数检测过程中,每隔一定的时间连续采集10 个相邻的电压、电流信号(ATmega16 有自带的A/D 转换器,设置的采样率为200 Hz),去掉最大和最小的数据后,进行均值滤波,并同时得到此时的电压和电流的大小,在整个控制采集数据的过程中,为了有效地消除随机干扰,我们在程序中设定一个幅度比例系数,即每两个信号的幅度采集值要有一定的比例关系,若超过这个比例,则认为是干扰信号,便进行这个数据的重新采样,连续超过三次采样数据都是干扰信号时,系统则自动取消这一次测量。对于采集到的有效数据,经过了均值滤波后,可以消除一定的噪声干扰,要得到更好的点参数数据,我们把采集到的数据进行LMS(即自适应最小均方滤波器)滤波,该滤波器的应用较简单,它是最陡下降梯度算法,用梯度的瞬时值迭代,从而使均方误差最小化,用这种方法处理的数据效果非常好,对弱信号处理中有很好的应用前景,通过试验,我们选定滤波器阶数为三阶,收敛因子μ(步长)为0.001,权矢量W 初始化为:W=[0,0,0]T,其递推公式为:

式中:x (k) 为观测样本;X (k-1)为过去的观测样本矢量;WT(k-1)X(k-1)表示基于过去的观测样本而预测的现在的信号,这里选择预测误差e(k)=x (k)-WT(k-1)X(k-1)作为调节权重的参数,可以证明,预测误差最小等价于恢复误差最小。通过LMS 滤波器后,我们可以得到比较理想的数据,为实时准确提取出最大功率所需要的参数提供了条件,也找到了参数的特征,有助于进一步的数据提取。当然还有其他的提取参数的方法,诸如频域滤波,FFT 变换,小波变换等等,本系统采用该方法以后,数据采集的准确度有了很大的提高,可以对于弱信号参数的情况也能实时找到最大功率点,从而实现了对太阳能的最优利用和蓄电池的科学管理。

4 结束语

美国英特梅尔(ATMEL)公司推出的ATmega16 系列单片机具有低功耗、实时处理能力强、运行速度快等优点,性价比高,正日益得到广泛的应用,尤其在自动信号采集系统、便携式设备、长时间工作装置中,体现了它的特点,本文所述的智能太阳能充电控制系统充分利用了ATmega16 系列单片机所提供的各种集成模块,合理分配片上资源,大大简化了外围电路的设计,从而提升了整个控制系统的性能。

关键字:Atmega16  智能太阳能充电器  跟踪功能 引用地址:基于Atmega16单片机的智能太阳能充电器设计

上一篇:基于ATmega48单片机的简易灭火机器人设计
下一篇:基于单片机的医学信号检测仪的设计应用

推荐阅读最新更新时间:2024-03-16 13:19

ATmega16开发板教程(7)——LCD1602
8、LCD1602 LCD1602作为最基础的字符型液晶显示屏,能过显示16x02=32个字符。那么时序的操作——读写是最主要的内容,今天就带大家一起读读时序。 在看时序图前,对LCD的引脚功能要了解,才能更好的读懂时序。 这里除了电源(1、2)、背光(15、16)、对比度(3)外,主要是控制信号和数据信号。 RS:数据/命令选择引脚,即=1写入数据,=0写入命令; RW:读写选择引脚,即=1读数据,=0写数据; EN:使能引脚; D0-D8:8位数据位。 所以:当RS=0,RW=0时,写入指令;当RS=1,RW=0时,写入数据;当RS=0,RW=1时,读忙信号;当RS=1,RW=1时,读数据。 这
[单片机]
<font color='red'>ATmega16</font>开发板教程(7)——LCD1602
atmega16片上AD ICC程序
/***************************************************** File name : AD_on chip.c Chip type : ATmega16L Program type : Application Clock frequency : 4.000000 MHz Memory model : Small External SRAM size : 0 Da ta Stack size : 256 Function : 内部AD转换,数码管显示 *********************************************
[单片机]
AVR单片机ATMEGA16编译软件ICCAVR的使用技巧与应用示例
一、先来一段朴实的独白吧 写这篇文的时间是2018年3月21日。大学2013毕业,专业是机械,但喜欢电子。篇首声明:哪一行都有鄙视链,就连打个游戏都不例外。如果大神路过这里,请您show your mercy然后walk away就当nothing happened. 当然,大牛都是很低调的,因为他们身心都沉进编程的世界里不能自拨。好了本文就ICCAVR的使用说明作一个入门式的引导,方便新、老网友作一种可供使用的参考。 上大学并不是为了纯读书,而是自我发现、反馈、然后决定的心理成熟过程,好吧这就是我的层次。上学时为了搞懂一个东西,在网上查找所有的有用的信息资料,当然必须免费的,唉不谈。。现在如果需要一些资源直接买买买,省时省力
[单片机]
AVR单片机<font color='red'>ATMEGA16</font>编译软件ICCAVR的使用技巧与应用示例
基于ATmega16的数字光功率计设计
1 系统原理   光功率就是光在单位时间内所做的功。该数字光功率计由微处理器、光电探测器、I/V变换器、量程自动转换、A/D转换、液晶显示等部分组成,其系统原理如图1所示。   微处理器采用AVR系列ATmega16单片机,它是基于增强型AVR RISC结构的低功耗8位CMOS微控制器。在外设方面,它具有一个可编程的UART和独立于片内振荡器的看门狗定时器等资源,支持SPI接口,允许ATmega16与其他外设或AVR单片机进行高速的同步数据传输。   系统采用硅光电池作为光电探测器,它被设计用于把入射到它表面的光能转化为电能,因此,可用作光电探测器和光电池,被广泛用于实验室和野外便携式仪器等的探测器。在该系统中,硅光电池
[测试测量]
AVR ATmega16访问16 位寄存器
TCNT1、OCR1A/B与ICR1是AVR CPU 通过8位数据总线可以访问的16位寄存器。读写16位寄存器需要两次操作。 每个16位计时器都有一个8位临时寄存器用来存放其高8位数据。每个16 位定时器所属的16 位寄存器共用相同的临时寄存器。访问低字节会触发16位读或写操作。当CPU 写入数据到16 位寄存器的低字节时,写入的8 位数据与存放在临时寄存器中的高8 位数据组成一个16 位数据,同步写入到16 位寄存器中。当CPU 读取16 位寄存器的低字节时,高字节内容在读低字节操作的同时被放置于临时辅助寄存器中。 并非所有的16 位访问都涉及临时寄存器。 对OCR1A/B 寄存器的读操作就不涉及临时寄存器。 写16 位寄存
[单片机]
ATmega16 上电复位
上电复位(POR) 脉冲由片内检测电路产生。检测电平请参见 Table 15。 无论何时VCC 低于检测电平POR 即发生。POR 电路可以用来触发启动复位,或者用来检测电源故障。 POR电路保证器件在上电时复位。VCC 达到上电门限电压后触发延迟计数器。在计数器溢出之前器件一直保持为复位状态。当VCC 下降时,只要低于检测门限,RESET 信号立即生效。
[单片机]
<font color='red'>ATmega16</font> 上电复位
具有实时跟踪功能的忆阻视觉传感器架构
1.前言 过去的几十年,业界围绕CMOS架构视觉传感器理论进行了大量广泛的研究和探讨,旨在于在成像早期阶段处理图像,从场景中提取最重要的特征,如果换作其它方式达到同样目的,例如,使用普通计算技术,则需要为此花费昂贵的成本 , , , , , 。在这个方面,运动侦测是最重要的图像特征之一,是多个复杂视觉任务的基础。本文重点介绍时间对比概念,这个概念在很多应用中特别重要,包括交通监控、人体运动拍照和视频监视 , , , 。这些应用要求图像侦测精确并可靠,形状侦测准确,变化反应及时。此外,运动检测还必须灵活地适应不同的工作场景和光强条件。背景提取是目前最被认可的运动侦测方法。背景提取就是生成一个背景估算值,然后逐帧更新。分析运动类型,并将
[嵌入式]
B001-Atmega16-PORTA的定义-(ques=1)
在 iom16.h中定义了 PORTA如下: #define PORTA _SFR_IO8(0x1B) 接着在sfr_defs.h中定义了_SFR_IO8()如下: #if _SFR_ASM_COMPAT ...... #define _SFR_IO8(io_addr) ((io_addr) + __SFR_OFFSET) #define _SFR_IO16(io_addr) ((io_addr) + __SFR_OFFSET) ...... #else /* !_SFR_ASM_COMPAT */ ...... #define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_O
[单片机]
B001-Atmega16-PORTA的定义-(ques=1)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved