一、系统方案
本系统主要由 STM32 单片机控制模块、AD 转换模块、信号采集处理模块,下面分别论证这几个模块的选择。
1、主控制器件的论证与选择
1.1 控制器选用
单片机比较
方案一:采用传统的 51 系列单片机。
传统的 51 单片机应用广泛,具有使用简便,价格低廉等优点,但是其运算能力较低,片上资源少,处理速度慢,功能相对单一,难以实现较复杂的任务。
方案二:STM32 单片机
采用 STM32H743ZI 单片机作为主控芯片。STM32 Nucleo-144 板为用户提供了一种可负担的灵活方法,通过选择 STM32 微控制器提供的各种性能和功耗特性组合来尝试新概念并构建原型。对于兼容板,内部或外部 SMPS 可显著降低运行模式下的功耗。ST Zio连接器扩展了 ARDUINO®Uno V3 的连接能力,而 ST morpho 接头则提供了简便的方法来扩展 Nucleo 开放式开发平台的功能,并提供多种专用屏蔽。由于集成了 ST-LINK 调试器/编程器,STM32 Nucleo-144 板无需单独的探头。STM32H743ZI 更简洁方便。
综上所述,选择方案二。
1.2 采集系统方案选择
方案一:STM32H743ZI 模数转换模块集成芯片
STM32H743 具有强大的 DMA,和高速、高精度 AD。能否实现自动不间断采集功能。采集的数据暂存于两个缓存空间 BUFF1[1000],BUFF2[1000]。当 BUFF1 存满时,数据存储自动切换到 BUFF2。当 BUFF2 存满时,自动切换到 BUFF1。这样 CPU 可以在数据存储BUFF1 的时候,处理 BUFF2 的数据;数据存储 BUFF2 时,处理 BUFF1 的数据。实现数据不间断采集,不间断处理。
方案二:AD7403 二阶Σ-Δ型调制器
AD7403 是一款高性能的二阶Σ-Δ型调制器,片上的数字隔离采用 ADI 公司的iCoupler®技术,能将模拟输入信号转换为高速单比特数据流。 AD7403 采用 5 V (VDD1)电源供电,可输入±250 mV 的差分信号(满量程±320 mV)。 该差分输入信号非常适合用于在要求电流隔离的高电压应用中监控分流电压。但是根据题目分析识别装置框图所示,不属于工频电流互感器。
综合以上两种方案,选择方案一。
二、系统理论分析与计算
1、系统理论
本分析用电器类别的装置的总体框图如图所示。该设计通过电流互感器来对 7 种电器的电流信号进行逐一和组合采样,将得到的电流信号输入到 STM32H743ZI 的信号输入端,信号在芯片内部实现 A/D 转换,并通过内部运算将电流、电压等各种数据的结果存入指定的寄存器中,当识别用电器时,通过相关系数和皮尔逊算法与学习进来的 128 种可能的情况组成的数据集进行逐一计算比较幅值和形状特征参量。以等待单片机 STM32通过蓝牙模块的串行接口读取,最后将其识别和学习结果通过手机屏幕显示出来。
2、皮尔逊算法计算两种信号形状相似度
皮尔逊相关系数是一个介于-1 和 1 之间的数,广泛用于度量两个变量之间的相关程度。当比较完两种信号的波形幅值大小后,可以通过比较该相关系数比较两种信号的形状相似度。当该相关性强时,相关值趋于 1。当相关性很弱时,相关值趋于 0。在负相关的情况下一个序列的值很高而另一个序列的值低---相关趋势趋于-1。
3、连续周期采样
当 TIME3 定时器产生中断和 TIME4 光耦信号下降沿触发中断时,STM32 采样模块执行连续周期数据采集模式。连续的计算周期在周期和电流通道重复进行(每 50Hz 转换进行一次),从该下降沿到下一次下降沿来这一时间段为一周期,AD 模块通过定时器取该周期中的部分采样值,一共统计三十二个周期的值。将三十二个周期的电流值取平均值存入二维数组中。比较识别时,读取寄存器存入的信号和所识别电器的信号进行逐一比较,得出结果。
三、电路与程序设计
1、电路的设计
(1)系统总体框图
系统总体框图如图所示:系统主要由 STM32H743ZI 采用 AD 模数转换和 flash 功能,与电流互感器和蓝牙模块相连,传入手机读取。
(2)电源
电源由稳压电源和市电组成。为单片机提供+5V,为采集系统提供 220 V 电压,确保电路的正常稳定工作。
2、程序的设计
(1)程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分主要实现在学习模式下,测试并存储用于识别各单件电器的特征参量,在分析识别模式下,实时指示在用电器的类别。
1)用电器特征参量:用电流互感器测量用电器的电流并传入 STM32H743ZI 中并进行数模转换,并存取电流值。
2)显示部分:显示用电器类型。
2、程序设计思路
将用电器接入插排中,用电流互感器测量用电器的电流并传入 STM32H743ZI 中并进行数模转换,并存取电流值。在进行皮尔森算法的比较,得出线性相关系数,根据相关系数得到正接入电路中的用电器的类型。再用蓝牙模块传输到手机端显示。
(2)程序流程图
1、主程序流程图
2、子程序流程图
四、测试方案与测试结果
1、测试方案
(1)硬件测试
用万用表测量是否有短路,以防对芯片造成损伤
(2)软件仿真测试
主要完成系统初始化、内部数据计算、数据显示输出等功能
(3)硬件软件联调
实际测量实时指示用电器的工作状态并显示电源线上的电特征参数,特征参量包括电流,电压和相关系数。
2、测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。在对本设计的电流表进行试验测量时,可用该电流表测量 128 组不同值,然后与实际的电流值进行比较,所得结果如表所列
测试仪器:高精度的数字毫伏表,数字示波器,数字万用表。8
3、测试结果及分析
(1)测试结果
已完成
(2)测试分析与结论
根据上述测试数据,可识别7种电器,包括一件最小电流电器和一件电流大于 8A 的电器,综上所述,本设计达到设计基本要求。
五、参考文献
[1] 谭浩强.C 语言程序设计[M].北京:清华大学出版社,2012
[2] STM32H7xx 中文手册
[3] STM32H743 开发指南-HAL 库版本_V1.1