目 录
ABSTRACT II
1 绪论 1
1.1课题的背景及意义 1
1.2国内外研究现状 1
1.3研究主要内容 2
2 太阳能电池板简介 3
2.1太阳能电池板材料 3
2.2太阳能电池板的分类 3
2.3太阳能电池板工作原理 3
2.4太阳能电池的基本特性 4
3 总体方案设计 8
3.1主控制器模块选择 8
3.2太阳能板的选择 9
3.3显示模块的选择 9
3.4电源选取 10
3.5芯片资料简介 10
3.5.1模数转换器ADC0832 10
3.5.2 LCD1602液晶显示模块 13
3.6 STC89C52单片机的简介 16
4 硬件实现及单元电路设计 21
4.1主控制模块 21
4.2显示模块电路 22
4.3充电电压AD采集电路 22
4.4太阳能充电模块电路设计 23
4.5太阳能过充电保护的设计 23
4.5电源部分的设计 24
5 系统软件设计 25
5.1程序结构分析 25
5.2系统程序流程图 25
5.3锂电池电压采集程序流程图 26
6 系统的安装与调试 28
6.1安装步骤 28
6.2电路的调试 28
结 论 29
参考文献 30
致 谢 31
附录1整体电路原理图 32
附录2元器件清单 33
附录3部分源程序 34
本文指导思想就是利用光电反应将太阳能转换成电能再利用稳压保护电路、处理成适合的电压为充电电池充电。本设计的主要设计内容是太阳能板的选择、充电控制电路的设计、电压电流的控制。
太阳能无线充电系统以单片机为核心部件的控制系统,充分地利用太阳能充电板给电池充电,并通过模数转换器ADC0832采集充电电池的充电电压在液晶LCD1602上显示出来。太阳能无线充电系统在充电时,充电红色指示灯点亮,充满时红色指示灯熄灭,绿色指示灯点亮。太阳能无线充电系统利用软件编程,最终基本上实现各项要求。
3 总体方案设计
太阳能充电系统的充电电路是太阳能充电板在阳光的照耀下产生电荷,用250mAh的锂电池存储太阳能电池板的电荷,经过充电模块TP4056芯片给锂电池充电同时也可以通过TP4056模块上的usb接口用手机充电器快速充电。充电时,充电红色指示灯点亮,说明锂电池正在充电中,当充电模块上的指示灯变成蓝灯亮亮时,充电完成。利用ADC0832转换器采集充电电池的电压并在液晶LCD1602上显示充电电压值,充电所使用的充电时间。系统总体框图如图3-1所示:
3-1总体结构框图
该系统主要由红外测温模块、按键设置模块、报警模块和液晶显示模块态显电路组成,下面介绍实现此系统功能的方案。
3.1主控制器模块选择
方案1:
采用可编程逻辑器件CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,本文转载自http://www.biyezuopin.vip/onews.asp?id=14048适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。
方案2:
采用STC89C52单片机作为整个系统的核心,用其控制水温测量控制系统,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现水温的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。STC89C52单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。
3.2太阳能板的选择
本设计是软硬件的综合体,每一个模块的选择都会对整个系统产生影响,选择的硬件模块好坏决定了本设计所能达到的高度,所以对比较重要的模块必须要通过对比选择,扬长避短。太阳能的选择有两个方案可供选择。
方案一:
采用ADC0809转换芯片。ADC0809是并行ADC,速度要比串行AD转换器的速度要快得多,不过外围电路比较复杂,价格也贵,因此在设计中放弃了本方案
方案二:
采用由于它体积小,兼容性,电路简单,性价比高。因此选择方案二。
3.3显示模块的选择
方案一:采用静态显示方法,静态显示模块的硬件制作较复杂及功耗大,要用到多个移位寄存器,但不占用端口,只需两根串口线输出。
方案二:采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机14个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小。
方案三:采用LCD的方法,具有硬件制作简单可直接与单片机接口,显示内容多,功耗小,成本低等优点,LCM1602可显示32个字符,采用LCD的缺点是亮度不够。
比较以上三种方案:方案一硬件复杂体积大、功耗大;方案二硬件简单、功耗小;方案三硬件简单,显示内容多,功耗小,成本低等。本系统设计要求达到功耗小、体积小、成本低,显示信息多等要求,权衡三种方案,选择方案三。
3.4电源选取
由于本系统采用USB线供电,我们考虑了如下几种方案为系统供电。
方案1:
采用usb5V为系统供电。USB供电电压稳定,操作方便,节能环保,经济实惠等特点。
方案2:
采用3节1.5 V干电池共4.5V做电源,经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。综上所述采用方案1。
#include <reg52.h>
//#include <string.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_PINDATA P0 //数据端口定义 P2
sbit RS = P1^4; //RS P0^7
sbit RW = P1^5; //RW P0^6
sbit E = P1^6; //E P0^5
sbit CS = P1^2;
sbit Clk = P1^1;
sbit DATI = P1^0;
sbit DATO = P1^0;
sbit State_led = P3^7; //状态指示灯驱动端口==P3^4
sbit BUZZER = P1^2; //蜂鸣器驱动端口==P1^2
sbit Reduc = P1^7; //按键键输入端口==P1^7
sbit Add = P3^0; //按键加输入端口==P3^1
/************************************************
** 函数名称 : Delay(uint T)
** 函数功能 : 延时函数
** 输 入 : T--延时倍数 大小--0~65535
** 输 出 : 无
** 说 明 :
************************************************/
void Delay(uint T)
{
uchar i;
for(T;T>0;T--)
for(i=200;i>0;i--);
}
/************************************************
** 函数名称 : WriteCOMDATA(uchar LCD_DATA,uchar N)
** 函数功能 : LCD1602写指令、数据函数
** 输 入 : LCD_DATA:指令或者数据
N:指令方式还是数据方式
N=0时,LCD_DATA为指令,N=1时,LCD_DATA为数据
** 输 出 : 无
** 说 明 :
************************************************/
void WriteCOMDATA(uchar LCD_DATA,uchar N)
{
Delay(10);
E=1;
RW=0;
RS=N;
LCD_PINDATA=LCD_DATA;
E=0;
}
/************************************************
** 函数名称 : void LCD_init(void)
** 函数功能 : LCD1602初始化操作
** 输 入 : 无
** 输 出 : 无
** 说 明 :
************************************************/
void LCD_Init(void)
{
WriteCOMDATA(0x01,0);
Delay(500);
WriteCOMDATA(0x38,0);
Delay(10);
WriteCOMDATA(0x06,0);
Delay(10);
WriteCOMDATA(0x0c,0);
Delay(10);
}