基于AVR单片机的电池剩余电量估计系统设计_第1页
基于AVR单片机的电池剩余电量估计系统设计_第2页
基于AVR单片机的电池剩余电量估计系统设计_第3页
基于AVR单片机的电池剩余电量估计系统设计_第4页
基于AVR单片机的电池剩余电量估计系统设计_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳航空航天大学电子信息工程学院毕业设计(论文)第1章 绪论1.1 本课题研究的目的和意义锂离子电池自1970年被发明到现在已经45年了,它现在已经成为了我们日常生活中的一部分,是现在人们生活中使用最为广泛的一种电池。我国通讯、电子行业的发展十分迅速,使人们对锂电池的电量检测需求不断加大。然而由于我国电池电量检测不是十分的精确等原因,导致锂电池的电量检测不能满足国内的需求,而且虽然外面其他国家的检测器械性能十分完善,但是价格相对来说比较昂贵,不能满足我们日常生活中的实际需求。这些现象在航模飞机电池中,显得尤为严重。目前航模在飞行过程中,电池剩余电量的检测需要十分的精确。因为在十几分钟的飞行过程中,如果电池电量检测误差过大,会导致电池还有余电却要停止飞行或者在飞行的过程中电池电量耗光飞机掉落,造成不可挽回的损失。针对这一问题,本课题设计了一种基于AVR单片机的一种电池剩余电量估计系统,由于航模电池的特殊性,原电池电量的单位mAh已经无法满足实际的要求了,为了更快速的应对航模飞机的电池电量的变化,选用W/S作为航模电池电量的单位。这对实现电池电量的精确检测,提高电池的利用率具有十分重要的意义。1.2 本课题研究内容及方案本课题研究的目的是要对电池的剩余电量进行估计,并在LCD显示屏上显示剩余电量和时间。如何检测电池的剩余电量,成为本课题研究的重要内容。这些年,在国内和国外已经开展了许多关于锂电池剩余电量估计系统的研究。研究的方法主要分为两大类:第一类是通过分析影响锂电池剩余电量的隔板和正负极板等部件的材料特性,从电池内部的电化学反应入手,更改锂电池内部的结构,来提高锂电池的性能;第二类则通过测量锂电池的工作电压和工作电流,从电池外部基本工作参数入手,从而计算出锂电池的剩余电量。由于这些基本参数与锂电池的剩余电量之间是有一定规律性的,而且电池的外部基本参数比较容易测量得到,使用这种方法来测量电池剩余电量是有很多的优点的,所以在许多工程中这种方法被研究者广泛采用。针对电池的工作电压和电流参数来计算电池剩余电量,比较常见的方法有三种。一种是通过电池内阻来计算电池的剩余电量。电池内部阻值的大小和电池的剩余电量有关,也和电池当前所处的状态有关,。当电池在释放电量的过程中,随着电池内部活性物质减少,同时电池的剩余电量也逐渐消耗,最后这就使得电池的内部电阻逐渐开始增加。根据国内与国外的诸多研究资料显示,电池剩余电量和电池的内部电阻由很大的联系,而且电池的内部电阻与电池的剩余电量成反比关系,如图1所示:图1 内阻与剩余容量的反比关系通过电池的内部电阻来计算电池剩余电量的一般过程是:首先需要将锂电池进行充电,直至电量充满,接着将锂电池外接负载,使其放电,此时记录电池在放电过程中剩余电量与电池内部电阻的大小变化,即可得到一个完整的电池容量和电池内部电阻之间的曲线关系,将此曲线关系的数据下载到AVR单片机的EEPROM当中,之后AVR单片机就能根据此时测量的电池内部阻值,通过读取EEPROM,直接就能够得出相应的电池剩余电量的值。第二种方法是通过监视电池开路电压来获得剩余电池的电量。这种方法是因为电池端电压和电池的剩余电量之间有一个确定的关系,所以通过测量电池的端电压就可以通过这一关系来确定电池的剩余电量。但是这种方法有一定的局限性:其一是对于不同的电池生产厂商生产的电池,它的开路电压和电池剩余电量之间的关系有很大的差异;其二是只有在电池空载的时候才能测量电池的开路电压,然而在绝大多数的情况下,电池是一直处于工作的状态,会带有一定的负载,这样就不可能给电池进行开路电压的检测,同时负载电流在内阻上的所产生的压降会严重影响开路电压的测量精度。而电池的内阻的离散性是很大的,随着电池的老化,这种离散性也会随之变大,所以想要补偿此压降所带来的误差是非常困难的。所以通过开路电压的方法来实现对电池剩余电量的检测方法是达不到所需的精度的,它只能提供一个大致的估算而无法满足实际要求。第三种是放电实验法,放电实验法是目前唯一的最为可靠的电池剩余电量估计的方法。该方法对于负载电阻进行充电和放电实验。在电池充电的过程中,通过采集充电电流和充电电压,再将两数值与时间相乘即可得出在采样间隔时间内的充电电量,即为总电量。在电池放电过程中,采集放电电流和放电电压,计算出每个采样间隔内电量的消耗,将每次的放电电量相加即可得出电池的总的消耗电量。那么电池的剩余电量就是总电量与放电电量之差。与前两种方法相比,放电实验法简单精确,不需要加入其他存储器件,节约了所需成本。故本次采用放电实验法来实现剩余电量的估计。所以本课题的主要研究内容是检测电池的电流和电池的电压,然后在通过单片机的计算在LCD显示器上显示出来。故检测电压值和电流值成为本课题研究的主要内容。1.3 锂电池充放电特性1.3.1 锂电池简介锂离子电池是可充电电池,它的工作原理是依靠锂离子在负极和正极之间进行位置的运动,而进行工作的。在锂离子电池进行充电和放电的时候,锂离子在负极和正极中间反复进行脱嵌和嵌入。在锂电池的充电过程中,锂离子在正极脱嵌,通过电解质嵌入到负极,从而使负极处在富锂的状态;而在锂电池放电的过程中则恰恰相反。现在的电池通常会采用含有锂离子的材料作为电极,所以富含锂元素的电池是现代高性能电池的代表。锂系电池分为锂离子电池和锂电池。现在的手机、平板电脑和其他电子产品使用的都是锂离子电池,人们通常称之为锂电池。但是,真正的锂电池因为具有很大的安全隐患,所以几乎不能应用在平时的使用产品之中。通过近些年来电池技术发展的历史,得出当今电池产业的进展有三个主要的特点:第一是环保型绿色电池发展十分迅速,其中包含了锂离子电池、氢镍电池和铅蓄电池等;第二是不可循环的电池向可充电电池的转化,这就符合了我国可持续发展的战略;第三是电池更进一步向轻便、小巧、纤薄的方向迅速发展。在可充电电池中,锂离子电池的比能量是最高的,可以实现可充电电池的薄型化。正是因为锂离子电池它的体积比能量和质量比能量高,可以多次的充电,而且无污染,完全具备当前工业发展的三大特点,因此锂离子电池在发达国家有非常快速的发展。1.3.1 锂电池充电特性锂电池电压具有很高的精确度,电压的误差值要小于1%。现在我们生活中使用较为广泛的电池额定电压为3.7V,当电池充满电的时候电压是4.2V,当电池电量耗尽的时候,电池电压为3V,因此他所能允许的误差范围则是0-0.042V。现在,锂电池所采用的充电模式通常都是恒流转恒压。当开始充电时,电池处于恒流的状态,此时锂电池电压较小,电池电流比较稳定。但是,当电池不断充电时,电池的电压开始不断升高,直到4.2V。这个时候,电池开始转为恒压的模式进行充电,电池的充电电流不断在降低。当充电电流减小到某一特定的范围的时候,电池进入了涓流充电阶段,也称为维护充电。在维护充电的过程中,充电器设备以一定的充电速率给电池持续的补充电荷,最后才使电池处于充电完成状态。电池充电曲线图如图2所示:图2 电池充电曲线1.3.2 锂电池放电特性锂电池在放电的过程当中,放电电流不允许太大,因为过大的放电电流会造成电池内部严重发烫,极有可能对电池形成无法挽回的损伤。同时电池的电压要高于放电终止电压。如果在低于放电终止电压的情况下,依然坚持放电,那么电池就会出现过放的现象,这种做法同样会使电池造成无法挽回的损伤。与此同时在不同的电池放电率下,电池的电压会有较大的不同。放电率的值越高,其对应的剩余电池电量下的电池电压就会越小。若电池采用0.2C的放电速率,这时电池的电压只有下降到2.75V时,才能够放出额定的电池电量。当电池采用1C放电时,电池能够放出额定电池容量的98.4%。电池放电曲线如图3所示:图3 电池放电曲线1.1.3 锂电池总结由于锂电池在充电过程中当电流是由一直不变,然后到电流逐渐减小,直到电流接近于0时电池充电结束,所以可以将电池的电流的大小来作为判断电池充电结束的标志,即当电池电流小于某一特定小的值时,表示电池充电完成。由于锂电池的电压最小值为3.0V,最大值为4.2V。所以对于A/D采样来说,应选用大于4.2V的电压作为A/D的基准电压,这样才能使电池的电压控制在采样范围之内。第2章 硬件电路的设计2.1 电池剩余电量估计系统的方案前面介绍了,本课题需要对电池的充电电流、放电电流和电池电压进行采样。对电池的充电电流进行采样时需要采用电流传感器,将电流信号转换成对应的电压信号,再通过A/D进行采集。得到的结果通过中央处理系统(AVR单片机)进行计算,得出本课题需要显示的电压值、电流值、充电电量、剩余电量、输出功率和剩余时间。最后通过显示模块将单片机中的内容显示出来。本课题的系统框图如图4所示:锂电池电流电压采集模块A/D转换模块中央处理模块(单片机)显示模块电压电流IU图4系统框图2.2 传感器的使用 本课题的任务主要是对电池的电压和电流进行采样,而电压采样只需通过单片机内置AD完成,无需外加其他传感器。然而对于电流来说,无法直接获得电池的充电电流和放电电流,需要通过一个能够采集电流的传感器,该传感器将电流的值转化成电压值,然后通过AVR单片机内置AD采集传感器输出的电压值,从而可以通过运算来计算出电池的充电电流和放电电流。电流传感器根据测量原理的不同主要可以分为以下几种:分流器、电磁式电流互感器还有电子式电流互感器。本课题所采用的霍尔式电流传感器就是电子式电流传感器的一种。与电磁式电流互感器相比,电子式电流互感器没有铁磁饱和,传输频带宽尺寸小,重量轻,是今后电流传感器发展的主要方向。2.2.1 霍尔效应原理在半导体器件上外加一个与电流的方向垂直的磁场,这就会使得半导体中的电子与空穴受到不同方向上的洛伦兹力,从而使得它们在不同的方向上聚集,在聚集起来的电子与空穴之间会产生电场,电场的强度与洛伦兹力产生相应的平衡之后,不再聚集起来,这时电场将会使得后来的电子和空穴受到电场力的作用而而平衡掉磁场对其产生的洛伦兹力,使后来的电子和空穴能够顺利地通过而不会偏移,这一现象称为霍尔效应。而半导体器件上产生的内建电压则被称为霍尔电压。2.2.2 霍尔传感器简介 霍尔传感器它是根据霍尔效应的基本原理制而作成的电流或者电压传感器。但是根据对于霍尔电势处理方式的不同,我们又可以将霍尔传感器分为以下两个类别:第一类是直接对霍尔电势进行适当的放大处理以,然后把它提供给用于检测的仪器或或者控制设备,这种设备就是我们所说的直接检测式霍尔电流传感器。这一种传感器的耐压等级非常高,而成本却很低,性能又稳定,但它的精度对温度的变化会有很大的影响,动态响应特性也很不理想。但是采用了电路的补偿,圆满地解决了以上问题。第二类则是磁场平衡式霍尔传感器,它采用了一个或者两个霍尔器件,并将其工作在没有磁通的状态下。采用这种方式的传感器会有以下几个特点:测量的范围很宽,可以测量多种形式的电流,如直流、交流、脉冲电流等等;电气的隔离性能比较好;测量精度较高,线性度很好;对于外界的电磁和温度等因素的干扰能力强;电流上升率较大,响应速度十分快;过载能力强,体积小,重量轻,安装简单、方便。所以根据综合考虑,本课题采用的电流传感器就是磁场平衡式霍尔传感器。2.2.3 霍尔电流传感器的工作原理磁场平衡式霍尔电流传感器是由原边电路、次级线圈、霍尔元件、聚磁环、放大器等部分组成。它的工作原理是磁场平衡式的,即为原边电流通过导线时所产生的电磁场,用通过次级线圈的电流所产生的电磁场进行补偿,从而使霍尔元件一直是处在检测零磁通的工作状态。它的具体的工作流程为:当原边回路出现某一大电流IP流过时,就会在通电导线的周围产生一个很强的磁场HP,这一磁场被聚磁环聚集起来,并使霍尔元件受到感应,使霍尔元件输出一个电压信号Uh,这一电压信号通过放大器放大,再将其输入到功率放大器中,就在此时,相对应的功率管成为导通的状态,从而使导线获得一个补偿电流Is。但是由于这一电流需要经过很多匝导线,多匝导线所产生的磁场Hs和原边电流所产生的磁场Hp恰恰是方向相反的,所以这两个电磁场相互抵消,从而引起磁路中合成的总的磁场变小,使霍尔器件所输出的电压信号逐渐减小,最后当补偿电流Is与线圈匝数相乘所得出的磁场Hs与原边电流Ip所产生的磁场Hp完全相同时,磁路达到磁场的平衡,Is不再增大,此时的霍尔元件就处于零磁通检测的状态。上述的过程是在很短的时间之内所完成的,这一平衡的建立所需要的时间是在1us以内,而且它是一个动态的平衡过程,即原边电流Ip所发生的任何变化都会导致这一磁场失去平衡,一旦磁场失去了原有的平衡,霍尔元件就会有电压信号输出,经过放大器放大之后,立即会有相对应的电流流过次级线圈,使它进行补偿。因此从整体上来看,次级的补偿电流的安匝数在任意时刻都和原边电流的安匝数是相同的,即 |NpIp|=|NsIs| 其中:Ip是原边电流,Np是原边匝数; Is是次级电流,Ns是次级匝数。因此,如果已经知道Np、Ns,又测得Is,即可以得出原边电流Ip的大小。利用相同的原理,我们也可以进行电压的测量,只需要在原边线圈的回路中串联一个电阻R1,将原边电流Ip转换成被测电压Up即可。磁平衡式的电流电压传感器它的测量输出信号是以电流形式Is表示的。若要获得以电压的输出形式输出,那么则需要在输出端和电源的零点之间串联一只电阻Rm,再通过输出的电压来计算通过的电流大小。2.2.4 霍尔电流传感器的电器特性本课题采用BJHCS-LTS系列霍尔传感器检测电池的放电电流。BJHCS-LTS系列传感器是基于闭环磁平衡原理的一款霍尔电流传感器,能够测量直流,交流,脉冲以及各种不规则电流等。具有精度高、低功耗、电流过载能力强的优点。传感器的输入电流与输出电压具有良好的线性关系,其关系如图所示。图2 传感器输入电流与输出电压的关系该产品有两种输入方式:电缆线穿孔输入方式和PCB输入方式。对于电缆线电流输入方式,电缆线要穿过霍尔电流传感器的孔;以BJHCS-LTS-06A为例,如果电缆线穿孔是1匝时,额定电流是6A,如果电缆线穿孔绕2匝或者3匝时,额定的电流就为3A或者是2A;如果按照此种输入方式进行时,不能同时使用PCB输入方式;对于PCB输入方式,根据输入PIN 的连接方式来判定输入的匝数与额定的输入电流参数,输入PIN的连接方式有三种:分别是1T,2T,3T;对应的输入额定电流为6A,3A,2A;具体的连接方式如图3所示:图3 传感器不同额定电流接法2.3 放大电路的设计2.3.1 放大器的设计思路由上一节可以知道,霍尔电流传感器输出的电压信号为2.50.625V。由于霍尔电流传感器输出电压变化比较小,无法精准的测出电池的充放电电流,所以应该将该电压进行放大处理,达到单片机能够分辨的范围内。根据各方面的考虑单片机接收的电压信号应该在0.7V-4.3V之间,这就使得放大电路的部分应该设计一个放大器,和一个减法器。首先将2.50.625V的电压信号放大2.88倍,即将电压信号放大到了7.21.8V。然后再将这一放大后的信号接入一减法器当中,即减去4.7V,即为所需信号。2.3.2 运算放大器的选用根据本课题的需要,选用LM324四运算放大器。它与单电源的应用场合的标准运算放大器相比,LM324系列的器件会有明显的优点。该四放大器它可以工作在低至3V或者最高达到30V的电源下,而且它的静态工作电流也只是MC1741的静态工作电流的五分之一。其共模输入的范围包括负电源,因而它消除了在许多场合中将其采用外部的偏置元件的必要性。其中,每一组的运算放大器可以用图2中的符号来表示,运算放大器有5个引出脚,其中“+”、“-”为两个信号输入端,其中“V+”、“V-”分别为运算放大器的正、负电源端,“Vo”为运算放大器的输出端。在两个信号的输入端中,“Vi-”是反相输入端,表示运算放大器输出端Vo的信号与该反向输入端的信号相位相反;“Vi+”是同相输入端,表示运算放大器输出端Vo的信号与该同向输入端信号的相位相同。LM324的引脚排列见图3。图2 LM324运算放大器图3 LM324的引脚排列由于LM324的四运算放大器电路具有电源电压的范围很宽,静态功率消耗较小,而且它还可以单电源进行供电,同时价格又十分的低廉等诸多优点,因此本课题便采用该型号的运算放大器进行电流传感器输出信号的放大。2.3.3 运算放大电路的设计根据第一小节的讨论,我们需要设计两个运算电路:第一个是要设计一个同相比例放大电路,放大倍数为2.88倍;第二个是要设计一个减法电路,需要减去4.7V大小的直流电压。如图4所示电路,即为同相比例运算电路。电路引入了电压串联负反馈,故可以认为输入电阻为无穷大,输出电阻为0.即使考虑到集成运算放大器参数的影响,输入电阻也是可以达到109以上。根据“虚短”和“虚断”的概念,集成运放的净输入电压为零,即:u+=u-=uI说明集成运放有共模输入电压。 净输入电流为零,因而iR=iF,即(uN-0)/R=(uO-uN)/Rf,即得出Uo=(1+Rf/R)*ui 上式表明uO与ui同相且uO大于ui。图4 同相比例放大电路如图5所示为减法电路。从对比例运算电路和求和的运算电路的分析我们可以知道,输出的电压与同相输入端的信号电压极性是相同的,与反相输入端的信号电压的极性是相反的,因而如果多个信号同时作用在两个输入端的时候,那么必然会实现信号的加减运算。图4所示的是两个输入端的加减运算电路,电路中只有两个输入,而且参数对称则:Uo=Ui2-Ui1图5减法器电路运放部分整体电路如图6所示:图6运放整体电路图2.3 模拟量采集系统2.3.1 AD转换介绍A/D转换顾名思义就是模数转换,即将模拟信号转换成数字信号。模拟量既可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但是在A/D转换之前,输入到A/D转换器的输入信号一定经各种传感器把各种物理量转换成为电压信号,这样才能进行下一步的操作。A/D转换之后,输出的数字信号可以是8位、10位、12位、14位和16位等。下面主要介绍三种常用的A/D转换方法:逐次逼近法、双积分法和电压频率转换法。逐次逼近法的A/D转换电路是很常见的一种A/D转换电路,转换的时间为微秒级,所以反映的速度是很快的。采用逐次逼近法的A/D转换器它是由一个电压比较器、D/A转换器、缓冲寄存器以及控制逻辑电路而构成的。逐次逼近法的A/D转换电路的基本原理是从高位到低位逐位的进行比较,这种方法就像用天平来称物体,从重到轻逐级地增减砝码进行试探。逐次逼近法它的转换过程是:初始化的时候,将逐次逼近寄存器的各位全部进行清零;转换开始时,首先把逐次逼近寄存器的最高位置1,然后将其送入D/A转换器,经过D/A转换后所生成的模拟量送入比较器,称为 Vo,将Vo与送入比较器的待转换的模拟量Vi进行比较,如果VoVi,那么该位就会被保留,如果不满足这一条件,则该位就会被清除。然后再将逐次逼近寄存器的次高位置为1,将寄存器中新的数字量送D/A转换器,再将输出的 Vo再与Vi比较,若VoVi,该位1就会被保留,否则被清除。重复这一过程,直至逼近寄存器的最低位完成置位为止。当转换结束以后,将逐次逼近寄存器中的数字量送到缓冲寄存器之中,得到数字量的输出,这一数字量即为A/D转换的结果。双积分法的A/D转换电路由积分器、电子开关、控制逻辑和比较器等部件组成。它的基本原理是将输入信号的值变换成与它的平均值成正比的时间间隔,然后再把这一时间间隔转换成数字量,所以双积分法的A/D转换属于间接转换。双积分法A/D转换的具体过程是:首先将开关接通需要转换的模拟量Vi,然后将Vi进行采样,再将其输入到积分器之中,积分器是从零开始进行固定时间T的正向积分,当时间T到达以后,将开关再次接通到与Vi极性相反的基准电压VREF上,再将VREF输入到积分器中,进行反向积分,直到输出为0V时停止积分。这一过程中Vi越大,积分器输出电压越大,反向积分时间就会越长。计数器在反向积分的时间内所计的数值,即为输入模拟电压Vi所对应的数字量,从而实现了A/D转换。 采用电压频率转换法的A/D转换器,它是由控制门、计数器还有一个具有恒定时间的时钟门控制信号而组成。它的工作原理是:V/F转换电路把输入的模拟电压转换成与模拟电压成正比的脉冲信号。电压频率转换法的工作过程是:当模拟信号的电压Vi加到V/F的输入端的时候,这时就会产生频率F与Vi成正比的脉冲信号,在一定的时间内对该脉冲信号进行计数,当时间到达以后,统计到计数器的计数值正比于输入电压Vi,从而完成A/D转换。本课题采用的是ATMEGA16单片机内部的8通道AD转换器,这款单片机上所采用的AD转换就是采用逐次逼近式AD转换器。它不但支持单端输入,而且也支持差分输入,因为采样的距离比较短,所以本课题主要采用单端输入的方式。2.3.2 AD转换的主要技术指标1分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。本课题采用的ATMEGA16单片机内置10位AD转换,即AD的分辨率为满刻度值的1/210。一个5V的满刻度的10位ADC能分辨输入电压变化最小值是51/210,即为4.88mV。2偏移误差 偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又将偏移误差称为零值误差。假定ADC没有非线性误差,则它的转换特性曲线各阶梯中点的连线必定是直线,所以这条直线与横轴相交的交点所对应的输入电压的值就是便宜误差。3满刻度误差 满刻度误差又可以将其称为增益误差。ADC的满刻度的误差指的是满刻度输出数码对应的实际输入电压与理想输入电压的差。4线性度 线性度有时有称它为非线性度,它指的是转换器实际的转换特性和理想直线的最大偏差。AVR单片机内部AD的非线性度是0.5LSB。5绝对精度在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。本课题采用的AD的绝对精度为2LSB。6转换速率ADC的转换速率是能够重复进行数据转换的速度,即每秒钟转换的数据的次数。为完成一次AD转换所需要的时间(包括稳定时间),则是转换速率的倒数。AVR单片机的AD采样时间为65-260us。2.4 中央处理系统的设计2.4.1 Atmega16单片机介绍ATmega16单片机是基于增强型的AVR RISC结构的低功耗8位的CMOS微控制处理器。由于Atmega16单片机具有先进的指令集,同时还具有单时钟周期指令执行时间,ATmega16单片机的数据吞吐率达到了1 MIPS/MHz,从而可以很容易地减缓单片机系统在处理速率和功耗之间的矛盾。 ATmega16 AVR的内核具有十分丰富的指令集和32个通用的工作寄存器。其中所有的寄存器都是直接与运算逻单元(ALU)相互连接的,这就使得每一条指令都可以在一个时钟周期以内同时访问两个相互独立的寄存器。这种结构实际上大大提高了代码运算传输效率,并且它具有比普通的CISC微控制器高于10倍的数据吞吐速率。 ATmega16 AVR单片机具有如下的特点:16K字节的系统内可编程Flash,并且具有同时进行读与写的能力,即RWW;512字节的EEPROM,1K 字节的SRAM,具有32个通用I/O端口,32个通用的工作寄存器,能够用于边界扫描的JTAG接口,同时也能够支持片内调试与编程,三个具有比较模式的灵活性很强的定时器/计数器(T/C),具备片内/外中断,可编程串行USART,同时具有起始条件检测器的通用串行接口,具有8路10位可选差分输入级可编程增益的ADC,而且具有片内振荡器的可编程看门狗定时器,一个SPI的串行端口,还有6个可以通过下载软件进行选择的省电模式。 AVR单片机工作在空闲的模式时CPU是停止工作的,但是USART、两线接口、A/D转换器、SRAM、T/C、SPI 端口还有中断系统是仍然可以继续工作的;掉电模式出现时,内部晶体振荡器停止了振荡,AVR单片机所有功能除了中断和硬件复位之外都是停止工作的;在省电的模式下,异步定时器是继续运行的,可以允许用户保持一定的时间基准,但是其他的功能模块仍然处于休眠的状态;ADC 处于噪声抑制的模式时,除了一部定时器与ADC以外,终止所有其他I/O口模块的工作,以降低在ADC进行转换时产生的开关噪声,从而影响采样精度;当单片机处在Standby模式下时,只有晶体和谐振振荡电路仍然运行,其余功能模块就会处于休眠的状态,使得单片机在这一状态下只消耗极少的电流,同时在这种工作状态下它还具有快速启动的能力;扩展Standby模式下是允许振荡器和异步定时器继续工作的。 ATmega16 AVR单片机是以Atmel高密度非易失性存储器技术生产而成的。片内ISP Flash允许程序存储器通过ISP 串行接口进行程序的下载,或者通过软件编程器来进行编程,同时也可以通过运行在AVR单片机内核之中的引导程序来进行编程。这一引导程序可以使用任何接口将该应用程序下载到应用Flash存储区(ApplicationFlash Memory)之中。在更新应用Flash存储区的时候,引导Flash区(Boot Flash Memory)的程序就会继续运行,从而实现了RWW 操作。 通过将8位RISC CPU 和系统内可编程的Flash 集成在一个芯片之中,ATmega16 AVR单片机便成为一个功能强大的单片机,从而为许多嵌入式控制系统的应用提供了灵活而又低成本的解决方案。ATmega16单片机具有一套完整的编程与系统开发的工具,其中包括:C语言编译器、宏汇编、程序调试器、软件仿真器以及评估板。2.4.2 Atmega16单片机的内部结构ATmega16内部的的主要构成部分有:CPU部分、程序存储器Flash、数据存储器RAM和EEPROM、各种功能的外围接口、I/O口以及与他们相关的数据、控制、状态寄存器等等。1 中央处理器 CPU是单片机的核心部分,他由运算逻辑单元(ALU)、程序计数器(PC)、指令寄存器还有指令译码器等部件构成的。运算逻辑单元(ALU)的主要功能是进行数据的算术运算和复杂的逻辑运算,它可以对半字节或者全字节进行操作,比如说它能够完成加法、减法、自加1和自减1、还有比较等数字的运算,同时它还可以进行逻辑与、逻辑或、逻辑非、求补和循环移位等逻辑运算。同时,操作结果的状态,如产生了进位或者结果是零等状态,那么信息将会映象到状态寄存器SREG相应的标志位中。运算逻辑单元(ALU)还包括一个布尔处理器,布尔处理器是用来处理位操作的。它可以执行清零、置位或者取反等操作。ATmega16的ALU还可以实现无符号数和有符号数以及浮点数的硬件乘法等操作。单片机进行一次乘法操作所需要的时间为2个时钟周期。程序计数器(PC)是用来存放下一条需要执行的指令在程序存储空间所在的地址的(它是指向Flash空间)。从计数器中取出的指令是被存放过在指令寄存器之中,然后将其送入指令译码器产生各种控制信号,从而控制CPU的运行(执行指令)。AVR单片机一条指令的长度大约为16位,但是也有一小部分是32位,因此AVR单片机的程序储存器的实际结构是以字为一个存储单元的。ATmega16的程序计数器是13位的,刚好满足对于片内的8KB的Flash程序存储器空间进行直接寻址的需要,所以不支持外部扩展更多的程序存储器。AVR单片机正在译码执行某一条指令的同时,就将PC所指定的Flash存储器中的指令取出来,再将其存放在指令存储器之中,构成了一级的流水线的工作方式,大大提高了运行效率。AVR单片机采用的是一级的流水线的工作模式,在当前指令正在进行但是还没有完成的时候,就取出下一条马上要执行的指令,这就使得AVR单片机的CPU实现了在一个时钟的周期内执行一条语句。采用这一结构,AVR单片机不仅减少了读取指令的次数,而且也大大提高了AVR单片机的运行速率,同时也大大提高了提取指令时的可靠性。在AVR单片机中,R0R31的32个8位通用的工作寄存器共同构成了一个“通用快速工作寄存器”,AVR单片机中的ALU和这32个工作寄存器是直接连接的,同时为了使ALU更加灵活、更加快速地对其进行访问,通用的工作寄存器支持ALU使用4种不同的方式进行访问操作。因此AVR单片机在大多数操作寄存器的时候都是可以直接对通用工作寄存器进行直接访问,并且这样的执行指令一般情况下只有一个时钟周期。2 系统时钟部件Atmega16的片内是含有四种频率的(1MHz/2MHz/4MHz/8MHz)的RC震荡电路,并且可以直接将其作为系统的工作时钟来使用。与此同时,单片机片内还设有一个由反向放大器所构成的OSC的振荡电路。外围的引脚XTAL1和XTAL2分别是OSC振荡电路的输入端和输出端,这是用来外接石英晶体的。如图7所示:图7外接晶振电路 系统时钟为单片机提供时钟脉冲,它是控制器的心脏。系统的时钟的最高频率是单片机的重要指标之一。系统的时钟频率越高,单片机所执行的速率就越快,处理速度也就越快。为Atmega16单片机提供时钟源的时候,可以有三种不同的选择:第一种是直接使用单片机内部的1MHz/2MHz/4MHz/8MHz RC振荡源;第二个是采用外接方式,在XTAL1和XTAL2引脚上外接晶振电路,使其构成我外部的振荡源;第三个就是直接使用外部的时钟源输出的脉冲信号。因为第二种方法是比较常见的方法,所以在本课题中采用的是外接晶振构成震荡电路。 同时单片机内部还集成了一个1MHz的独立的时钟电路,他仅仅是提供片内的看门狗定时器的使用。所以,在AVR单片机内部的WDT是独立的硬件形式的看门狗,而且通过使用内部看门狗,可以省去外部的WDT芯片。使用WDT可以非常有效的提高系统的稳定性。 3 CPU的工作时序 AVR单片机中CPU的工作是由系统的时钟直接进行驱动的,在单片机的内部是不再进行分频的。CPU在启动之后的第一个时钟周期之内是取出第一条指令,在第二个时钟周期之内便执行取出的指令,与此同时又取出了第二条指令,并依次地执行指令。基于这种流水式的指令执行方式,AVR单片机便可以通过非常高的速度进行运算处理。4. 存储器 AVR单片机片内集成了Flash程序存储器、SRAM数据存储器和EEPROM数据存储器。这三个存储器是相互独立的,而且它们的物理结构也非常不同。程序存储器是闪存存储器Flash,由于单片机的所有的指令都是16位字或者是32位双子的,所以Flash程序存储器的结构是(512-64KB)16位。Flash存储器的使用的寿命超过1万次的擦写程序的循环。ATmega16单片机它的程序存储器是8KB16位,程序计数器PC的宽度是13位,所以通过这个来对8K字程序存储器的地址进行寻址。 SRAM数据存储器,共有1024个地址。CPU对SRAM数据存储器的寻址方式分为5种:直接寻址、间接寻址、带偏移量的间接寻址、带预减量的间接寻址和带后增量的间接寻址。就在寄存器当中,寄存器R26-R31具有间接寻址的指针寄存器的特性。ALU它可以使用直接寻址的方式对整个的存储器的空间进行了寻址的操作。带偏移量的间接的寻址方式可以寻址基本地址附近的63个地址。但是当使用带预减量还有后增量的间接寻址方式的时候,3个16位的地址寄存器X、Y和Z都可以将其作为指针寄存器。 AVR系列的单片机还有64B-4KB的EEPROM数据存储器。它们被安置在一个独立的空间之中,这一个数据空间可以采用单个的字节进行读取或者写入。EEPROM的使用寿命至少是10万次的擦写循环。本次课题所采用的ATmega16单片机内置512B的EEPROM。EEPROM的功能可以进行数据的掉电保护。5. ATmega16的引脚功能VCC:电源正 GND:电源地 端口A(PA7-PA0):端口A是单片机内置10位A/D 转换器的模拟量的输入端。端口A 是8位的双向I/O端口,并且具有可编程的内部的上拉电阻的功能。它的输出端的缓冲器具有相对称的驱动特性,同时它可以输出和输入很大的电流。作为输入端口来使用的时候,如果端口内部的上拉电阻使能,端口被外部的电路信号拉低时,端口将输出电流。在复位的过程中,即使系统时钟还并没有起振,端口A仍然会处于高阻的状态。 端口B(PB7-PB0):端口B 是8位的双向I/O口,它具有可以编程的内部上拉电阻。端口中输出缓冲器具有相对称的驱动特性,可以输出和输入很大的电流。作为输入端口来使用时,如果端口的内部上拉电阻使能,当端口被外部电路信号拉低时,这时端口将输出电流。在复位的过程当中,即使系统时钟还并未起振,端口B处于高阻状态。端口B 也可以用做其他不同的特殊功能。端口C(PC7-PC0):端口C是8位的双向I/O口,它具有可编程的内部上拉电阻。端口的输出缓冲器是具有相对称的驱动特性,这可以输出和输入很大的电流。作为端口使用的时候,如果内部上拉电阻使能,端口被外部电路信号拉低的时候,端口将输出电流。在复位的过程中,即使系统时钟还没有进行起振,端口C仍然处于高阻的状态。如果JTAG接口使能,使复位出现的引脚 PC5(TDI)、 PC3(TMS)与PC2(TCK)的上拉电阻被激活,端口C也可以用做其他不同的特殊功能.。端口D(PD7-PD0) 端口D是8位的双向I/O口,它具有可以编程的内部上拉电阻。它输出端的缓冲器是具有相对称的驱动特性,端口可以输出和吸收大电流。作为输入端口使用的时候,如果内部上拉电阻使能,那么端口被外部电路拉低时就会输出电流。在复位的过程中,即使系统时钟还没有起振,端口D 仍然处于高阻的状态。端口D也可以用做其他不同的特殊功能。RESET是复位输入引脚。当持续时间超过了最小门限时间的低电平的时候,就会引起系统的复位。但是如果持续时间小于门限间的脉冲不能保证可靠复位。 XTAL1 是反向振荡放大器与片内时钟操作电路的输入端。 XTAL2 是反向振荡放大器的输出端。 AVCC 是端口A与A/D转换器的电源。当不使用ADC时,这一引脚应该直接与VCC进行连接。使用ADC时应通过一个低通滤波器与VCC 连接。 AREF 是A/D的模拟基准电压的输入引脚。单片机引脚图如图8所示:图8 ATmega16单片机引脚图2.5 显示电路的设计由于本课题需要显示充电电量、放电电、电流值、电压值、功率、剩余时间、剩余百分比,显示内容较多。如果采用一般的LCD1602,或者数码管显示这些内容比较麻烦,所以本课题采用LCD12864液晶显示器来显示各个参数的值是比较方便的。LCD12864是一种具有4位/8位的并行、2线或者3线串行多种接口方式,内部含有国际一级、二级简体中文字库的点阵图形液晶显示模块,其中它的显示分辨率为12864,内部含有8192个16*8点ASCII字符集,通过这一模块灵活的接口方式和非常简单而又方便的操作指令,就可以构成全中文的人机交互的图形界面。同时也可以显示84行点阵的汉字。而且也可以完成图形的显示,其中低电压和低功耗有是其中一个显著的特点。有该模块构成的液晶显示的方案和与其同类的产品相比,无论是硬件结构或者是显示程序都会简洁的多,且该模块的价格也是略微的低于相同点阵的图形显示模块的。LCD12864具有8个数据端口和3个控制端口。数据端口与AVR单片机的PB口相连,3个控制端口分别连接在PD5、PD6和PD7上。显示部分的电路图如图9所示:图 9 LCD12864显示电路图2.6 硬件部分整体电路连接本课题需要将电池、电流传感器、放大电路、单片机、显示器和电源模块连接起来,组成一个系统。首先电流传感器需要连接5V电源进行供电,将电池连接一个负载使其产生电流,再将通有电流的导线穿过电流传感器,即是对电池的放电电流进行采样。然后是对电池电压的采样,只需直接将电池的正极接到AVR单片机的PA1接口,负极接到单片机的地端即可。电流传感器的输出接到运放的输入端,对LM324供12V电源,此时由电流输出范围-6+6A则运放输出范围是0.7V4.3V,再将输出信号接到单片机PA0口即可。单片机的输入信号已经连接完成,下面连接单片机的显示部分。显示部分主要是LCD12864的连接,单片机的PB口是LCD12864的数据端口,将单片机需要显示的数据在PB口进行传输。然后是LCD12864的控制端口RS、RW、E分别接到单片机的PD4、PD5和PD6端口,对显示器发出命令信号。接着是对液晶显示器进行供电,LCD12864通过5V电源进行供电,在显示器的2、3引脚处连接一滑动变阻器,以此来调节液晶显示器的亮度。在单片机的AREF端口接4.7V的基准电源,这一电源是单片机AD采样的基准,确保AD采样的准确性。同样AGND是基准电源的地线,只需将该地线和单片机地线相接即可。图10 整体电路图第3章 软件设计本课题主要采用的是ICCAVR编程软件进行编程的,下面具体说一下软件编程的思路。首先电路需要显示许多参数,所以要有LCD12864显示器的初始化程序。同时单片机的端口也需要进行初始化,显示器的输出口PB设置为输出,显示器控制口PD5、PD6、PD7设置为输出。由于本课题中用到两路的AD转换,所以需要将PA0、PA1口设置为高阻态、单端输入方式。最后就是定时器初始化,因为任务书要求每隔0.5s采样一次,所以需要用到定时器中断,并将定时器中断进行初始化设置。第二就是要等待定时器中断,当中断到来的时候,进行AD转化,并通过公式计算出电压值和电流值,通过判断电流值的大小,从而断定电池是在充电还是在放电。如果电流值大于0,电池为充电状态,并在此时计算出当前的功率值和电池电量的累加,将每次采样累加的电量存到单片机内部的EEPROM之中,从而保证单片机掉电之后电池电量的值仍然保证在之前的电量状态。如果电流值小于0,则电池为放电的状态。放电过程中,通过总电量和功率能够计算出电池的剩余电量和剩余的时间,最后计算出剩余电量的百分比。3.1 电路主程序流程图主程序的流程图是单片机从启动开始到结束,一直需要执行的功能。主程序中,需要将各个部件进行初始化,这样才能使器件正常运行。首先是单片机端口的初始化,单片机PA0和PA1口设置为高阻态,因为PA0和PA1口为AD输入端口,不能设置它为高电平或低电平的状态。单片机PB口为输出,该端口是LCD12864显示器的数据输出端口。单片机PD4、PD5和PD6口为输出,该端口是液晶显示器的控制端口。然后是对定时器的初始化,因为单片机需要定时采样,这就需要用到定时器中断。先进行模式的设置,然后存入初始值,再进行开中断就可以了。接着是LCD12864的初始化。根据数据手册所指出的初始化顺序,首先对显示器进行最基本的初始化命令,接着开显示但是光标不显示也不闪烁,然后设置写入一个字符后写入位置自动加一,最后设置坐标为第一行和第一列,这样显示器的初始化就完成了。主程序的最后就是对充电电量、放电电量、电流、电压、功率、剩余电量和剩余时间进行显示,计算部分是通过中断函数进行的,所以这里没有进行详细的介绍。下面是主程序的流程图:开始单片机端口初始化定时器初始化LCD初始化显示充电电量、放电电量、电压和电流等参数图11 主程序流程图3.2中断程序流程图中断程序的流程图的主要作用是对模拟量的采集,然后对其进行计算最后储存到相应的显示数组中。显示的部分则是在主程序之中完成的。首先是对电池的电压和传感器输出的电压进行采样,通过公式计算出电池充电电流或者放电电流的值,然后通过电池电池电流和电压的值计算出电池当前的功率,充电累加量,放电电量,剩余时间和剩余电量的值。最后将其储存到数组中。当电流值大于0的时候,此时为电池的充电状态,同时检验电流值是否小于0.2A,如果不小于0.2A则说明电池处于持续的充电状态,但是当电池电流越来越小的时候,电池就处于充电饱和或者接近饱和的状态,这时表示电池已经充满电,并且电量也不再进行累加。当电流值小于0是,电池处于放电的状态,此时会根据当前的功率对剩余电量、剩余时间和剩余百分比进行计算,并将其存储到需要显示的数组之中。中断流程图如下图所示:电池电压电流采样电流小于0.2电流大于0计算电压和电流值开始电量减少总电量为0YN电量累加显示剩余电量停止放电停止累加,显示总电量N对计数器重新赋值中断程序结束图12 中断程序流程图第4章 系统调试4.1硬件调试4.1.1 放大电路的调试硬件调试部分主要是电流传感器的调试。在硬件设计部分已经详细的介绍了本课题的最终使用的方案,即传感器的输出电压是2.50.625V,将其放大2.88倍,然后通过一个减法器减去4.7V,就可以是输出电压控制在0.7-4.3V之间。但是在本次毕设的一开始,我所设计的方案并不是这个。起初,由于电流传感器输出电压为2.50.625V,需要先将这一电压减到0V,即传感器输出电压减去1.875V,得到的输出电压变为0-1.25V,最后经过放大器放大4倍之后得出最后的输出电压为0-5V。但是,实际的情况并非如此。由于本课题采用了单电源供电,最小输出电压只能为0.7V,不能够达到0V,所以这一方案不能够采用。经过仔细考虑,输出电压最小值就用0.7V来代替,而为了使采样电压对称,则采用4.3V作为输出电压的最大值。这就需要先对信号进行放大处理,经过计算需要将信号放大2.88倍,是一级输出电压变为5.4V-9V。根据LM324的电气特性,输出电压为VCC-1.5V,所以LM324的供电电源应大于11.5V(本课题采用的总电源为12V)。再经过一个减法器,将一级输出电压减去4.7V,即为所需要的电压输出范围(0.7-4.3V)。放大电路实物图如图13所示:图13放大电路实物图4.1.2 电源电路的调试电源电路的调试部分,主要是对供电电源的选择。根据上面所说,本次毕设需要电源的部分有很多,比如运算放大器需要12V

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论