0

我编写了一个 python 代码(树莓派)来接收来自 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 以及其他字节联系起来。请帮助解码上述输出。

4

1 回答 1

0

做一些比率计算:

(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)

但你最好找到设备手册以获取参考。

于 2021-09-13T08:54:47.487 回答