目 录
内容摘要 本文介绍了一种基于单片机的太阳能控制器,系统使用低功耗、高性能的AT89S51单片机作为控
关键词 太阳能;控制器;AT89S51单片机
1 研究意义与功能介绍
1.1 研究意义
1.2 功能介绍
本系统以ATMEL系列中的AT89S51单片机为控制中心,软硬件的结合,利用分压电路对蓄电池,太阳能
图1系统结构框图
2电路设计
2.1 主原理图
如图2所示,电路包含太阳能电池,DC-DC变换电路,蓄电池,数据采集电路,A/D转换电路,单
图2系统设计电路图
2.2蓄电池充电方式
作为太阳能储能用的蓄电池由于存在过放、过充、使用寿命短等问题,要选择合适的充放电方式。所有的
2.3充放电电路
电路由防反充二极管D1、滤波电容C1、续流二极管D2、MOSFET管Q1、滤波电容C2、MOSFET
图3 充放电电路
2.4电压采集电路
如图4所示,电压采集电路使用两个串联的电阻,大小比例为10:1,然后并联在需要检测的电压两端
图4电压采集电路
2.5光耦开关电路
当输入信号C1为低电平时,光耦内部的发光二极管的电流近似为零,输出端两管脚间的电阻很大,相当
图5 光耦开关电路
2.6单片机及其外围电路
本设计使用AT89S51单片机,单片机及其外围电路包括上电复位电路,晶振,LED指示灯如图6
图6 单片机及其外围电路
2.7A/D转换电路
AT89S51单片机没有内置的A/D转换模块,因此采集的电压需要经A/D转换才可接入单片机。此设计采
图7 A/D转换电路
2.8单片机电源电路
单片机对电源质量要求严格,只有波形稳定清晰的电源才能使单片机上电复位,否则无法上电复位,晶振不能起振
图8单片机电源电路
2.9PCB图
开始画PCB图是使用自动布线加手工修改,但是设成以单层板的形式自动布线,生成的PCB图走线弯弯区区太
图9系统PCB图
2.10作品实物
图10作品实物图(正面)
图11作品实物图(背面)
3 主要器件介绍
3.1 AT89S51单片机
AT89S51单片机是ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4k Byt
AT89S51具有以下特点:40个引脚,4k Bytes Flash片内程序存储器,128 byte
3.2 TLC549
TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、
TLC548/549的极限参数如下:
●电源电压:6.5V;
●输入电压范围:0.3V~VCC+0.3V;
●输出电压范围:0.3V~VCC+0.3V;
●峰值输入电流(任一输入端):±10mA;
●总峰值输入电流(所有输入端):±30mA;
●工作温度:-55℃~125℃
3.3 MOSEFT管
MOSEFT管是利用电场效应来控制电流的,由金属、氧化物和半导体制成,由于场效应管的栅极被绝
VGS=0V,ID=-250uA
VGS=-10V,ID=-11A
VDS=VGS,ID=-250uA
VDS=-50V,ID=-11A
VDS=-80V VGS=0V,IDSS=250uA
VGS=20V,IGSS=100nA
3.4 光耦
光耦合器是以光为媒介传输电信号。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。光耦
3.5太阳能电池
如右图所示,太阳能电池是利用半导体光伏效应制成的,能够直接将太阳辐射转换成电能的器件。具
3.6 蓄电池
国内目前被广泛使用的太阳能蓄电池主要是铅酸蓄电池,它的主要特点:寿命长,免维护安全可靠,具有
4 软件设计
4.1 程序主要流程图
4.2主要C程序
#include //51芯片管脚定义头文件
#include //内部包含 _nop_();
#define uchar unsigned char
#define uint unsigned int
sbit CLK = P0^0; /* AD时钟信号 */
sbit CS = P0^2; /* AD片选信号 */
sbit DOUT = P0^1; /* 数据输出 */
sbit FuZai = P1^1 ;
sbit PWM = P1^0 ;
sbit LED1 =P2^0;
sbit LED2=P2^1;
uchar t0,battery_v;
void delay(uint n) //延时函数
{
while(n--)
{
_nop_();
}
}
/*************************************/
void init()//初始化函数
{
TMOD=0x01;
TH0=(65536-50)/256;
TL0=(65536-50)%256;
EA=1;
ET0=1;
PWM=0;
LED1=1;
LED2=1;
}
/***********************************/
uchar adc_549(void) //AD转换
{
uint data_out=0;
uchar i;
CS = 1;
_nop_();
CS = 0;
for (i=0; i<8; i++) /* 读取8位数据 */
{
CLK = 0;
data_out = (data_out<<1)|DOUT;
CLK = 1;
_nop_();
}
CLK = 0;
CS = 1;
delay(3); /* 延时21us以上 */
return(data_out);
}
/**********************************/
void main(void)
{
init();
while(1)
{
battery_v=adc_549();
FuZai=1;//打开负载
if(battery_v>186)//蓄电池电压大于10V
{
LED1=1;
LED2=0;
if(224>battery_v>204)
{
TR0=1; //开启固定PWM充电
if(t0==5)
{
PWM=1;
}
if(t0==12)
{
t0=0;
PWM=0;
}
}
else
{
TR0=0;
LED1=1;
LED2=1;
}
}
else
{
LED1=0;
LED2=1;
FuZai=0;//关闭负载
}
}
}
void timer0() interrupt 1 //定时器0,用来产生PWM
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
}
5 测试分析
由于太阳能电池价格比较贵,所以设计中使用12V直流电源模拟太阳能电池。测试所用的蓄电池规格:12V,
以下是模拟充电得到的参数:当模拟蓄电池的电压低于10V,MOSFET管Q2关闭停止对负载供电,同时红
[6] 百度文库http://wenku.baidu.com/view/1d000f4e767f5a
Key words Controller;MCU;Solar