欢迎来到天天文库
浏览记录
ID:11665767
大小:1.13 MB
页数:10页
时间:2018-07-13
《基于51单片机的智能充电器系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于51单片机的智能充电器系统一、功能简介:通过定时器定时从A/D上读取数据,根据不同的电压选择不同的控制充电方案,使用PWM控制输出脉宽来控制电流。二、器件以及接口本文中使用了8051和ADC0809芯片。下面对所使用的器件以及器件和单片机的接口作以下说明。1、器件和原理本文中主要使用的器件是可以进行A/D转换的8位ADC0809芯片。ADC0809是一种逐次逼近式8路模拟输入、8位数字量输出的A/D转换器。其引脚如图1所示。图1ADC0809外观图由引脚图可知,ADC0809共有28引脚,采用双列直插式封装。其主要引脚功能如下。(1)、IN0~IN7
2、是8路模拟信号输入端。(2)、2^(-1)~2^(-8)是8位数字量输出端。(3)、ADDA、ADDB、ADDC与ALE控制8路模拟通道的切换,ADDA、ADDB、ADDC分别与3根地址线或数据线相连,三者编码对应8个通道地址口。ADDC、ADDB、ADDA=000~111分别对应IN0~IN7通道地址。(4)、OUTPUTENABLE、START、CLK为控制信号端,OUTPUTENABLE为输出允许端、START为启动信号输入端、CLK为时钟信号输入端。(5)、VREF(-)和VREF(+)为参考电压输入端。2、器件的接口在讨论8051与ADC080
3、9的接口设计之前,先来讨论单片机如何控制ADC的问题。第10页共10页用单片机控制ADC时,多数采用查询和中断控制两种方法。查询法是在单片机把启动命令送到ADC之后,执行别的程序,同时对ADC的状态进行查询,以检查ADC变换是否已经结束,如查询到变换已结束,则读入转换完毕的数据。中断控制法是在启动信号达到ADC之后,单片机执行别的程序。当ADC变换结束并向单片机发出中断请求信号时,单片机响应此中断请求,进入中断服务程序。读入转换数据,并进行必要的数据处理,然后返回到原程序。这种方法单片机无需进行转换时间的管理。CPU效率高,所以特别适合于变换时间较长的A
4、DC。如果对转换速度要求高,采用上述两种ADC控制方式往往不能满足要求,可采用DMA(直接存储器存取)的方法,这时可在ADC与单片机之间插入一个DMA接口(例如,btel公司的8237DM控制器)。传输一开始,AD转换的数据就可以从输出寄存器经过DMA中的数据寄存器直接传输到主存储器,因而不必受程序的限制。在本文中,采用中断方式。从ADC0809与8051的中断方式接口电路如硬件电路图2和图3所示,ADC0809和8051的INT0管脚连接,当转换结束的时候,EOC向8051发送一个脉冲信号,提出中断申请,单片机响应中断请求,由外部中断l的中断服务程序读
5、A/D结果,并启动8051的下一个转换,外部中断1采用跳沿触发方式。图2智能充电器原理电路图第10页共10页图3智能充电器原理电路图三、硬件电路图本文中,单片机电路主要包括8051和ADC0809两块芯片,DM74163N用做分频器,74F138SJ用来产生和选择地址。具体的连接原理电路图如图2和图3所示。其中,8051的晶振频率为11.0592MHz。电路有2个输入输出端口,AnalogVoltageInput是作为电池组电压的输入,PWMcontraltor是做为电池组控制脉宽的输出。四、软件程序设计本文为智能充电器,传统充电器采用电流负反馈来进行控
6、制,本程序使用8051单片机作为控制器进行控制。对于电池中不同的电量,如果采取同样的方案,不会获得满意的充电效果,一般根据电池两端不同的电压值采取不同的方案进行充电。本文中,将采集电池组的电压值,通过ADC转到单片机,在单片机端接收到信号后,根据不同的电压情况采取不同的方案。当电压非常小的时候,采取方案1来充电,方案l采取小电流充电;当电压比较小但是不是极小的时候,采取方案2来充电,方案2采取较大电流充电;当电压达到正常电压的时候,采取方案3来充电,方案3采取恒流充电;对于电压超出正常电压,采取方案4,即不充电的方案。本文中,采用定时查询电压的机制,定时
7、器每500ms给出标志位,查询A/D上的电压值,根据不同的电压值选择不同的方案。第10页共10页对于电流的控制,采用PWM控制脉宽的方法来控制电流,应用不同的占空比,占空比越高,电流越大。下面将首先对程序的主要模块进行介绍,然后给出整个程序。(1)、初始化在初始化程序中,需要进行与定时器相关的寄存器的初始化以及各个标志位和计数位的清零,如果采用中断方式,还包括与中断相关的寄存器。本文中,电路中采用的晶振频率fosc=11.0592MHz,需要每500ms查询l次,将定时器设置成16位计数器,根据计算,可以得出定时器T0的初值为7936(1F00H),并且
8、中断中使用计数器,计满8就达到了500ms。将方案选择位置1,以便主程序查询。初
此文档下载收益归作者所有