基于单片机的家用智能电表设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EXCHANGE OF EXPERIENCE 经验交流
摘要:论文设计了一种基于单片机系统的家用智能电表。
该电表通过ADE7755芯片进行电能采样,时钟芯片DS1302进行计时,同时利用DS18B20数字温度传感器检测室内的温度,通过按钮查询电量。
液晶显示屏可将相关信息显示在屏幕上。
此外,还能够将本月实时用电量与电力部门阶梯电量进行比较,当用户电量超过相应的阶梯值时,系统报警,提示用户节约用电,用户可通过按键消除报警信息。
本系统对提高居民节电意识,实现节能减排具有重要意义。
关键词:电量;DS1302;节能
智能电表是智能电网数据采集的基本设备之一,承担着原始电能数据采集、计量和传输的任务,是实现信息集成、分析优化和信息展现的基础。
它通常是由测量单元、数据处理单元等组成的仪表,具有电能计量、信息存储及处理、实时监测等功能。
国内使用的电能表多为单向交互,即通过有线或者无线的方式和电力系统交互,缺少与电力用户之间的交流,电力用户无法在本地获得自己的用电信息,无法查询每月即时的用电量。
如果家庭用户能够及时了解家庭的用电情况,就会使产生节电意识,从而使家庭每月电费开支下降,达到节能降耗的目的[1]。
因此,本文研究和设计具有与用户交互能力的智能电表系统,对提高居民节电意识,实现国家节能减排目标、推动城市现代化建设具有重要意义。
一、系统概述
系统的结构框图如图1所示。
本系统的主要核心是单片机AT89C52,用按键模拟ADE7755的脉冲输出到单片机,此脉冲的个数可以用来计量电能,并使用存储器件AT24C02存储总用电量,月初电量以及月内实时用电量。
在时间计量上采用了时钟芯片DS1302,同时利用测温器件DS18B20进行室内温度的测量。
液晶显示屏上显示时间,年月日以及星期信息显示当前室内的温度;当本月用电量超过相应阶梯电量的上限,会显示某一阶梯电量已满,请节约用电,并点亮相应的报警指示灯。
通过功能按键,可清除报警画面、进行本月用电量的查询以及调整时间信息。
图1 系统结构框图
二、硬件设计
2.1 电能采集模块。
电能采集模块将用电时的电压电流信号,转化为合适的小信号,输入到ADE7755芯片内部进行数据处理,然后由该芯片将处理好的电能信息送入单片机。
单片机通过对输入信号的计数处理,将脉冲数据转化为电能信息进行显示。
ADE7755是一种高准度电能测量集成电路,只在基准源和ADC中使用模拟电路,其它信号处理都使用了数字电路,因此在恶劣环境下能保持极高的准确度和长期的稳定性[2]。
引脚F1和F2输出较低频率的有功功率的平均值,一般用来直接驱动电能表的字轮,而CF输出较高频率的有功功率瞬时值,用于校验和单片机接口。
2.2 时钟模块。
DS1302是美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路。
它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,采用三线接口与单片机进行通信。
DS1302的引脚中X1和X2是振荡源,外接32.768kHz晶振;RST是复位/片选端,输入信号,在读、写数据期间,必须为高;SCLK为时钟输入端,控制数据的输入输;I/O为串行数据输入输出端[3]。
在连接时,DS1302仅有SCLK,I/O,RST三个端子与单片机相连。
2.3 显示模块。
考虑到汉字显示的需要,因此本设计中采用12864点阵图形液晶显示模块。
12864液晶显示模块内部控制器采用ST7920,硬件电路结构和程序与其他控制器相比要简洁得多。
它能够同时显示8×4行16×16点阵的汉字,也可完成点阵图形的显示。
其中D0-D7为数据端,可以通过数据端写入命令或是数据;RS为高电平时选择数据寄存器,为低电平时选择指令寄存器,串口通讯时为串行片选信号端;R/W为高电平时进行读操作,低电平时进行写操作,串口通讯时为串行数据口;EN为使能端,下降沿使能,也是串行同步时钟端[3];PSB在ST7920中用来进行串并口模式的选择,高电平为并行,低电平为串行。
2.4存储模块。
AT24C02是一种I2C接口的EEPROM器件,它具有256×8位的存储容量,工作于从器件方式。
它具有接口方便,体积小,掉电数据不丢失的特点,应用十分广泛。
[2] A0、A1和A2为地址线,用于多个器件级联时设置器件地址,如果只有一片AT24C02,可将此三端接电源;WP引脚为写保护端,接Vcc时,所有内容都被写保护,只能读,接GND时,可正常的读写数据;SDA为双向串行数据线,用于器件所有数据的接收和发送;SCL是时钟线,用于产生所有器件接收和发送数据的时钟。
虽然本系统选用的单片机并无I2C总线接口,但是可用单片机的两根I/O线来实现此总线功能,即SCL和
基于单片机的家用智能电表设计
陈 源 李海娜 唐宏伟
◆
信息系统工程 │ 2018.7.20
114
EXCHANGE OF EXPERIENCE 经验交流
SDA分别与单片机的I/O相连,再通过软件实现I2C总线功能。
2.5温度模块。
温度检测模块使用常见的DS18B20数字温度传感器,它接线方便,可根据应用场合的不同而改变其外观,体积小,耐磨耐碰。
该数字温度传感器在与微处理器相连时仅需要一条接口线即可实现通信,测量结果以9-12位数字量方式串行传送。
DS18B20仅有DQ端子与单片机相连。
本设计中的电表的电能检测,通过脉冲计数来完成。
由电能计量芯片发来的脉冲数据输出到P3.4并进行计数,达到相应的数值后,总电量加0.1度。
阶梯用电量的报警提示由显示屏闪烁和点亮不同颜色的指示灯来实现,报警时显示屏的闪烁可通过清除报警按钮停止。
功能按钮1能选择时间设定的对象是年、月、日,还是星期、时,分;功能按钮2能实现时间的调整;功能按钮3能实现本月电量查询功能;功能按钮4可以清除报警时屏幕闪烁。
三、软件设计
本系统采用C语言进行程序设计。
为了实现相应的电路功能,分别编制了:时钟子程序,温度子程序,存储子程序等。
主程序流程图如图2所示。
3.1时钟子程序。
系统运行时,对时钟芯片首先进行初始化,然后从芯片存储时间数据的地址中读出时间,年月日和星期等信息,将读出的数据赋给时间数据存放数组,再把数组的数据处理成要显示的时间信息,最后将处理好的数据送入显示子程序[4]。
时间调整时通过记录按键的次数来确定要调整的是哪个对象,再利用调节按钮,每按一次,相应的数据增一,到了一定的数值后,再通过软件置数,重新开始做加法。
图2主程序流程图
3.2温度检测子程序。
对于温度检测功能的实现,首先是器件的初始化,开始测温,然后跳过读序列号的操作,启动温度转换。
接着再次初始化跳过读序列号的操作,读取温度寄存器,并对读上来的数据进行处理,将其转为十进制温度信息,并送入显示器进行显示。
3.3 存储子程序。
发送数据时,先启动总线,然后发送器件地址,收到应答后再发送一个字节要传输的数据,收到应答后停止总线并延时等待芯片内部自动处理数据完毕,再发送下一个字节的数据;接收数据时,也是先启动总线并发送器件地址,收到应答信号后,发出重复启动信号并发送器件地址,然后开始接收数据,可接收多个字节的数据,在收到最后一个字节的数据后,发送非应答信号并停止总线。
四、仿真结果与结论
将所述系统在单片机开发板中连接好电路,并加载相应的HEX文件,系统可以正常地显示时间以及温度信息;通过按键,可以调整日期和时钟,并可查询本月实时电量;当本月用电量超过某一阶梯电量时,显示屏闪烁并点亮相应的指示灯;可通过复位按键清除屏幕闪烁报警。
时间及温度的显示结果如图3所示;用电量达到第二阶梯电量以上时的报警界面如图4所示。
图3时间温度显示界面
图4报警显示界面
本文设计了对用电量可供用户实时查询的电表,当用户本月的用电量达到电力部门的某一计费阶梯时,系统会通过闪屏和点亮指示灯来提醒用户节约用电。
同时还可以显示时间以及室内的温度。
本系统测量原理简单,使用方便,对提高用户的节电意识有较大的帮助,具有实用的价值。
H
参考文献
[1]陈杰.智能电表的设计和实现[D].浙江工业大学,2011:3-4.
[2]王庆芬,秦华,李文娟.基于单片机的智能电表设计[J].电子制作,2014,04:25.
[3]徐爱钧,徐阳.Keil C51单片机高级语言应用编程与实践[M].电子工业出版社,2014.
[4]陈源.具有温湿度检测功能的电子时钟设计[J].信息系统工程,2017,01:74-75.
(项目来源:湖南省教育厅一般项目“智能电表系统的设计与研究”(项目编号:15C1243))
(作者单位:邵阳学院电气工程学院)
信息系统工程 │ 2018.7.20115。