解码从 ATM90E32AS 电能表 IC 接收到的数据
Decoding the received data from ATM90E32AS energy meter IC
我写了一个python代码(raspberry pi)来接收来自ATM90E32AS电表IC的电压、电流和功率值。我正在使用 spidev 库与电表 IC 进行 SPI 通信。我初始化了两个字节数组(每个 4 字节宽)用于读取和写入能量计 IC,如
writeBuffer = bytearray ([0x00,0x00,0x00,0x00])
readBuffer = bytearray ([0x00,0x00,0x00,0x00])
例如读取有源R相电压我初始化寄存器值如
VrRead_Reg = bytearray ([0x80, 0xD9])
然后我尝试使用以下子程序将上述值写入 IC 以读取 R 相电压
def Vr_read():
writeBuffer[0] = VrRead_Reg[0]
writeBuffer[1] = VrRead_Reg[1]
#print(writeBuffer)
readBuffer = spi.xfer(writeBuffer)
print("Vr:",readBuffer)
time.sleep(0.5)
我得到的输出类似于
Vr: [255,255,89,64]
Vr: [255,255,89,170]
Vr: [255,255,89,220]
Vr: [255,255,89,1]
Vr: [255,255,89,10]
我测量了电源电压,显示为 230V。然后我尝试将上述输出与测得的电压相匹配。这里第三个字节89对应230V。然后我使用自耦变压器改变电压,这次 220V 第三字节值变为 85,210V 变为 81,100V 变为 39,依此类推。
我不知道如何将 89 与 230V 以及其他字节相关联。请帮忙解码上面的输出。
做一些比率计算:
(consider the max value of a byte is 255)
255 / 89 * 230 = 658.99 (approximately 660V)
85 / 255 * 660 = 220(220V)
81 / 255 * 660 = 209.65(210V)
39 / 255 * 660 = 100.94(100V)
不过你最好找设备说明书参考一下。
我写了一个python代码(raspberry pi)来接收来自ATM90E32AS电表IC的电压、电流和功率值。我正在使用 spidev 库与电表 IC 进行 SPI 通信。我初始化了两个字节数组(每个 4 字节宽)用于读取和写入能量计 IC,如
writeBuffer = bytearray ([0x00,0x00,0x00,0x00])
readBuffer = bytearray ([0x00,0x00,0x00,0x00])
例如读取有源R相电压我初始化寄存器值如
VrRead_Reg = bytearray ([0x80, 0xD9])
然后我尝试使用以下子程序将上述值写入 IC 以读取 R 相电压
def Vr_read():
writeBuffer[0] = VrRead_Reg[0]
writeBuffer[1] = VrRead_Reg[1]
#print(writeBuffer)
readBuffer = spi.xfer(writeBuffer)
print("Vr:",readBuffer)
time.sleep(0.5)
我得到的输出类似于
Vr: [255,255,89,64]
Vr: [255,255,89,170]
Vr: [255,255,89,220]
Vr: [255,255,89,1]
Vr: [255,255,89,10]
我测量了电源电压,显示为 230V。然后我尝试将上述输出与测得的电压相匹配。这里第三个字节89对应230V。然后我使用自耦变压器改变电压,这次 220V 第三字节值变为 85,210V 变为 81,100V 变为 39,依此类推。
我不知道如何将 89 与 230V 以及其他字节相关联。请帮忙解码上面的输出。
做一些比率计算:
(consider the max value of a byte is 255)
255 / 89 * 230 = 658.99 (approximately 660V)
85 / 255 * 660 = 220(220V)
81 / 255 * 660 = 209.65(210V)
39 / 255 * 660 = 100.94(100V)
不过你最好找设备说明书参考一下。