# 2021H题-用电器分析识别装置
### 项目简介
本设计为2021年电子设计大赛h题用电器分析识别装置,作品各部分均已重新复刻验证证明无误,可以实现题目要求的全部功能,题目详细要求将会在下面论述,以STM32F407VET6单片机为控制核心,结合高精度三相电能计量芯片HT7038,设计并实现了单相电用电器分析识别装置。本装置采用电压电流互感器获取线路的电参数信息,接入HT7038进行将电流电压等比采样处理,并通过SPI接口将电参数传递给主控芯片STM32,通过对负载工作时的电压、电流、相位、有功功率以及功率因数等电参数特征进行分析和识别,将结果发送至串口屏并进行显示。本装置具有学习和分析监测两种工作模式,在学习模式下,测试并存储同一线路上单件用电器的各种电特征参量;在分析检测模式下,实时显示各种电器的种类和工作状态。对于非线性的电压电流精度可达0.1%,电压电流的有效值计算精度可达0.2%。此外,本系统具有响应速度快,学习效果好的特点。
[项目演示视频在线观看](https://qwe199881010.cn.quickconnect.to/vs/sharing/w3EG3WTe#!aG9tZV92aWRlby01MQ==)
[项目演示视频下载链接](http://gofile.me/6U0Ru/RzgO58QFl)
由于视频下载观看需要链接到我的NAS里,加载速度会略慢,NAS开机时间为每天11:00-21:50,请在本时间段内观看。下面的附件内包含压缩版视频(720p,原版2k),也可以从附件处下载观看。
- - -
### 项目功能介绍
1.设计并制作一个根据电源线电流的电参量信息分析在用电器类别的装置。该装置具有学习和分析识别两种工作模式。在学习模式下,测试并存储用于识别各单件电器的特征参量;在分析识别模式下,实时指示在用电器的类别。
2.基本要求
(1)电器电流范围 5mA ~10.0A,可包括但不限于以下电器:LED 灯泡和 220V灯带、节能灯管、USB 充电器(带负载)、无线路由器、机顶盒、电风扇、热水壶、
电磁炉。
(2)自定可识别的电器种类,总数不低于 7,用序号表示。电流不大于 50mA的电器数不低于 5,包括一件自制电器,编号为 1~5;编号为 7 的电器电流大于 8A。
(3)随机增减在用电器,实时显示可识别电器是否在用和电源线上电流的特征参量,响应时间不大于 2s。特征参量的种类、性质自定。
(4)用电阻,电容和二极管自制 1 号电器,其电流与 2 号电器相同但相位不同,且含有谐波,两者电流差小于 1mA。
3.发挥部分
(1)具有学习功能。清除作品存储的所有特征参量,重新测试并存储指定电器的特征参量。一种电器的学习时间不大于 1 分钟。
(2)随机增减在用电器,实时显示可识别电器是否在用和电源线上电流的特征参量,响应时间不大于 2s。
(3)提高识别电流相同,其他特性不同的电器的能力和大、小电流电器共用时识别小电流电器的能力。
(4)装置在分析识别模式下的工作电流不大于 15mA,可以选用无线传输到手机上显示的方式。
(5)其他
4.说明
图 1 中 A1 和 A2 分别用于测量装置电流和在用电器电流。测试基本要求的电器自带,并安全连接电源插头。不满足基本要求(2)对用电器电流的要求判为违规,不测试。交作品之前完成学习过程,赛区测试时直接演示基本要求的功能。
**5.对于题目的分析(重点,这是我们踩过的坑,也是很多组没有做出来的主要原因)**
![系统框图.png](//image.lceda.cn/pullimage/jxJdKeMkksydUBVyEs0XnxQTUfzhMBx68sNJspMK.png)
**根据本次题目要求里面的几个重点是装置在识别状态下不超过15ma(220v情况下),限制了功率,导致我们不能使用树莓派/fpga,且电源效率要略高,而且题目属于人工智能和仪器仪表混合方向,有一定的计算量,需要较强的核心芯片(STM32F103试了,性能不够用) 我们选用了stm32f407vet6,最终实现效果可以在2s内完成学习和识别。**
**硬件电路要求更加偏向仪器仪表,为了竞赛的快速开发和电路简易性,同时为了满足本次竞赛对于谐波和大电流下小电流的分析识别(即相位角的精准测量)本设计选用了HT7038多功能高精度三相电能计量芯片作为电参数测量模块的核心芯片,该芯片集成了6路二阶 sigma-delta ADC、参考电压电路以及所有功率、能量、有效值、功率因数及频率测量的数字信号处理等电路,能够测量各相有功功率、无功功率、有功能量及无功能量,同时还能测量各相电流、电压有效值、功率因数、相角、频率等参数,外接1000:1电流互感器和电压互感器后,充分满足了本题目要求。**
**此外虽然说市电理论上是220v,但是实际上变化非常大,本组设计了自校正系统(其实就是拓展要求),在测试前准备阶段对参数进行校正和学习,以匹配实际电压和工作情况,这一点很重要,这道题很多组没做出来就是因为这一点。**
**用电器的选择也有一些讲究,尽量选择特征明显的用电器,本组自选的用电器如下:**
| 编号 | 1 | 2 |
| --- | --- | --- |
| 名称 | 自制用电器1(三个62k4w电阻并联) | 自制用电器2(整流桥加三个62k4w电阻,bbc电容并联) |
| 编号 | 3 | 4 | 5 | 6 | 7 |
| --- | --- | --- | --- | --- | --- |
| 名称 | 树莓派4b(无风扇) | 可剪灯带(共50ma电流) | 220v5w节能灯 | 220v工业扇 | 2200w电暖器 |
- - -
### 电路讲解
![QQ图片20211108102432.png](//image.lceda.cn/pullimage/cHr2yJIu0g0YS7eCbJjl2Re54hZf4InK7OA3u2PQ.png)
电路图只有ht7038电路也就是本工程对应电路图,外围电路设计什么的在数据手册上都有,可以自行前往立创商城查阅,这里不多赘述,本次设计只用到了电压和电流的通道1接口,其余多余接口可以浮空不用,由于是仪器仪表类,对于小信号的要求较高,建议多加滤波、隔离电容,数字地,电源地,模拟地要分开并且单点接地。
![pcb.jpg](//image.lceda.cn/pullimage/KERGTJ6TPbEzOcfiu2IVSZFDv5BnCDS1UefrHLfO.jpeg)
设计上其实有一些问题,比如地的环路问题,地一般不应该形成环路,相当于线圈,人员接受杂波信号,此板子由于电子设计大赛的时限性,以腐蚀板的形式完成,相比于普通电路板比较特别,要求比较高可以自己重新画。
**同时由于这是覆铜板,里面有三根线未连接完全,这是飞线,请注意连接**
- - -
### 实物图
![电路板大图.jpg](//image.lceda.cn/pullimage/zj8ndMvfQdCQg33PFNIhwQT66NoDhO3ZNwh0Zjzo.jpeg)
![全套打码.jpg](//image.lceda.cn/pullimage/Sia7RuMmFyWLIDZa17lsz8bLdDQabFK2a0PvH8MA.jpeg)
- - -
### 软件
软件设计思路如图所示:
![软件框图.png](//image.lceda.cn/pullimage/vXYnvZMOjlXVxAQEdJWv6F5vZBZRbnya7YcEC61F.png)
受限于硬件与时间上的条件,我们没有选用adc fft直接提取谐波特征的方案,而是采用了有功功率和无功功率当作特征向量,因其满足线性叠加原理,只需要测得每种用电器的特征向量便可以计算出128种不同情况所对应的特征向量。
1.学习。单片机接受串口屏发来的学习信号,存储到一个2*8的数组里。有一维度是没有任何电器的初始值,计算时需要减去。
2.识别。首先对1-7种电器,采用二进制编码为2^1, 2^2, 2^3, 2^4 ,2^5 ,2^6 ,2^7。对均值滤波后的当前电路特征向量分别与计算出的128种情况进行比较,找出最小欧拉距离所对应的值,然后进行二进制解码得到所含有的电器种类。核心代码如下所示,详细库文件和代码在附件里
```
distance = pow(average[0]/10,2) + pow(average[1]/10,2);
class_min = 0;
for(i = 1;i < (1 <<(TYPE_NUM-1));i++){
CalcFeature[0] =
feature_flash[1][1] * (i &0x01) +
feature_flash[2][1] * ((i>>1)&0x01) +
feature_flash[3][1] * ((i>>2)&0x01) +
feature_flash[4][1] * ((i>>3)&0x01) +
feature_flash[5][1] * ((i>>4)&0x01) +
feature_flash[6][1] * ((i>>5)&0x01) +
feature_flash[7][1] * ((i>>6)&0x01) ;
CalcFeature[1] =
feature_flash[1][2] * (i &0x01) +
feature_flash[2][2] * ((i>>1)&0x01) +
feature_flash[3][2] * ((i>>2)&0x01) +
feature_flash[4][2] * ((i>>3)&0x01) +
feature_flash[5][2] * ((i>>4)&0x01) +
feature_flash[6][2] * ((i>>5)&0x01) +
feature_flash[7][2] * ((i>>6)&0x01) ;
temp_f32 = pow(CalcFeature[0]/10 - average[0]/10,2) + pow(CalcFeature[1]/10 - average[1]/10,2);
if(temp_f32 < distance){
distance = temp_f32;
class_min = i;
}
}
```
- - -
### 总结
(1)感想
四天三夜是对身体与能力的巨大考验,电赛不像其他比赛那样周期那么长,那么有水份。其实之前做东西做项目都没有经历过这种集中式的考验。以前做东西的时候,芯片烧了可以换,方案不行可以改,但是电赛不一样,没有那么多的时间给你浪,只能硬着头皮往下做,所以一开始的方案很重要。同时电赛期间要求每个队友配合,各做各的事情,只要有一个人划水就会很艰难。
(2)遇到的问题:
遇到的问题基本上是调试驱动ht7038芯片遇到的。硬件问题上,因为用的是自己腐蚀的板子,覆铜跟eda上是反着来的,不小心把spi接口的引脚顺序标反了,之前没有意识到,卡了挺久。由于初代的板子没有画电压互感接口。于是又画了一版,但是新版的板子有3根需要跳线的地方,而eda上未连接的提示有点小,导致焊接的时候漏了一条,又卡了一会。还有就是杜邦线的问题,由于使用的是SPI协议,对信号线的要求比较高,一开始用的是杜邦线,导致数据一直不对,当调试的时候手肘碰到了杜邦线发现数据变了,立马意识到是杜邦线的问题(之前也有遇到过类似情况),于是我们立马把杜邦线焊死在板子上,数据就正常了。
### 接线表
- - -
| 种类 | 功能 | 接线序号 |
| --- | --- | ---- |
| UART2 | RX | PA3 |
| | TX | PA2 |
| RCC | IN | PH0 |
| | OUT | PH1 |
| SPI | SCK | PE11 |
| | NSS | PE12 |
| | MOSI | PE13 |
| | MISO | PE14 |
| UART1 | RX | PA10 |
| | TX | PA9 |
25
26
收藏到专辑