




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . 随着人们对环境意识的加强,节能环保的电动车行业,各种电动车也随之出现。经过市场调研,我们发现所有电动车的电池充电器都没有自动断电功能,电池已经充满,充电器仍然处于浮充状态,这样不但电池会被充坏也造成了很大的电能浪费,所以对安全性、节能型、智能型的电池充电器的需求也越来越大。基于此我们设计了电动车电池防过充节电控制器。本设计是在普通电动车充电器的基础上增加了单片机控制部分,可直接将家用充电器接入本产品的输入端,从产品的输出端接到电动车电池的原充电口, 以实现智能充电的目的。硬件电路由两种工作模式:定时充电和自动控制充电。定时充电时,时钟数码管显示定时时间;自动充电时,时钟数码管显
2、示电池两端电压和浮充时间。电池充满后自动切断电源,本产品具有电池电压检测工能,既可以应用于36V电池控制,又可以应用于48V电池控制,用户只需将自己的电池接至相应的地方,即可直接充电,如果电池接反会自动保护,不让电池损坏,具有良好的通用性和实用性。二、原理说明:原理图如图所示:电源部分:接220端子为输入端,接插座端子为输出端,P3为与单片机AD检测部分的连接排针。我们用LM7805为控制部分电路提供5V稳定电源。单片机通过控制继电器的吸合与断开来控制充电电源的开启与闭合,R1,R2,R3,R4为检测电池电压的分压电阻,因为输入单片机IO口的电压不能超过5V,所以要先将所采集的电压经过电阻分压
3、后才能输入单片机。图中R19为上拉电阻,R6为限流电阻,继电器通过晶体管9013(0.5A)驱动。当单片机引脚输出低电平时,三极管截止,没有电流流过继电器的线圈,继电器断开,开始充电。当单片机引脚输出高电平时,三极管导通,继电器吸合,停止充电。防止电池因过充而导致电池损坏。当电池充满电时,单片机进入掉电模式,即使是在没人在的时候,也浪费不了多少电。图中的D3是为电池反接时保护电池设计的。D4是为了保护继电器设计的。控制显示部分:如图所示:智能充电器控制显示部分主要是以STC12C2052AD单片机为控制核心设计的。此单片机部带AD转换,十分方便,不需外接比较器;且能很精确的检测到电池两端的电压
4、大小。外围电路包括输入设备按键,显示设备时钟数码管,发光二极管(红和绿)和充满电报警设备蜂鸣器。用户可通过按键设置所需的充电模式与充电时间。两个发光二极管用来指示不同的充电模式与不同的充电阶段。图中U3即74HC595,为8位串转并移位寄存器,为节省单片机IO口设计的。四个按键的功能分别为:S1为模式(自动控制模式和定时模式)选择键, S2为“+”键用来调节定时时间,S3为“确认键”。时钟数码管在定时模式时显示定时时间的时和分。而在自动控制模式时,在电池两端电压达到浮充状态之前,数码管显示的是电池两端的电压值的大小,此时中间的一点亮;在电池两端电压达到浮充状态时,数码管显示定时两个小时,显示状
5、态和定时模式时一样。理论设计计算:AD采集部分分压电阻的设计计算对于48V的电池来说,R3为570K,R4为10K,要求当电池电压达到浮充状态即57.2V时,分压后输入单片机的电压不超过5V,为了计算方便取 Vmax=57V:此时分压后输入单片机的电压为 Vin=Vmax*R3/(R2+R3)=1VR3的功率为Pr3 =(Vmax/580K)*( Vmax/580K)*20K<<0.125W 所以取1/4W的电阻设单片机中AD转换寄存器中的值为ad_data 则 ad_data=(Vin/5)*256 若取10位的转换精度,则只需将256换为1024即可。由此将模拟量转换成数字量,
6、通过数码管显示出来。三、学习心得体会:在学习这门课之前,我几乎对51单片机一无所知。实际上讲,在选这门课之前,我也不知道这门课具体是讲什么的,只知道是电子制作,自己本着想锻炼一下的想法就选了这门课,当老师开始讲课时才知道我们学习的是单片机,是我们大三下学期才开的课程。真的很庆幸能提前接触,这是一大收获。在这个课上我了解到了一个单片机开发板的成品的的全过程,从最初的原理图的设计到PCB板的生成,到事物的焊接,最后到程序的调试与输入。虽然我们在课堂上学过原理图的设计和PCB板的生成,但那大多是照着书上做的,所以比较简单。然而,在这个实验选修课上则完全是自己动手做的,在自己画原理图时,开始真是觉得有
7、点小困难,因为好多元件元件库里都没有,都需要自己画,也就是说要自己封装,比较麻烦。对于我这初学者来说,是一种考验。画原理图基本上用了我两大节课的时间,相对来说,时间比较长,但画完后有一种小小的成就感,这也是我对接下来的学习制作更感兴趣。如果原理图画的很成功,那么PCB就没那么难了,自动生成很快,但是布局就比较麻烦了,如果PCB能够很好的完成,那么这个制作就基本上完成了三分之一的进程。这是成功的第一步。等同学们都完成后,老师给发了一些器件,开始了板子的实物焊接。由于一些原因,这个焊接我在课上没有完成,下课后我又到同学的实验室里继续焊接,大概两个多小时的时间完全焊完了,看着自己亲手做的板子,心里有
8、一种说不出的高兴,真的有一种成就感,也许这是因为我第一次焊接这样的板子吧!所以决定以后多往这方面注重些。接下来的课程就是程序的设计与调试。在写程序之前老师讲解了关于51单片机的一些知识与应用和一些单片机程序的程序代码,老师还推荐了一些书籍,让同学们下去自学单片机知识。在写程序期间,觉得很难,比较折磨人,因为不会,毫无头绪,也许是因为还没有深入学习单片机的原因吧!对于程序的编写与调试,老师要求的不是很严,因为老师知道我们还没有学习单片机,他的这个课程也是为了提前带我们进入单片机的学习,为以后的学习打下基础。虽然我们还不能熟练掌握51单片机的变成与调试,但是我们对于51单片机的产品开发与制作全过程
9、有了更近一步的了解,不再迷茫和去猜测。课堂时间毕竟很少,深入的学习就要靠我们自己。如果想在这方面有过突破有所发展,那么单片机的深入学习是必然的。通过这个课程的学习,使我对51单片机产品的开发有了一定的了解,同时我也对这门课程产生了憧憬,我觉得这个制作全过程很有意思。所以我决定,如果大三还有这样的课程我还会去选,如果没有了,我会利用课余时间去做一些这样的课题,又不懂得地方去问老师或一些比较懂得同学。总之,从这门课中我在一定程度上学到了不少知识。另外,王俊杰老师的认真辅导也让我们倍感亲切。还有就是我自己独立的完成了一个电路板的制作,第一次尝到了做东西的成就感。这给了我很大的信心。我会以此为契机,好
10、好学习专业知识,提升自己的专业水准。四、单片机编程代码:#include <stc12c2052ad.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define AD_SPEED 0x60 /0110,0000 1 1 270个时钟周期转换一次, /*数码管IO口设置*/sbit ST_CP =P11;sbit SH_CP =P12;sbit DS =P13;sbit LED4 =P14;/数码管sbit LED3 =P15;sbit LED2 =P16;sbit L
11、ED1 =P17;sbit led0 =P30; /LED sbit led1 =P31;sbit s3 =P32;/按键sbit s2 =P33;sbit s1 =P34;sbit BEE =P35;/蜂鸣器sbit k1 =P37;/继电器/*/uchar temp=0; /595数据标识uint ad_data; /AD数据int count1 = 0;/数码管位标识int count2 = 0;int count3 = 0;int count4 = 0;uint count_m=0;uchar count_f=0;uchar count_s=0;uint count = 0;/ms 数
12、码管显示标识uchar count0 = 0;/0.5suchar state=0; /数码管显示标识uchar shi=0; /时分秒初始设置uchar fen=0;uchar miao=0;uchar m=0;uchar q=0; /按键标识uchar k=0;int k2; /按键标识uchar ad_flag=0; bit time_flag=0;bit auto_flag=0;uchar countb=0;uint voltage=0; /电压初始uint voltage1=0;uchar i=0;uchar flag1=0;uchar V; uchar value_buf50;uc
13、har count5,i5,j5,temp5; /采集的电压uchar VCC=4.88;/电源参考电压uchar code DSY_CODE= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/字符uchar code DSY_CODE1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/带小数点的字符/*void ADC(); /*AD转化函数*/void InitADC();/AD设置函数void keyserve(void);/按键设定void keyscan();/键盘扫描void
14、 Delay(uint x);/延时void In_595(); /595函数void Out_595();void beek (void);/蜂鸣器继电器void init();/初始化/* void main() init(); while(1) keyscan(); beek();if(auto_flag=1) for ( count5=0;count5<50;count5+) value_bufcount5 = V; Delay(10); for (j5=0;j5<50-1;j5+) for (i5=0;i5<50-j5;i5+) if ( value_bufi5&g
15、t;value_bufi5+1 ) temp5 = value_bufi5; value_bufi5 = value_bufi5+1; value_bufi5+1 = temp5; voltage=(value_buf0*1.96); if(voltage>=395) voltage1=4801; if(voltage>=409) voltage1=4902; if(voltage>=416) voltage1=5003; if(voltage>=425) voltage1=5104; if(voltage>=433) voltage1=5205; if(volt
16、age>=442) voltage1=5306; if(voltage>=460) voltage1=5504; if(voltage>=468) voltage1=5601; if(voltage>=478) voltage1=5702; count1=(voltage1/1000); count2=(voltage1%1000)/100); count3=(voltage1%1000%100)/10); count4=(voltage1%1000%100%10); Delay(300);if(voltage>=480) BEE=1;Delay(200);BEE
17、=0; TR1=1;shi=0;/充满电后的延时时间fen=1;miao=15;ADC_CONTR&=0x6e;auto_flag=0;flag1=1;if(count_f>2)/自动控制定时时间设定,时间是大于2分钟时继电器断开TR0=0;TR1=0;BEE=1;ADC_CONTR&=0x6e;k1=0;Delay(2000); BEE=0; auto_flag=0;count_m=0;/把秒清0,不让蜂鸣器一直响 /*AD初始化*void init()TMOD = 0x11;TH0=0xfa;TL0=0x00;TH1=(65535-50000)/256;TL1=(65
18、535-50000)%256;ET0=1;/开定时器中断ET1=1;TR0=1;TR1=0;EA=1; P3M0=0X00;/设置BEE端口 P3M1=0X20;AUXR|=0x10;EADC_SPI=1;LED1=1;LED2=1;LED3=1;LED4=1;BEE=0; k1=1;void InitADC() P1=0xff;ADC_CONTR=0xe8;Delay(80); P1M0|=0x01;/这两个寄存器用来设置 P1口四种状态,每一位对应一个P1引脚 ,按状态组合操作 P1M1&=0xfe;/设置P1.1为开漏状态 void ADC() interrupt 5 if(ad
19、_flag=1)ad_flag=0;ad_data=ADC_DATA;V= ad_data; ADC_CONTR&=0xe7;/清除标志位同时关闭AD采集ADC_CONTR=0xe8;/开中断advoid Time0() interrupt 1/显示数码管 TH0 = 0xfa;TL0 = 0x00;count+;if(count=20)/循环20次检测一次电压count=0;ad_flag=1; state+; switch(state) case 1: temp = DSY_CODEcount1; In_595(); Out_595(); LED1=0; LED2=1; LED3=
20、1; LED4=1;break;case 2: temp = DSY_CODE1count2; In_595(); Out_595(); LED1=1; LED2=0; LED3=1; LED4=1;break;case 3: temp = DSY_CODEcount3; In_595(); Out_595(); LED1=1; LED2=1; LED3=0; LED4=1;break; case 4: state=0; temp = DSY_CODEcount4; In_595(); Out_595(); LED1=1; LED2=1; LED3=1; LED4=0;break; /*voi
21、d Time1() interrupt 3 TH1 = (65535-50000)/256;TL1 = (65535-50000)%256;if(auto_flag=0) count4=fen%10; count3=fen/10; count2=shi%10; count1=shi/10;if(+count0=10)count0=0; miao-;if(miao=0) fen-; if(fen=0xff) fen=59;shi-;if(shi=0) shi=0; miao=59; if(auto_flag=1) if(+count0=10)count0=0; count_m+;if(count
22、_m=59) count_m=0;count_f+;if(count_f=60) count_f=0;count_s+;if(count_s=24) /*void Delay(uint x) uchar i;while(x-) for(i=120;i>0;i-);/*void In_595() uchar i;for(i=0;i<8;i+) temp <<= 1;DS = CY;SH_CP = 1;_nop_();_nop_();SH_CP = 0;void Out_595() ST_CP = 0;_nop_();ST_CP = 1;_nop_();ST_CP = 0;/*数据处理void keyscan()if(s1=0)/Delay(5); Delay(200);if(s1=0)while(!s1);/Delay(5); Delay(200);while(!s1);k=1;keyserve();if(s2=0) /Delay(5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030水电设备市场投资前景分析及供需格局研究研究报告
- 2025-2030水务工程行业并购重组机会及投融资战略研究咨询报告
- 2025-2030气象服务行业并购重组机会及投融资战略研究咨询报告
- 2025-2030枸杞汁行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030服装市场投资前景分析及供需格局研究预测报告
- 商务代理跨文化沟通技巧考核试卷
- 投影设备在交通运输领域的应用考核试卷
- 搪瓷制品的品牌形象与市场推广考核试卷
- 消费体验优化考核试卷
- 2025年-黑龙江省安全员B证考试题库
- 高考语文一轮复习:散文中重要词语和句子的含义(公开课获奖教案优质公开课获奖教学设计) (高三)
- DB64∕1539-2020 复合保温板结构一体化系统应用技术规程
- DIN1783厚度在0.35mm以上冷轧的铝及铝塑性合金带材和板材、尺寸
- 桥门式起重机司机培训教材课件
- Model5000功率计(介绍及操作)
- 现场总线技术03 PROFIBUS总线
- 义务教育(英语)新课程标准(2022年修订版)
- 混合痔病历模板
- “冯茹尔”杯2022年江苏省“化学与可持续发展”化学活动周高中化学竞赛试题
- 员工食堂5月份菜谱
- 中国、俄罗斯、欧美电子管型号代换
评论
0/150
提交评论