我写了一个python代码(raspberry pi)来接收来自ATM90E32AS电能表IC的电压、电流和功率值。Iam使用spidev库与电能表IC进行SPI通信。我初始化了两个字节数组(每个字节宽4个字节),用于读取和写入电能表IC,如下所示
writeBuffer = bytearray ([0x00,0x00,0x00,0x00])
readBuffer = bytearray ([0x00,0x00,0x00,0x00]) 例如,读取有效R相电压I初始化了寄存器值,如下所示
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以及其他字节联系起来。请帮助解码上面的输出。
发布于 2021-09-13 08:54:47
做一些比率计算:
(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)但是你最好找到设备手册来获取参考。
https://stackoverflow.com/questions/69158942
复制相似问题