《电动车充电控制器报告》由会员分享,可在线阅读,更多相关《电动车充电控制器报告(12页珍藏版)》请在金锄头文库上搜索。
1、全院选修课程丸学生色子制作卖验作业题目电动车电池节能保护器学生姓名冯明涛专业班级自动化09班学 号540902030108院(系)电气信息工程学院一、产品设计创意及主要功能简介随着城市交通压力的增大,传统的自动车己经远远不能满足现代人们绿色、 环保节能的要求,于是电动车就应运而生。但是蓄电池却一直制约着电动车寿命, 为了更好的延长电动车蓄电池的使用寿命,同时增强安全系数,特别对蓄电池充 屯环节进行完善。电动车电池充满电后,一般都会进入浮充状态,但是在浮充的吋间内会对电 动车的电池造成损害,使电动车得电池寿命大大降低,电动车电池节能保护器会 自动检测电池是否充满,当电池充满后,电动车电池节能保护
2、器会自动将电源与 充电器断开,防止过充。同时电动车电池节能保护器还可以设置充电时间,当电 池出现损坏电路不能检测其是否充满时,也会在充满电Z后自动将电源与充电器 断开,防止过充与火灾的发生。二、电路原理说明电路主要有主控制单片机CPU、电源、釆集分压、复位电路、下载屯路、输 入设备按键、串转并移位寄存器、显示吋钟电路、继电器开关电路、充满电报警 设备蜂鸣器等模块组成。电路的主控制部分采用的是单片机STC12C2052控制。串转并移位寄存器用 的是SN74HC595N。发光二极管用于指示电池是否充满电,电源部分主要用的是 整流二极管和LM7805芯片。采集分压部分用的是电阻的串联分压原理,得到合
3、 适的电压。继电器开关部分,当电池充满电之后继电器开关会自动与电源断开, 以防止过充,达到保护电池的目的。输入设备按键用于设定充电时间。下载电路 用的是MAX232芯片,用于下载源程序。显示设备时钟数码管用于显示充电时间, 用三极管9012驱动数码管。三、主要元件介绍该电路主要用的元器件主要有:STC12C2052, SN74HC595N, MAX232,继电器, 蜂鸣器,数码管,三极管9012,三极管9013, LM7805,晶振,电阻,电容等。四、原理图吊转并移位柿器13L興帅5NC7 liM -L-鬲LHM 8踐电路3I1K rl21L1采集分压绝巒开关部分dd至卄aCPUj/r9 r
4、f z o- OJU 二: X ZAddddd&oO_|vcLSI* vcc ?眦 g,QBQCe,Qt氐 WCHQH sSLR佃6CH KV Vt (N) Cl- TIOIT RllN C2- RICH V- TIN T2OUTT2I5 R2N R2CITXUXK五、学习心得首先,十分感谢王老师在各种压力之下为我们开的这个选修课,在大学里这 样的机会很少。我也想再这样的课程中学到一些真正动手的能力,但是由于这次 课时太少,述是第一次接受整个项目的制作流程,所以可能没有达到老师所预期 的目的。但是我还是学到了很多,一个项目,首先应该分析,也就是立项,分析项目 的可行性;根据自己的实际情况确定项
5、目是否可行,在确保自己活在自己能力范 围内能够完成的情况下,接受这个项目。接下来就是跟企业或公司谈经费问题,这也是一个学问。接下来就是硬件和软件问题,这些就是要我现在的积累,基本 功还有一些基本的常识,现在必须好好学习自己专业,不仅仅是书本上的东西, 应该结合实践來提高B己。这次选修课让我重新的认识了我大学的任务,其实任务还有很重,要学的东 西还有很多,自己必须努力。六、单片机编程代码#include #include #define uchar unsigned char/Oil 0,00001270个时钟周期#define uint unsigned int #define AD_SPEE
6、D 0x60 转换一次,/*数码管IO 口设置sbit ST_CP二PIT;sbit SH_CP =P1A2;sbit DS =P1A3;sbit LED4 =P1A4;/ 数码管sbit LED3 =P1A5;sbit LED2 =P1A6;sbit LED 1=P1A7;sbit ledO =P3A0; /LED sbit ledl =P3A1;sbit s3=P3A2;/按键sbit s2=P3A3;sbit si=P3人4;sbit BEE =P3A5;/蜂鸣器 sbitkl=P3A7;/ 继电器/f/uchar temp=O;/595 数据标识uint ad_data;/AD 数据i
7、ntcount 1 =0;/数码管位标识intcount2 =0;intcount3 =0;intcount4 =0;uint count_m=0;uchar count_f=0;uchar count_s=0;uint count = 0;/ms数码管显示标识 uchar countO = 0;/0.5suchar state=O; 数码管显示标识uchar shi=O;时分秒初始设置uchar fen=O;uchar miao=0;uchar m=0;uchar q=0; 按键标识uchar k=0;int k2;按键标识uchar ad_flag=O;bit time_flag=O;bi
8、t auto_flag=0;uchar countb=0;uint voltage=0; 电压初始uint voltage 1=0;uchar i=0;uchar flag 1=0;uchar V;uchar value_buf50 ;uchar count5,i5J5,temp5; 采集的电压uchar VCO4.88;/电源参考电压uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ 字符uchar codeDSY_CODE 1= 0x40,0x79,0x24,0x30,Ox 19,Ox 12,0x0
9、2,0x78,0x00,Ox 10;/带小数 点的季符void ADC(); /*AD 转化函数*/ void InitADC();/AD 设置函数 void keyserve(void);/按键设定 void keyscan();键盘扫描 void Delay(uint x);延时 void In_595();/595 函数void Out_595();void beek (void);/蜂鸣器继电器void init();/初始化void main()init();while(l)keyscan(); beek();if(auto_flag=l) for (count5=0;count55
10、0;count5+)value_buf count5 = V;Delay(lO);for(j5=0;j550-l;j5+)for (i5=0;i5value_buffi5+l)temp5 = value_bufi5; value_bufi5 = value_bufi5+l;value_bufi5+l = temp5;voltage=( value_bufO * 1.96);if(voltage=395) voltage 1 =4801;if(voltage=409) voltage 1 =4902;if(voltage=416)voltage 1=5003;if(voltage=425) vo
11、ltage 1=5104;if(voltage=433) voltage 1 =5205;if(voltage=442) voltage 1=5306;if(voltage=460) voltage 1 =5504;if(voltage=468) voltage 1=5601;if(voltage=478) voltagel=5702;count 1 =(voltage 1/1000);count2=(voltage 1 % 1000)/100);count3=(voltage 1 % 1000% 100)/10);count4=( voltage! % 1000% 100% 10);Dela
12、y(300); if(voltage=480) BEE=1 ;Delay(200);BEE=0;TR1 = 1;shi二0;/充满电后的延时时间fen=l;miao=15;ADC_CONTR&=0x6e;auto_flag=0;flag 1=1;if(count_f2)自动控制定吋吋间设定,吋间是大于2分钟时继电器断开TR0=0;TR1 二 0;BEE=1;ADC.CONTR&=0x6e;kl=0;Delay(2000);BEE=0;auto_flag=0;count_m=0; 把秒清0,不让蜂鸣器一直响void init() TMOD = Oxll;TH0=0xfa;TL0=0x00;TH
13、1=(65535-50000)/256;TLl=(65535-50000)%256;ET0=l;/开定时器中断ET1=1;TR0=l;TR 1=0;EA=1;P3M0=0X00;/设置 BEE 端口P3M 1=0X20;AUXR|=0xl0;EADC_SPI=1;LED1=1;LED2=1;LED3=1;LED4=1;BEE=0;kl=l;void InitADC()Pl=Oxff;ADC_CONTR=0xe &Delay(80);PlM0|=0x01;/这两个寄存器用來设置Pl 口四种状态,每一位对应一个Pl引 脚,按状态组合操作PlMl&=0xfe;设置Pl为开漏状态void ADC()
14、interrupt 5if(ad_flag=l)ad_flag=O;ad_data=ADC_DATA;V= ad_data;ADC_CONTR&二0xe7; 清除标志位同时关闭AD采集 ADC_CONTR=Oxe8;/开中断 ad 一void TimeO() interrupt 1显示数码管THO 二 Oxfa;TLO = 0x00;count+;if(count=20)/循环20次检测一次电压count=0;ad_flag= 1;state+;switch(state)case 1:temp = DS Y_CODEcount 1 ;In_595();Out_595();LED 1=0;LED2=1;LED3=1;LED4二 I; break;case 2:temp = DSY_CODE1 count2;In_595();Out_595()