目录
WiFi物联网智能插座硬件设计的重点就是电能计量,为此单独写一篇博文讲解电量计量的设计方案和实现原理。
电量计量选用上海贝岭的BL0942芯片,最主要有原因是:硬件方案设计简单、计量精度不错且免校准、价格便宜以及软件驱动方法简单。
1、芯片功能
BL0942 能够测量电流、电压有效值、有功功率、有功电能量等参数,可输出快速电流有效值(用于过流保护),以及波形输出等功能,外围元件满足一定条件下可以免校准,当然BL0942 也是支持校准的。
芯片特性如下:
- 两路独立的 Sigma-Delta ADC,一路电流和一路电压。
- 电流有效值范围(10mA\~30A)@1mohm。
- 有功电能(1w\~6600w)@1mohm\@220V 。
- 可输出电流、电压有效值,快速电流有效值,有功功率。
- 批次出厂增益误差小于 1%,外围元件满足一定条件下可以免校准。
- 电流通道具备过流监控功能,监控阈值及响应时间可设置。
- 电压/电流过零信号输出。
- 内置波形寄存器,可输出波形数据用于负载类型分析。
- SPI(最快速率支持 900KHz)/UART(4800-38400bps)通信方式(TSSOP14L 封装支持最多 4 片级联 UART通信)。
- 电源掉电监测,低于 2.7V 时,芯片进入复位状态。
- 内置 1.218V 参考电压源 。
- 内置振荡电路,时钟约 4MHz 。
- 芯片单工作电源 3.3V,低功耗 10mW(典型值) 。
- SSOP10L/TSSOP14L 封装。
本项目选用SSOP10L封装,UART驱动。
2、性能指标
3、寄存器说明
本项目通过UART总线读取或设置BL0942芯片寄存器,寄存器说明如下图所示:
4、UART通信协议
BL0942芯片UART通信特性如下:
- 通过管脚 SEL 选择,与SPI 复用,UART模式SEL=0。
- 芯片工作在从模式。
- 半双工通讯,波特率可软硬件配置为 4800bps,9600bps,19200bps,38400bps。
- 8-bit 数据传输,无校验位,停止位 1 。
- 支持数据包读取。
TSSOP14L 封装可支持器件片选功能,硬件片选地址管脚为[A2_NCS,A1],可选器件 0\~3。可支持 4 片 BL0942 挂在 UART 总线上进行数据通信,只占用 MCU 的一个 UART 接口。
在UART通信模式下,先发送 8bit 识别字节(0x58) 或(0xA8),(0x58)是读操作识别字节,(0xA8)是写操作识别字节,然后再发送寄存器地址字节,决定访问寄存器的地址(请参见 BL0942 寄存器列表),一帧数据传送完成,BL0942 重新进入通信模式。
4.1、写操作帧格式和时序
帧结构有两种,写操作帧和读操作帧。
写操作帧格式如下所示:
主机UART 写数据时序如下图所示,主机先发送命令字节{1,0,1,0,1,0,A2,A1},然后发送需要写入数据的寄存器字节(ADDR),接下来依次发送数据字节(低字节在前,高字节在后,数据有效字节不足 3 字节的,无效位补 0),最后校验和字节。
{1,0,1,0,1,0,A2,A1}为写操作的帧识别字节。假设{A2,A1}=10,器件地址 2,帧识别字节为0xAA。
ADDR 为写操作对应的 BL0942 的内部寄存器地址。
CHECKSUM 字节为({1,0,1,0,1,0,A2,A1}+ADDR+DATA[7:0]+DATA[15:8]+DATA[23:16])&0xFF 取反。
4.2、读操作帧格式和时序
读操作帧格式如下所示:
主机UART 读数据时序如下图所示,主机先发送命令字节{0,1,0,1,1,0,A2,A1},然后发送需要读取的寄存器地址字节(ADDR),接下来 BL0942 依次发送数据字节(低字节在前,高字节在后,数据有效字节不足 3 字节的,无效位补 0),最后校验和字节。
{0,1,0,1,1,0,A2,A1}为读操作的帧识别字节,假设{A2,A1}=10,器件地址 2,帧识别字节为0x5A。
ADDR 为读操作对应的 BL0942 的内部寄存器地址。
CHECKSUM 字节为({0,1,0,1,1,0,A2,A1}+ADDR+DATA[7:0]+DATA[15:8]+DATA[23:16])&0xFF 取反。
注意:SSOP10L 封装的器件地址是 0,即{A2,A1}=00。
时序要求如下图所示:
4.3、读取全电参数数据包
本项目读取BL0942电能计量参数,就是读取全电参数数据包。
通过命令“{0,1,0,1,1,0,A2,A1}+