一种基于单片机的太阳能路灯控制器设计毕业论文(编辑修改稿)内容摘要:

( 1)布线原则 1)一般应将公共地布置在最边缘,便于印制板安装在机壳上, 也便于与机壳连接。 2)单面板印制板上的导线不能交叉,因此迫使导线绕道或是平行布设平行线越长,不仅会使引线电感增大,而且导线之间,电路之间的寄生耦合也会增大。 3)对外连接宜采用接插形式的印制板,为便于安装,往往将输入,输出,反馈电线和地线均匀的平行排列为插头。 4)印制板上每级电路的地线,在许多情况下应自成封闭回路,这样会减小级间的低电流耦合。 5)印制导线需要屏蔽,但要求不高时,可采用印制屏蔽线,屏蔽网等屏蔽措施。 ( 2) .布线要求 1)印制导线可以布置成单面,双面或是多面,但应首选单面,其次是双面。 仍 然不能满足的时候再考虑多层。 2)作为电路的输入和输出两端用的印制导线应尽量避免相邻平行,以免发生电流反馈,在这些导线之间最好加接地线。 3)在布线密度比较低时,可加粗导线,信号线的检举可适当加大。 4)印制导线的布局应尽可能短,特别是电子管的栅极,半导体管的基极和高频回路等更应这样。 5)印制导线拐弯一般为圆形,而直角和尖角在高频电路和布线密度高的情况下会影响电气的性能。 6)对高、低电平悬殊很大的信号线应尽可能短,并且加大间距。 7)印制导线在不影响电气的基础上,应尽量采用大面积铜箔。 图 ( 1)经过 3 个多小时候的不屑努力,和本人的顽强精神,一块完美的 PCB 图展现在我的电脑显示器上。 PCB 图如下; 本章小结 本章主要是介绍课题的方案选择,确定课题方案后。 仔细分析方案。 整理出方案的方框图,并重点分析介绍系统中的每个重点模块。 第 三 章 锂蓄电池电压电流的检测 锂蓄电池电压的检测 STC12C5408AD单片机带有 8路 10位 A/ D转换器,转换器的输入电压范围为:0~ 5V,转换后相应的数字量范围: 0~ 255。 将蓄电池电压 Vd的最高值定于 5V,利用电阻分压的方式将其转换为 0~ 5V。 电路如 图 41 图 41 Vi=R2/(R1+R2) Vd,取 R2=10 KΩ, R1=10 KΩ, 代入数值则由 Vi=1/2Vd 故蓄电池电压: Vd=Vi*2; A/ D转换数字波动范围为177。 1LSB。 故电压测量波动范围177。 0. 1V。 本章小结 主要介绍的课题检测的指标的各种方法,在检测蓄电池电压的检测用到STC12C5408AD 单片机的 10位 A/ D转换器。 在电流的检测时用到小电阻补偿的方法,使检测结果精确。 第 四 章 系统软件设计 设计思路 以单片机为核心的控制软件具有实时性、灵活性、通用性及运行可靠性的特点,现在对太阳能充电控制器软件的设计思路介绍如下: 首先主程序要完成系统初始化,为了在初始化的过程中,防止中断的意外到来,应在主程序的开始处先关 闭中断,完成初始化后,再打开中断。 由于本系统是 5V自动识别,因此要在程序中必须判别。 具体为,当 蓄电池两端电压大于 5V时,满足 5的系统,否则为 5V系统,判别系统后转到相应的程序处继续执行。 在有太阳 处理程序中,要判断蓄电池的两端电压,在决定是否采取充电控制,充电控制方式采用 PWM控制。 并有指示灯时刻现实蓄电池两端电压处于何种状态,让用户一目了然。 4.具体的程序见附件 系统 主程序流程 主程序流程图如图 51所示 图 51 系统 主程序流 程图 初始化子程序 在初始化程序中,主要对 STC12C5408AD的系统资源,包括定时器、中断、串行通讯等初始化工作,还有对液晶的的驱动等等 A/D 采集 子程序 A/D 转换结果的读入采用查询方式。 通过查询端口的信号来判断转换是否结束; 10位的转换只需一次读取,就可得到结果。 对于温度信号一般来说是缓变的,通过单片机的软件编程,采用查表法实现,不同的温度对应不同的过充点,其他点位按照电压差值依次与过充点对应。 具体程序见附件 开始 初始化 电池充电 充电子程序 电源子程序 Yes No 结束 显示子程序 在显示程序中 .完成发光二极管 LED 的显示功 能。 通过检测蓄电池两端的电压,确定 LED 的电位高低,使 LED 直观地显示红色、橙色或绿色。 本章小结 通过前面几章对系统硬件的分析,本章仔细分析了系统的另一大模块,软件部分。 要求硬件与软件相对应,烧入程序后控制器满足课题的各项设计指标。 标志着课题 设计 的圆满成功。 结 论 由于能源的日益紧张,引起人们对太阳能应用的热潮,由太阳能极板、充放 电控制器、蓄电池等构成的产品都有了相对成熟的发展,国内外很多专家也在这方面做了深入的研究。 本论文就太阳能充 放 电控制器对蓄电池的充 放 电方式、控制器的功能要求和实际应用方面做了分析,完成了硬件电路设计和软件编制,实现了对蓄电池的科学管理,并将其应用到太阳能 家庭用电系统中。 论文的主要工作有: 对 锂蓄 蓄电池的充、放电过程、影响铅酸蓄电池使用寿命的各种因素作了分析,确定了太阳能充电控制器的总体设计方案。 完成了控制器的硬件设计、电路板的绘制,电路的焊接。 实现控制器通过对单片机 STC12C5408AD的 PWM输出来控制开关 MOS管的通断,从而控制充电放电。 在硬件设计的基础上,对太阳能充电控制器进行了软件编程,实现对蓄电池的保护以及过 载检测等。 将充 放 电控制器应用于太阳能 手机充电器 系统,设计整个系统的总体方案。 本论文在软硬件设计上仍有很多需要完善之处: 在 PCB板的元件布置和布线上要更加合理,以便减少干扰的引入。 本论文所采用的软件编程思想,还需要进一步在实际的运行中验证其稳定性及可靠性。 延长蓄电池寿命目前还没有一个最好的方式,如何进一步保护蓄电池,采用更优的控制方法需要更进一步的研究。 经过一周的努力 .太阳能充电器几乎完成了,虽然还存在一些瑕疵,但是我相信以后不断地努力会有进步的。 在这次的做板过程中与遇到了前所未有 的困难,最后在老师和同学的帮助下还是解决了。 在这里我非常感谢帮助我的老师和同学。 同时我也大胆地将我的产品上传到这里给大家一起分享。 成品图如下: 致 谢 本课题在选题及研究过程中得到 叶俊明老师 的悉心指导。 老师们多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拔、热忱鼓励。 老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅受我以文,而且教我做人,对老师的感激之情是无法用语言来表达的。 在此,我还要感谢 我们组员王娜同学和黄宇同学 ,正是由于你们的帮助和支持,我才能克服一个 一个的困难和疑惑,直至本文的顺利完成。 通过这次 实训 设计,是我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。 使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。 不积跬步何以至千里,本设计能够顺利完成,在此向内 桂林电子科技 大学 电子信息工程系给我这次实训的机会。 在论文即将完成之际,我的心情无法平静,从开始进入可提到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚 挚的谢意。 最后 我再次感谢指导老师的关心和帮助以及在本次 实训 中帮助我的所有以前帮助过我的老师和同学,是你们的帮助和支持,让我完成了本次 实训 ,祝你们身体健康万事如意。 参考文献 [1] 叶俊明 .单片机实验指导书 [2]邓长生 太阳能原来应用 [3]王连英 ,张永生,模拟电子技术 . [4]杨金焕,等.一种独立光伏系统设计的新方法.太阳能学报, l995. [5]冯垛生.太阳能发电原理与应用 [M].人民邮电出版社, 20xx [6]张秀国 .单片机程序设计基础 [M].北京航空航天大学出版社, 20xx. [7]周立功, 夏宇文.单片机与 CPLD综合应用技术 [M].北京航空航天大学出版社, 20xx. [8] 郭天祥 单片机原来与应用 附录 1 显示程序 include include include include include include include include void int_t1() interrupt 3 { TH1=(6553650000)/256。 //定时器初始化 TL1=(6553650000)%256。 t1_num++。 t1_numgz++。 if(t1_num==jcjg)//检测电池板周期 { t1_num=0。 flag_t1gz=1。 } if(t1_numgz==jcgzjg)//检测过载恢复周期 { t1_numgz=0。 flag_t1gz=1。 } } void main() { init()。 while(1) { if(flag_pv==1) {//当有太阳能电池板时进入这里 v_temp=Ad_Av(1)。 if(v_tempqy)// 进入欠压 { qyd=0。 //欠压指示 delay(1000)。 diqynum=3。 P1M0=0X87。 //00000111 P1M1=0XC9。 //00000111 fz_off。 //将负载关闭 fzd=1。 flag_fz=0。 while(!(Ad_Av(1)=qyhf)) { //一直等待欠压恢复 checkpv()。 if(flag_pv==1) { pwm_1()。 //打开充电 cdd=0。 //打开充电指示 } fcd_z()。 //按键检测 fcd_j()。 func()。 diqynum。 if(diqynum0)//报警指示 { didi(3)。 delay(10000)。 } else diqynum=1。 } didi(1)。 //欠压恢复时开启负载 fz_on。 delay(1)。 fzd=0。 P1M0=0X8F。 //00000111 P1M1=0XC1。 //00000111 flag_fz=1。 delay(1000)。 qyd=1。 pwm_a=20。 } if(v_temp=qyamp。 amp。 v_temp=gygd) { //正常工作电压区间 qyd=1。 if(v_tempfcdy) { cdd=0。 //开充电指示灯 //这里省去 PWM 控制程序 } if(v_tempfcdyamp。 amp。 v_tempgddy) { cdd=0。 //开充电指示灯 //这里省去 PWM 控制程序 } } if(v_tempgddy) {//判断是否过压 pwm_0()。 //过压后关闭充电 cdd=1。 } } else { v_temp=Ad_Av(1)。 if(v_tempqy) { qyd=0。 //欠压指示 delay(1000)。 diqynum=3。 P1M0=0X87。 P1M1=0XC9。 fz_off。 //欠压后关闭负载 fzd=1。 flag_fz=0。 while(!(Ad_Av(1)=qyhf)) {//等待欠压恢复 checkpv()。 //检测电池板 if(flag_pv==1) { pwm_1()。 //打开充电 cdd=0。 //打开充电指示 } fcd_z()。 //检测按键。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。