一、系统方案
本系统主要由 AD 采样模块、显示模块、主控芯片模块组成,下面分别论证这几个模块的选择。
1、采样方案的选择和论证
方案一:使用外置高精度 AD 模块,此方案使得采样分辨率提高,从而进行用电器波形判断并将其输入单片机然后储存于 FLASH 中,但是成本太高且模块的功能过于繁杂,上手难度很大,。
方案二:使用 STM32 内部的 AD 模块,优点是方便,代码实现简单。且内置的 AD 转换模块有 16 位,依据所需采样频率设定的 AD 转换采样过程精度足够,为同时实现其学习和检测功能,能准确实现用电器种类的识别,并同时使其具备了学习功能,可以很好实现我们的目的。
综合考虑,我们选择方案二。
2、显示方案的选择和论证
方案一:采用八位LED数码管显示。此方案软件简单,但是LED数码管耗电量大,驱动它们所需的单片机I/0口太多,并且只能显示有限的数字和字符,不能满足题目的要求。
方案二:采用 OLED 屏。此方案显示字符方便,功耗小,然而屏幕尺寸太小且无法触摸,显示和交互的效果并不好
方案三:选用蓝牙无线传输到手机上的方法,可以多设备地控制
综合上述,我们选择方案三。
3、核心芯片的选择和论证
方案一: 51 系列单片机
51 单片机运用十分广泛,代码实现较为简单,容易上手。然而我们的系统需要大量程序支持,51 运行速度慢,功能也很简单,有明显的缺点,不符合要求。
方案二:MSP430 单片机
MSP430 系列单片机是 TI 公司生产的 16 位的信号处理器,它的内核采用的是RISC 精简指令结构,总共才有 27 条指令,代码执行效率高,还能进行数模或者模数转换。其低功耗的工作模式能够满足系统长期工作的要求。其具有指令简单,功耗低、处理能力强以及片内有较为丰富的资源等优点,但是该单片机数据处理数据能力仅有 16 位,显然不能满足对高精度 AD 数据的处理。
方案三: STM32 单片机
STM32 系列单片机专为高要求的嵌入式应用设计 ARM V7 构架的 Cortex-M3内核。优点很多如:程序都是模块化的,接口相对简单些,因为它自身功能强大,工作速度也快。作为 32 位单片机,它的内部资源,适用范围相比 8 位和 16 位的单片机广得多,尤其是具有 DMA 处理功能。总结就是高性能、低成本、低功耗。
综合上述,我们选择的是 STM32H743ZI 作为主控芯片。
二、理论分析与运算
1、检测电路
电流检测电路:
2、数据筛选
1)波形相关性筛选
根据概率论相关性公式:计算出当前波形 X 和特征波形 Y 的相关系数,当相关系数达到我们所设定的值时,我们取此时的特征波形辨别出该用电器的种类。
2)有效值筛选
在几个波形相似的情况下,我们以有效值作为依据:
当前波形有效值 I(X)= ,各个电器波形有效值 I(A)= .
对比与当前波形有效值 I(X)最接近的电器波形有效值 I(A),判定为该电器。
3) 相位检测
可以根据用电器的容性、感性或者纯阻性的电压与电流之间的相位差作为识别用电器种类的依据。感性原件电压超前电流,容性原件电压滞后电流。
三、电路与程序设计
1、系统总体设计
2、电路设计
本装置通过电流互感器来对 7 种电器的电流信号进行逐一和组合采样,将得到的电流信号输入到 STM32,信号在芯片内部实现 A/D 转换,并通过内部运算将电流、电压等各种数据的结果存入指定的寄存器中,当识别用电器时,通过相关系数和皮尔逊算法与学习进来的 128 种可能的情况组成的数据集进行逐一计算比较幅值和形状特征参量。以等待单片机 STM32 通过蓝牙模块的串行接口读取,最后将其识别和学习结果通过手机屏幕显示出来。
3、程序设计
本设计采用结构化思想,主要分为系统主程序设计、算法部分程序设计、其他功能程序设计、人机交互界面设计。软件设计开发平台使用 Keil uVision5 和STM32 官方库驱动。
1) 设计功能
在分析环节,当某个用电器打开能够读取相关信息并予以显示,在学习模式下需要先擦除存储的数据,然后再进行学习并且存入单片机内部,在判别模式下将当前波形与存储的波形进行对比确定用电器种类,然后进一步判别用电器的档位。对于电器特征参数的学习精度要求很高。通过蓝牙传输到手机上实时显示用电器的工作状态,学习状态,电压、电流等特征参数。
2)设计思路
程序运行后执行系统初始化(,并启动 DMA 数据读取,后查询是否收到学习指令,如收到则进行指令处理:若判别指令为进行电器学习,则执行学习子函数(禁止外部中断,防止此时 DMA 读取波形数据,然后读取 DMA 读取到的数据,将其存到指定电器的扇区,然后更新屏幕显示);若判别指令为进行电器波形删除,则执行删除子函数(将擦除指针值向该电器所在扇区,然后擦除 W25Q64 该扇区);未收到触屏指令则进定时 100ms(防止数据溢出),然后执行各功能函数。若工作于学习模式下,则采样用电器的数据,并且将其写入缓存中;若工作于检测模式,则将当前用电器的数据与之前存入缓存中的数据进行相关性对比,判断用电器的当前状态,然后更新显示状态。在判别模式下,将分别对波形的相似度、有效值、波形相位进行唯一性检测,若三项特征都不匹配则系统判定为判别失败。若第一步判别成功,则开始下一步更加精细的判别。首先甄别各个用电器的连接状态,即判定是否接入电源,若接入电源再判断用电器的工作档位。
主程序流程图:
子程序流程图:
四、测试方案与测试结果
1、测试方案
1)硬件测试
将 7 种不同的用电器单独实验,用于测试并存储他们单独工作时的用电参量。学习过程结束后,再次将单个的用电器插入进行识别。后续逐渐增加用电器的种类,考察识别算法的完整性。
2)软件仿真测试
在 MDK 平台上,利用逻辑分析仪进行仿真,找出软件的 bug,进行修复调试。
2、测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。
3、测试结果及分析
1)测试结果(数据)
单个用电器分别进行检测,结果无误。从两个开始逐渐增加用电器种类,2-7 个的正确率分别为 80% 、60% 、50% 、60% 、70% 、100%
2)测试分析与结论
根据上述测试数据,,由此可以得出以下结论:
1、可以精确识别单个用电器的种类及工作状态
2、实现了基本部分的学习过程
3、发挥部分的部分内容可以实现
综上所述,本设计达到设计要求。
五、参考文献
[1] 李群芳、黄建.单片微型计算机与接口技术.北京:电子工业出版社,2001
[2] 谢自美.电子线路设计·实验·测试.武汉:华中科技大学出版社,2000
[3] 何立民.单片机高级教程:应用与设计.北京:北京航空航天大学出版社,2000
[4] 全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(2003).北京:北京理工大学出版社,2003