基于单片机的分时计费智能电表设计报告.docx
- 文档编号:29349694
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:27
- 大小:252.98KB
基于单片机的分时计费智能电表设计报告.docx
《基于单片机的分时计费智能电表设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机的分时计费智能电表设计报告.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机的分时计费智能电表设计报告
目录
1前言1
2总体方案设计2
2.1方案比较2
2.1.1方案一2
2.1.2方案二3
2.2方案比较及选择4
3单元模块设计5
3.1各单元模块功能介绍及电路设计5
3.1.1电源模块电路5
3.1.2计量模块电路5
3.1.3时钟及LCD显示模块6
3.1.4信号采集电路8
3.2电路参数的计算元器件的选择9
3.3特殊器件介绍9
3.3.1ADE7758介绍9
3.3.2STC89C52单片机介绍10
3.3.3DS12887时钟芯片介绍10
3.3.4LCD1602液晶显示屏介绍11
4软件设计13
4.1软件设计原理及设计13
4.2设计软件介绍13
4.2.1Proteus软件介绍14
4.2.2KEIL8051开发工具14
4.3软件结构图14
4.3.1电压电流采集子程序15
4.3.2AD转换子程序16
5系统调试17
5.1单片机及1602显示部分17
5.2万用板电路部分调试18
6系统功能、指标参数19
6.1系统能实现的功能19
6.2系统指标参数分析19
7结论20
8总结与体会21
9谢辞22
10参考文献23
附录1(原理图、PCB、实物图)24
附录2(主程序)27
1前言
随着国民经济的不断发展,各地对于电能需求量也随之迅速增加,电力已经成为国家的最重要能源。
但是,当前居民用电的管理过于落后,居民用电管理收费多年来一直采用先用电、后抄表、再付费的传统作业方式。
居民用电绝大多数实行“分表制”,即若干集中居住的家庭使用一个总的电表,每户装一个分电表,作为居民交付电费的依据。
但是这种管理方式,给居民和管理人员带来诸多不便,而且还存在着一些弊端。
为了适应社会的需要,保证用户安全、合理、方便地用电,对传统的电表和用电的管理模式进行改造,使之符合社会发展的需要就显得很有需要。
加上现在很多电表不能分时计费,所以,我们一致决定选择了基于单片机的分时计费智能电表设计。
所谓智能电表,就是应用计算机技术,通讯技术等,形成以智能芯片(如CPU)为核心,具有电功率计量计时、计费、与上位机通讯、用电管理等功能的电度表。
本新型智能电表主要实现分时智能计费。
本次设计主要采用ADE7758电能计量芯片和STC89C52单片机为核心,结合电流、电压采集,再通过信号滤波传给ADE7758,再经过STC89C52处理,最终在键控的触发下,送到LCD显示。
此电表能实现用户在220V电压下所用功率的计算,并根据国家规定的用电高峰和低谷设置阶梯电价计算,并显示出用户各时段所耗功率。
不仅具有传统电表的功能,还能对用户的用电情况进行管理和控制,并且相比于传统电表的机械式结构,没有机械摩擦,大大的提高了准确度和灵敏度,且易于实现自动化测量,并且可以实现远程通讯和控制,具有较高的性能价格比,适合我国国情,有广泛的引用价值。
智能电表利用微机技术,通讯技术等等,减少了能量的消耗,把采集,处理集中于一体,节省成本和人力资源,提高了工作效率,适应了现代用户的需求。
通过基于单片机的分时计费智能电表设计,使我们更加熟悉有关单片机开发设计原理及方法,并能加深对单片机的理解和运用以及掌握单片机与外围接口的方法和技巧,这些主要体现在以下方面:
1.如何使用单片机的总线控制方式进行控制,以及单片机内部AD转换程序的应用。
2.可以了解到LCD显示器的结构、工作原理以及这种显示器的接口实例。
3.怎样扩展显示接口、如何驱动外围元件等。
4.熟悉了单片机程序的编写,以及C语言程序的编写。
2总体方案设计
本电表采用分时计费原则,将电压,电流等参数进行采集,并通过处理后输入微处理器STC89C52,进行运算,并最终实现对于电能的准确计量和控制显示。
通过查阅大量相关技术资料,在老师的建议下,结合自己的实际知识,我们主要提出了两种技术方案来实现系统功能。
下面将首先对这两种方案的组成框图和实现原理分别进行说明,并分析比较它们的特点,然后阐述最终选择方案的原因。
2.1方案比较
智能电表的设计,是基于对用户电压电流信号进行采集,并通过微处理器进行核心运算,当电压电流信号通过采集以后,通过高精度的AD采样保持,最终输入微处理器,并通过用C语言编写的程序键控控制处理器单片机,并且要求通过功率和电费的计算,进行显示与报警。
对于电力参数的测试,例如电压,电流,有功功率,无功功率等,现在都有成熟的测量计算方法,对于电压有效值的测量,可以利用积分电路来实现,也可以利用时间采样信号,将信号值平方,去均值以后,得到平方根,通过AD,进行采样,有功功率定义为
,
和
为电压和电流的有效值,
为功率因数。
而对于非正弦波形的计算,只有通过积分运算来完成。
2.1.1方案一
在本设计方案中,核心器件为微处理器,这里我们选用是STC89C52单片机,当信号采样后通过AD转换,送入微处理器,进行数据的分析和计算,智能电表的实现必须对用户的功率进行准确的计算,在信号采集模块中,通过电压互感器和电流互感器,对用户的电压和电流信号进行采集,微处理器进行功率和电费的计算,可通过LCD显示,并可以通过键盘对分时电价进行调整,实现显示的转换和调整,并运用单片机内部时钟设计计时系统,以实现分时的控制。
但是此设计有诸多缺陷,首先,在信号采集方面,由于智能电表对于功率的计算,如果单纯的使用单片机,会造成功率计算不准确,如果要提高计算的精度,对于信号的AD转换就必须采用高精度期间,成本费用增加,其次即便使用了高精度的AD,在功率计算,补偿方面的程序也相对繁琐,再则,由于使用分时计费系统,只用单片机内部时钟信号进行粗略的计时,产生的时间误差比较大,长时间的使用下会导致计时不准确,而使得电费的计算出现误差。
软件系统方面,其核心是编写功率计算程序和AD采样程序,并通过键盘扫描实现显示的切换。
方案一如图2.1所示
图2.1方案一
2.1.2方案二
本方案的设计思路与方案一大致相同,选用STC89C52单片机,作为微处理器,通过电压传感器,电流传感器实现对用户的电压电流采集,并在单片机中进行电价的计算,与方案一的不同之处在于,方案二中功率计算部分和AD转换采集部分被一块电能计量芯片ADE7758进行代替,该芯片是以一款高准确度的三相电能采集芯片,适用于计量各种三相,单项配置条件下的有功,无功,视在电能,可省去高精度AD的费用的同时,也可以减少单片机内部处理功率的步骤,转由ADE7758完成。
同时,由于该智能电表采用分时计费系统,方案二中采用一块时钟芯片以提高对于时间的计时准确程度,以确保该电表可以准确计费,同时,由于时钟芯片本身集成有微型电池,可以在断电的情况下继续运行,保证了在智能电表断电的同时,计时系统不至于停止工作。
在本方案中,由ADE7758进行功率的计算并进行校准,在该芯片中,通过有功增益寄存器写入数据,可对输出产生的平均功率进行改变,该芯片中在每个相位集成了一个有功偏移寄存器,该寄存器为12位寄存器,用以对有功功率进行校准,由于实际电路的工作环境的复杂和多变,以及芯片本身制造工艺和各通道之间进行的干扰,都会造成误差的产生,有功功率寄存器的一个LSB相当于有功功率乘法器输出的LSB的1/16。
在满刻度输出时,如果乘法器的输出为XCCCCS(838861d),LPF2输出端的1个LSB相当于在电流通道满刻度-60dB计量误差的0.0075%。
在满刻度时,-60dB(输入信号级别为满刻度信号输入的1/1000),LPF2的平均数值为838.861(838,861/1,000)。
LSB=1/838.861/16×100%=测量值的0.0075%。
有功功率偏移寄存器修正分辨率为0.0075%(−60dB)。
方案二如图2.2所示
图2.2方案二
另外ADE7758的各相拥有一个空载阀值,如果有功功率的测量值低于满刻度的0.005%,则该值不会被累加,有效的避免了电表的浅动。
ADE7758通过41个电能寄存器连续累加有功功率以实现对信号的积分作用,这种离散的累加作用就相当于连续时间的积分作用,平均有功功率的计算时,是有符号运算的,负电能将会在有功功率寄存器中被扣除。
当有功功率为正,且达到最大值时,有功功率的数值将反转到达满刻度的负值0X800,并继续增加,当有功功率为负值,且持续减小到达最小时,会自动转为正的对大刻度0X7FFF,并继续降低。
2.2方案比较及选择
虽然两种方案都能实现本次设计。
但是在软件系统上,该方案二与方案一的区别在于,重点在对于ADE7758和DS12887两块芯片的读写程序的书写,在硬件的搭建上降低了难度,但是在程序书写上难度有所增加。
而且方案二增加了时钟芯片,这样增加了STC89C52的精确度和灵敏度,增强了系统的实时性,时效性。
通过对以上两种方案的具体描述,对他们各自的优缺点有了一定的了解。
考虑到控制精度,操作习惯和美观以及成本等因素,要完成对于电费的准确计算,并综合本次课程设计成本进行考虑,最终选择了方案二为本次设计的最终设计方案。
3单元模块设计
本系统主要包括以下部分:
电源模块电路、信号采集电路、计量模块电路、时钟及LCD显示模块电路。
辅助元件有电阻、电容、晶振、电源、按键等。
先对各模块分别作具体介绍:
3.1各单元模块功能介绍及电路设计
3.1.1电源模块电路
电源模块电路从电网220V电压作为输入,通过该电路后,输出端输出大小为5V的电压,作为单片机及其他芯片的VCC电源,具体的电路图如图3.1所示:
图3.1电源模块接线图
图3.1为电压模块的电路图,该模块以电网220交流电作为输入,通过整流桥整流后,再经过滤波,最后通过一块78L05稳压芯片进行稳压,得到一个稳定的5V电源,78L05的输出电流可达到100mA,无需外接元件,内部本身带有热过载保护,内部短路电流限制。
通过Proteus软件仿真可以看到,通过该电源模块可以很好的工作,并最终得到一个稳定的5V的电源。
然后此5V的电压就可以供给STC89C52和时钟芯片DS12887。
3.1.2计量模块电路
计量模块的核心是通过一块ADE7758芯片来完成,通过信号采集电路,将变换后的电压电流信号输入到该芯片,ADE77581是一款高准确度的三相电能计量芯片,带有两路脉冲输出功能和一个串行接口。
ADE7758集成了二阶Σ-D模数转换器,数字积分器,基准电路,温度传感器,以及所有进行有功,无功和视在电能计量以及有效值计量所需的信号处理元件。
图3.2计量模块电路接线图
图3.2为芯片ADE7758的具体接线图,ADE7758作为一款适用范围极广且功能强大的电能计量芯片在本次设计中担任了重要的角色,通过DOUT管脚直接与单片机连接,通过SPI总线方式,与单片机实现数据之间相互通信,从而实现功率的计算,其中DOUT管脚与单片机P1.4连接,SCLK与P1.3连接,DIN与单片机P1.7连接,CS片选信号与单片机P1.2连接。
3.1.3时钟及LCD显示模块
本次设计中,该电表要实现分时计费,既必须引入时钟系统,该时钟系统必须准确,且在电表短时间断电之内,不会停止工作,因此,该模块采用了一块时钟芯片DS12887,该芯片为一款使用很广泛的时钟芯片,具体电路图如图3.3所示:
图3.3DS12887接线图
图3.3为时钟芯片DS12887的连线图,其中DS与单片机P2.1口连接,R/W与单片机P2.5口连接,AS与单片机P2.4口连接,CS与单片机2.2口连接。
通过该芯片可以提供比较精确的万年历。
同时智能电表的显示模块选用LCD显示,下图为LCD1602显示电路:
图3.4LCD1602接线图
通过该LCD液晶显示器,显示我们需要的一些信息。
上述两个模块通过与STC89C52单片机进行连接,可以实现万年历的功能,且可以保证,在智能电表短时间断电的情况下,时钟不会停止运行,继而使智能电表的分时计费系统可以准确的运行,我们用Proteus仿真,电路图如图3.5所示:
图3.5LCD显示电路仿真图
图3.5为万年历显示模块,上图中可以通过按键对LCD显示进行调整,可以显示万年历,分时电价,余额等信息。
3.1.4信号采集电路
本次设计为智能电表,所以要对用户的电压和电流都进行采样,再通过ADE7758芯片来得到一个较为准确的功率值并输入单片机中,因此电压电流的采集电路如图3.6所示:
图3.6信号采集电路
图3.6为电流电压采集电路,在电流采集电路中,通过将电流互感器TA32BM串联到用户电路中,以采集用户的电流信息,TA32BM额定输入输出为5A/2.5mA,通过电流互感器将大电流转换到ADE7758可以接受的小电流范围内,然后通过滤波降低信号的干扰,最终输入芯片,在电压采集电路中,通过将电压互感器TV31B-02并联到用户的负载上,采集用户的电压信息,TV31B-02是一款电流型电压互感器,额定电流是2mA/2mA,所以要在电压互感器的缘边串联一个51K的电阻以降低互感器原边电流值到可承受的范围,最后通过RC电路滤波后,得到一个近似0.5V的电压以输入到ADE7758芯片,和前面的电流值一起,计算出用户的功率。
电压互感器相当于一个内阻很小的电压源,正常运行时它的负载阻抗会很大,相当于开路状态,二次侧只有很小的电流,当二次侧短路时,负载阻抗为零,将产生很大的短路电流,会将电压互感器烧坏。
因此,电压互感器二次侧严禁短路。
电流互感器在正常运行时,二次电流产生的磁通势对一次电流产生的磁通势起去磁作用,励磁电流很小,铁芯中的总磁通就很小,二次绕组的感应电动势不会超过几十伏。
如果二次侧开路,二次电流的去磁作用消失,其一次电流完全变为励磁电流,会引起铁芯内磁通剧增,铁芯处于高度饱和状态,加之二次绕组的匝数很多,就会在二次绕组两端产生很高(甚至可达数千伏)的电压,不但可能损坏二次绕组的绝缘,再者,由于磁感应强度剧增,使铁芯损耗增大,严重发热,甚至烧坏绝缘。
3.2电路参数的计算元器件的选择
因为我们要测量的范围是,负载电压不超过25V,电流不超过2A,而单片机能够接受的电压小于5V,所以我们电压采样时,用
和
电阻分压的方式,这样就算电压得到25V时,我们所采的电压也只有2.447V,单片机也能正常工作,电压采样后经过一个电压跟随器,降低输出阻抗,电流采样时,通过电压间接采样,因为我们所串联的电阻很小,并联一个
的电阻得到一个小电压,然后再放大,得到送入单片机。
3.3特殊器件介绍
3.3.1ADE7758介绍
ADE7758是一款高精度的电能计量芯片,具有高准确度,适用于三相/三线,三相/四线和其他各种三相系统,该芯片通过SPI数据串行接口和单片机进行连接,模拟电源端(AVDD)=数字电源(DVDD)=5V±5%,模拟地端(AGND)=数字地(DGND)=0V,使用片内基准源,CLKIN=10MHzXTAL,温度范围为−40°C至+85°C。
ADE7758的管脚图如图3.7所示:
图3.7ADE7758管脚图
3.3.2STC89C52单片机介绍
STC89C52是一款高速度,高密度,低功耗的单片机,内置8位中央处理单元,256字节片内数据RAM,8K片内程序ROM,32个双向I/O口,还包含3个定时/计数器,拥有PDIP(40pin)和PLCC(44pin)两种封装形式,本次设计中采用40管脚双列直插封装,功能强大,可以适用于较为复杂的工作环境,STC89C52单片机管脚图如图3.8所示:
图3.8STC89C52管脚图
3.3.3DS12887时钟芯片介绍
DS12887为一款时钟芯片,该器件可以提供RTC/日历,闹钟,三个可屏蔽中断和一个可编程方波以及一个114字节的RAM,此RAM有电池备份,不会导致断电后时钟停止的现象,该器件把石英晶体和电池集成在了一起,少于31天的月份、月末日期可自动调整,其中包括闰年补偿,该芯片还有一个精密的温度补偿电路用来监视VCC的状态,如果检测到主电源故障可自动转换到备用供电,该芯片接口支持Intel和Motorola两种模式,在本次设计中,采用的是Intel模式,具体补管脚图如图3.9:
图3.9DS12887管脚图
3.3.4LCD1602液晶显示屏介绍
LCD1602是一款工业字符型液晶显示屏,能够同时显示32个字符,内部带有80*8为的内部RAM缓冲区,可显示阿拉伯数字,引文字母大小写,常用符号和日文片假名等,每一个字符都有一个固定的代码,在本次设计中,可以通过LCD显示万年历,分时电价,剩余金额等数据信息,可以通过键盘来切换显示。
部分主要指令说明如下:
表3.1LCD1602指令码
指令码
功能
00111000
设置16*2显示,5*7点阵,8位数据接口
00001DCB
D=1开显示;D=0关显示
C=1显示光标;C=0不显示光标
B=1光标闪烁;B=0光标不闪烁
000000NS
N=1当读或写一个字符后地址加一,光标加一
N=0当读或写一个字符后地址减一,光标减一
S=1时写一个字符,整屏显示左移(N=1)或右移(N=0),以得到屏幕移动光标不移动的效果
S=0时写一个字符,整屏显示不移动
80H+地址码
设置地址数据指针
01H
显示清屏:
所有指针清零,所有显示清零
02H
显示回车:
数据指针清零
LCD1602读写时序图如图3.10、3.11所示:
图3.10LCD1602写时序图
图3.11LCD1602读时序图
4软件设计
本设计中,以STC89C52作为微处理器,采用C语言进行编程,配合硬件电路,共同构成了本次设计的核心部分。
4.1软件设计原理及设计
本次设计采用C语言,C语言具有简洁明了的特点,在本次设计中,按照各芯片的读写操作时序,以SPI总线操作方式,分别对DS12887时钟芯片,ADE7758电能计量芯片进行读写操作,即可基本完成本次设计的主要功能。
在读取DS12887时钟芯片时,按照其读写时序,当要写入数据时,先要写入地址,将CS置低,SA,DS分别置高,RW置高,然后给P0口赋值,即要写入的地址,然后将AS,RW置低,再一次给P0口赋值,即要写入的数据,最后将AS,RW,CS,拉高,同理,在读取数据时,也要先写入一个地址,将AS,DS,RW置高,将CS置低,给P0口赋值地址,然后将AS,DS拉低,P0读取数据,最后DS,AS,CS,全部拉高。
同时,在读取ADE7758芯片中有功功率时,同样,按照其读时序图,先将CS拉低,选中信号,再用SCK模拟一个时钟信号输入,先向ADE7758写入一个地址,再从芯片读出数据,ADE7758和DS12887读写程序最大的不同在于,DS12887可以将8位数据一次性读出,而ADE7758只能一位一位的读取,因此,在书写读写函数的时,需要指明,读取数据的位数。
在CS保持低电平的时候,所有的数据传输必须全部完成,另外,除了整体器件复位以外,没有其他方法可以让ADE7758返回通信状态,所以必须传输各寄存器的LSB,复位的方法是运用软件进行复位。
如前所述,在第一个字节正在向目标寄存器传送是,可以同时开始另一个字符的传送,但是第二个字节的传输过程不应该在第一个字节传送完成前至少900ns内不应该结束。
当ADE7758寄存器经行读取操作访问时,读取命令个写入命令之间至少需要有1.1us的时间间隔,若果间隔过小,将会导致写入操作的最后一个字节丢失。
本次设计的另一个重点就是现实程序,1602的显示程序同样按照其读写时序图完成,不同的是,1602的显示,需要在主程序的开始写一个初始化函数用以设定1602的显示方式,光标等等,在本次设计中,只涉及到1602的写程序,写数据时,同样需要先写入地址,写地址时,先将RS,EN置低,延迟后再将EN拉高,赋予地址,最后将EN拉低,写数据与读不同之处在于要将RS拉高其余同写地址时一样。
4.2设计软件介绍
本次设计采用KeiluVision2作为编程工具,用Proteus进行实物制作前的仿真,Keil作为现在主流的单片机编程工作具有操作简单,快捷的优点,同时可以与Proteus联动方便调节和仿真,另用STC-ISPV31将程序下载至单片机上运行。
下面对涉及到的软件作进一步的介绍。
4.2.1Proteus软件介绍
Proteus软件是来自英国Labcenterelectronics公司的EDA工具软件。
Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源代码的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等。
Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。
4.2.2KEIL8051开发工具
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
4.3软件结构图
软件设计的主要功能是完成分时计费,程序流程图如图4.1所示:
图4.1主程序流程图
4.3.1电压电流采集子程序
电压电流采集子程序主要实现对电压电流信号的同步采样,其程序流程图如图4.2所示:
图4.2电压电流子程序图
4.3.2AD转换子程序
AD转换子程序主要是实现将采集的电压电流信号进行AD转换,得到单片机能处理的数据,并计算出直流功率大小,然后锁存功率,电流,电压数据,以供显示。
其程序流程图如图4.3所示:
图4.3AD转换子程序图
5系统调试
随着各种智能电表的应用与普及,这一技术在科学研究,生产过程等领域中发挥着越来越重要的作用。
在科技社会的今天,人们对电表的计精度、稳定性以及综合利用等要求愈来愈高。
因此,对电路的精确调试是必不可少的一步,为保证设计的质量,我们小组对本次设计中的软硬件进行了分块调试。
5.1单片机及LCD1602显示部分
在按照原理图将单片机的最小系统焊接完成后,我们用STC-ISP软件对其进行下载程序的调试,如图5.1所示:
图5.1程序烧写
LCD1602显示部分,在Proteus软件中进行了仿真,运行结果如图5.2所示,在确认仿真可行后,我们调用单独的显示程序,能正常显示。
图5.21602仿真图
5.2万用板电路部分调试
由于焊接的问题,首先需要检测电路是否导通,连接是否通畅。
万用板电路主要分成三块:
电流互感器TA32B-M、电压互感器TV31作为信号转换,将220V转换为电能处理芯片需要的信号,时钟芯片DS12C887进行计时,电能处理芯片ADE7758对转换后的电流电压信号进行处理,计算出负载消耗的有功、无功、视在功率,并将所得信号进行存储。
调试过程中,首先应对电流、电压互感器的输出端信号进行检测,包括信号的大小(是否符合ADE7758所需信号)、波形是否符合要求,另外则应注意检查电流电压互感器与ADE775
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 分时 计费 智能 电表 设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)