计算机控制论文.docx
《计算机控制论文.docx》由会员分享,可在线阅读,更多相关《计算机控制论文.docx(25页珍藏版)》请在冰点文库上搜索。
计算机控制论文
双电层电容器信号灯的设计
摘要
九十年代初,随着LED产品及技术大范围推广普及,它以其亮度高、寿命长、低耗电等优点率先被交通信号灯所采用。
它是由若干LED元件按照信号指示要求组合,由交流电变压整流后供给交通信号灯使用,目前国内大多数城市使用。
利用太阳能供电成为人类梦寐以求的愿望,同时在倡导节能、科技、环保和可持续再生能源利用的社会形势下,发展太阳能交通信号灯是迫在眉睫的问题。
而它的出现,必定会引起一场交通信号灯的革命化进程。
双电层电容器(ElectricalDouble-LayerCapacitor)又叫超级电容,它是一种电化学元件,但在其储能的过程并不发生化学反应,这种储能过程是可逆的,也正因为此超级电容器可以反复充放电数十万次。
特点:
是绿色能源,寿命长,有较大的容量,充电速度快,且充放电效率高,免维护,相对成本低。
本文采用STC12C5201AD单片机详细介绍了一种基于超级电容的信号灯设计,该设计主要由太阳能板、超级电容、蓄电池和信号灯四部分构成。
设计中以太阳能板作为发电系统,结合使用超级电容和蓄电池来给信号灯供电。
采用了以集成芯片MAX1771为核心的DC-DC升压电路,便于控制,效率也由此得到了提高。
SupercapacitanceLightsDesign
ABSTRACT
Theearlynineties,withawiderangeofLEDproductsandtechnologiestopromoteuniversalaccess,withitshighbrightness,longlife,lowpowerconsumptionadvantagesofthefirsttobeusedbytrafficlights.ItconsistsofanumberofLEDcomponentsinaccordancewiththeinstructionsrequiredcombinationofsignalfromtherectifiedACsupplytransformertrafficlightstouse,currentlythemosturbanuses.Usingsolarpowerasthehumandesiretodream,whilepromotingenergyconservation,technology,environmentalprotectionandsustainableuseofrenewableenergysocialsituation,thedevelopmentofsolartrafficlightsaretheissuesatstake.Anditsappearance,willleadtoatrafficlightintherevolutionaryprocess.
Supercapacitorcalleddouble-layercapacitors(ElectricalDouble-LayerCapacitor),whichisanelectrochemicaldevice,butintheprocessofenergystorageisnotachemicalreaction,thisenergystorageprocessisreversible,whichiswhytheSupercapacitorscanrepeatedlychargeanddischargehundredsofthousandsoftimes.Features:
greenenergy,longlife,greatercapacity,fastcharging,andcharge-dischargeefficiency,maintenance-free,relativelylowcost.
ThispaperintroducessinglechipusingSTC12C5201ADsupercapacitorbasedonsignaldesign,thedesignmainlybysolarpanels,supercapacitors,batteriesandlightsoffourparts.Designofsolarpanelsaspowersystems,combinedwithsupercapacitorsandbatteriestopowertothelights.UsedtointegratethecorechipMAX1771DC-DCstep-upcircuit,easytocontrol,efficiencyisthusimproved.
前 言
随着社会的不断进步,人类社会生活水平的不断提高,日益贫乏,基础能源的投资成本日益攀高,能源短缺问题也表现的越来越明显,而如何节能、环保则成为世界的主题。
太阳能是各种可再生能源中最重要的基本能源,也是人类可利用的最丰富的能源。
只要阳光充足就可以就地安装,具有无需架线,不受地理条件限制等优点,面对二十一世纪,供电系统的能源多元化和更为强调环境的洁净与安全的发展趋势为太阳能的发展提供了良好的机遇。
由于最近几年逐渐加大对太阳能的利用,科学家们也越来越多的发现这中间存在的一些问题与不足,并加以解决和完善。
由于太阳能电池输入电压不稳定,同时太阳能信号灯当周围光线弱时才发光,所以必须配备蓄电池装置,但是由于现在的蓄电池寿命短,有污染而且太阳能电池和LED灯的寿命都在10年以上,这样由于蓄电池的寿命与太阳能电池和LED灯的差距给整个系统的维护带来了麻烦,同时蓄电池还需要过充过放保护,并且其化学结构使其不能大电流充电,所以我们选择超级电容器作为储能装置。
超级电容具有这些优点:
在很小的体积下达到法拉级的电容量;无须特别的充电电路和控制放电电路;和电池相比过充、过放都不对其寿命构成负面影响;从环保的角度考虑,它是一种绿色能源;超级电容器可焊接,因而不存在像电池接触不牢固等问题。
这些都决定了超级电容是发展未来能源不可或缺的主力军。
超级电容器不同于电池,在某些应用领域,它可能优于电池。
有时将两者结合起来,将电容器的功率特性和电池的高能量存储结合起来,不失为一种更好的途径。
而利用超级电容和蓄电池结合起来后所产生的优点,我们便可以研究一些小功率发光灯,可以将其安装在小区、广场、步行街等场所,方便人们的日常生活。
本课题主要结合新型元件超级电容及蓄电池作为电源给信号灯供电,通过检测电路判断供电系统的充放电状态,根据环境光线的强弱自动控制灯的开关,使信号灯起到一定的指引作用。
其中课题还要求采用继电器开关实现太阳能对超级电容和蓄电池的充电问题,通过单片机对系统的检测和控制实现超级电容和蓄电池之间的供电切换。
根据设计需要,我们用4节2.7V超级电容串联,通过DC/DC升压电路将电压升到12V给LED灯供电,而蓄电池则是作为备用电源,两者结合使用使整个电路变得简单可靠,另外,控制电路中采用了集成电路MAX1771和STC12C5201AD,便于控制,效率也由此得到了提高。
本设计要解决的问题便是:
太阳能如何给超级电容及蓄电池充电、超级电容和蓄电池向信号灯供电的切换及软硬件设计的实现等问题。
该系统具有寿命长、使用率高、绿色无污染、能源充分利用等优点,具有很好的应用开发前景。
第1章系统硬件设计
1.1系统框图及硬件设计
1.1.1系统框图
图1-1系统框图
1.1.2系统框图描述
设计用太阳能板作为接收能量和发电设备,结合使用超级电容储能,为了确保电能的充分供应,又连接蓄电池作为备用电池给信号灯供电。
该方案总概括:
太阳能板接收太阳能,接着先给超级电容充电,当超级电容充满后,再经DC/DC升压电路升压后给信号灯供电,此时,由单片机控制继电器切换开关到蓄电池,给蓄电池充电。
此过程中若检测系统检测超级电容不需充电,则持续给蓄电池充电直至充满,然后由单片机控制继电器断开。
当超级电容的电压降至充满回置电压9V,则由单片机控制给超级电容继续充电。
当没有太阳能时,而且超级电容放电至4V(即没电),则此时继电器切换到蓄电池供电,一直到有太阳能时继续给超级电容充电,然后重复循环以上过程。
其中用到的三个继电器j1、j2、j3的作用:
(1)控制太阳能板给超级电容、蓄电池充电;
(2)完成超级电容和蓄电池两者之间充、放电的切换;
(3)完成蓄电池和超级电容升压后给信号灯供电的切换。
1.1.3系统硬件
四个串联超级电容、一节蓄电池、三个时间继电器、升压电路、单片机控制电路、稳压电路、信号灯。
超级电容与蓄电池构成供电电源,三个时间继电器分别控制是否给超级电容蓄电池充电、给超级电容充电还是给蓄电池充电、是超级电容放电还是蓄电池放电。
继电器的控制作用要由控制电路来完成,控制电路是有STC12C5201AD单片机进行控制的。
由于负载需要的电压要高于超级电容和蓄电池放电的电压,所以电路中还要有升压电路,我们采用由MAX1771组成的DC/DC升压电路。
1.2升压系统
1.2.1升压系统作用
在本设计中,由于超级电容充满电时的电压是10V,放完电时的电压是4V,而信号灯的额定工作电压为12V,所以就需要一个升压电路将超级电容的电压升到12V,来保证信号灯的正常工作,故我们采用MAX1771芯片构成升压电路来实现此升压功能。
1.2.2升压电路的工作原理
此升压电路采用了MAX1771升压芯片、场效应管Q7、肖特基二极管D1,其型号为IN5819、电感L1、电容C6、C7等元器件。
升压电路原理图如图1-2所示:
图1-2DC/DC升压电路原理图
工作原理,在DC-DC升压电路系统中,DC-DC升压电路主要由MAX1771构成,用场效应管MMFT3055EL的栅极接芯片的1脚,由引脚2给芯片供电,同时也由引脚2输出电压。
输入电压(Vup-in)可以进行从2V到输出电压的变化。
1脚输出电压的跳变,可以提供大的栅极驱动,从而减小外接MOS管的开启电阻。
MAX1771外接MOS管平时是关闭的,此时电感储能。
将引脚4接地,可使芯片工作在闭环状态。
关闭期间,MAX1771会检测外部输入电压(Vup-in)一旦降低到了一定限度,MAX1771就会开启外部MOS管,电感释放能量,再次提供驱动电压。
开关频率由负载电流和输入电压而定。
而通过两个反馈电阻R6和R7分压得到输出电压(Vup-out)。
此外,续流二极管选用肖特基二极管IN5819,该器件正向导通电压小,响应时间短。
而输出电压(Vup-out)端和蓄电池相连接,这样也就是说蓄电池是本电路的一个后备电源。
5V电压通过两个反馈电阻分压得到,其中引脚3与反馈电阻R6、R7组成反馈电路,R6、R7通过分压来调节输出电压(Vup-out)的输出值。
1.2.3升压电路的调试
电路有3个引出端:
输入端、输出端、接地端,调试的时候将输入端和接地端分别接到双路直流稳压电源的正负极上,将万用表拨到“V”档上,将输出端和接地端分别接到万用表的红黑表笔上,调节稳压电源上的电压微调旋钮,观察万用表的读数,当输入电压小于2.5V时,输出电压没有变化,即没有升压;当输入电压大于等于2.5V时,开始升压,随后,再调节旋钮,当输入电压0.9V1.3控制系统
1.3.1控制系统作用
在本设计中,由于需要控制电路的来检测超级电容和蓄电池的电压是充满或是没电的情况;而且需要控制电路来对继电器的工作状态进行控制;而设置信号灯亮或者灭的时间间隔也需要控制电路来完成,故我们采用STC12C5201AD芯片构成控制电路来实现这些动作。
1.3.2系统充放电情况及工作原理
下面对系统的充放电情况进行详细阐述:
1.充放电情况
充电过程为:
K1、K2均接常闭,以STC12C5201AD芯片为核心的控制电路检测超级电容的电压情况,如果Vc<10.0V继续充电如果Vc=10.0V则K2线圈得电,常闭断开,常开接通,则单片机控制继电器切换到给蓄电池充电状态;如果检测到蓄电池电压Vb<14V继续充电,如果Vb=14V则K1线圈得电,常闭断开,常闭接通Vnull触点,即太阳能不再充电。
放电过程为:
系统默认超级电容给信号灯供电,当Vc<9V时继电器切换到蓄电池供电,此时超级电容继续充电。
当Vb<11V时,说明蓄电池没有电了,此时信号灯不再点亮,系统再次恢复成超级电容供电。
其中Vj1、Vj2、Vj3的大小控制Q1、Q2、Q3是否导通。
2.控制系统工作原理
本设计控制电路是以STC12C5201AD芯片为核心的。
电路中太阳能板、超级电容、蓄电池的电压分别为Vsun、Vc、Vb。
系统用到了放大器Q1、Q2、Q3,二极管D1、D2、D3,电阻若干,继电器K1、K2、K3。
在默认情况下K1、K2、K3处于常闭状态,即系统充电时太阳能默认的先给超级电容充电,放电时超级电容先放电。
1.4电源模块
电源模块的原理
在设计中,稳压电路的输入电压必须大于5V,而输出电压为5V,则其作用便是将蓄电池的高电压经稳压电路降压至5V然后给电路板供电。
如图1-3为稳压电路的原理图:
图1-3稳压电路原理
1.5信号灯的连接
此信号灯由红、蓝两种颜色组成,其中红灯的正常运行电压为2.4V,蓝灯的电压为4V。
故两种灯采用以下两种不同的接法。
红灯的连接方法:
90个二极管,共5级,即5个二极管串联;分为16路,每一路有5个二极管,16路二极管并联连接。
连接图如图1-4所示:
图1-4红灯的连接方法
蓝灯的连接方法:
共3级,即3个二极管串联;分为30路,每一路有3个二极管,30路二极管并联连接。
第2章系统软件设计
2.1程序流程图及分析
2.1.1主程序流程图及分析
图2-1主程序流程图
首先是系统初始化,然后接着要判断是否采集数据,如果采集则采集光敏电阻的电压,接着采集超级电容电压是否是10V,如果是说明超级电容已经充满,接着采集蓄电池电压看是否为14V,如果是则说明蓄电池也已经充满。
那就通过控制电路控制继电器均不再给两者充电。
此时控制电路控制超级电容处于放电供负载工作状态。
当超级电容放电到9V时,超级电容停止放电,继电器切换至蓄电池放电状态,此时超级电容又开始充电,当超级电容充满则继续放电而继电器则切换至蓄电池继续充电。
上面介绍的均为白天的情况,晚上没有太阳能及时给超级电容充电,则超级电容放电至4V(即没电)。
当放电完毕时由蓄电池放电直到第二天有太阳能,默认先给超级电容充电,充到10V则开始放电,放电速度小于充电速度,当超级电容充满以后控制电路再切换至给蓄电池充电,然后重复白天的过程。
2.1.2子程序流程图及分析
图2-2子程序流程图
首先判断系统工作状态,然后判断j1是否有动作,如果有动作,即j1=0,则系统不充电,程序返回接着判断j1是否有动作;如果j1没有动作,即j1=1,则系统处于充电状态。
然后判断j2是否有动作,如果有动作,即j2=0,则电池充电,超级电容放电;如果没有动作,即j2=1,则超级电容充电。
然后判断j3是否动作,如果有动作,即j3=0,则系统断电,不给信号灯提供电源;如果没有动作,即j3=1,则超级电容放电控制信号灯工作。
2.2系统程序
2.2.1系统程序
#include
#include
#include"STC_NEW_8051.H"
#defineAD_SPEED0x60
#defineAD_SPEED0x40
#defineAD_SPEED0x20
#defineAD_SPEED0x00
#definevcapmin4
#definevcapmdl16
#definevcapmdl29
#definevcapmax10
#definevbatmin11
#definevbatmax14
#defineRcapup18
#defineRcapdown10
#defineRbatup27
#defineRbatdown10
#definegmfz200
typedefunsignedcharINT8U;
typedefunsignedintINT16U;
typedefcharINT8;
sbitgm=P1^0;
sbitcap=P1^3;
sbitbat=P1^4;
sbitj1=P1^7;
sbitj2=P1^6;
sbitj3=P1^5;
sbitred=P3^5;
sbitblue=P3^7;
INT8s;
INT16Uvcap;
INT16Uvbat;
INT16Uvgm;
INT8Ulight;
INT8Uenergy;
INT16Ui;
voidtimer0()interrupt1
{TR0=0;
/*
TH0=0xfe;TL0=0x0B;
*/
TH0=0xFC;
TL0=0x66;TR0=1;i=i+1;}
voidsysinit()
{blue=0;red=0;
s=0;
energy=0;
light=0;
TR0=0;TMOD=0x01;
/*
TH0=0xfe;
TL0=0x0B;
*/
TH0=0xFC;
TL0=0x66;
ES=0;
SCON=0x50;
TMOD|=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
ES=1;
EA=1;
EA=1;
ET0=1;
TR0=1;
i=1;
WDT_CONTR=0x3F;
voiddelay(INT16Un)
{i=1;while(i<=n)
{}i=1;}
INT16Utmin=10;
INT8Uzkb=2;
INT8Ua=10;
INT8Ub=10;
INT8Uc=5;
INT8Ud=5;
voidpwmtest(INT16Uflag)
{if(flag==0)
{red=1;blue=0;}
if(flag==1)
{red=0;blue=1;}
delay(tmin*zkb/10);
red=0;blue=0;
delay(tmin*(10-zkb)/10);}
voidpwm(INT8Uflag)
{INT8Um,n;
for(m=0;m<(c+d);m++)
{if(m{for(n=0;n<(a+b);n++)
{if(n{if(flag==0)
{red=1;blue=0;}
if(flag==1)
{red=0;blue=1;}
delay(tmin*zkb/10);red=0;blue=0;
delay(tmin*(10-zkb)/10);}
else
{red=0;blue=0;delay(tmin);}}}
else
{red=0;blue=0;delay(tmin*(a+b))}}}
INT8Uget_AD_result(INT8Uchannel)
{INT8UAD_finished=0;
ADC_RES=0;
ADC_RESL=0;
channel&=0x07;
ADC_CONTR=AD_SPEED;
_nop_();
ADC_CONTR|=channel;
_nop_();
ADC_CONTR|=0x80;
delay
(1);
ADC_CONTR|=0x08;
AD_finished=0;while(AD_finished==0)
{AD_finished=(ADC_CONTR&0x10);
ADC_CONTR&=0x67;
return(ADC_RES);
//继电器控制函数
voidsend_byte(INT8U);
voidsetjdq()//vbat:
电池电压AD转换值,vcap:
电容电压AD转换值
{INT16Utcmin,tcmdl1,tcmdl2,tcmax;
INT16Utbmin,tbmax;
INT8Ut;energy=1;
tcmin=((vcapmin*Rcapdown*51)/(Rcapdown+Rcapup));
tcmdl1=((vcapmdl1*Rcapdown*51)/(Rcapdown+Rcapup));
tcmdl2=((vcapmdl2*Rcapdown*51)/(Rcapdown+Rcapup));
tcmax=((vcapmax*Rcapdown*51)/(Rcapdown+Rcapup));
tbmin=((vbatmin*Rbatdown*51)/(Rbatdown+Rbatup));
tbmax=((vbatmax*Rbatdown*51)/(Rbatdown+Rbatup));
if(vcap<=tcmin&&vbat>tbmin)
{s=-1;j1=1;j2=1;j3=0;}
elseif(vcap>=tcmax&&vbat>=tbmax)
{s=2;j1=0;j2=1;j3=1;}
elseif(vcap>=tcmax&&vbat{s=1;j1=1;j2=0;j3=1;}
elseif(vcap>tcmin&&vcaptbmin)
{if(s<0)
{j1=1;j2=1;j3=0;}
else
{j1=1;j2=1;j3=1;}}
elseif(vcap>tcmdl2&&vcap=tbmax)
{if(s>0)
{j1=0;j2=