首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATM90E32AS电能表IC接收数据的解码

ATM90E32AS电能表IC接收数据的解码
EN

Stack Overflow用户
提问于 2021-09-13 07:40:38
回答 1查看 41关注 0票数 0

我写了一个python代码(raspberry pi)来接收来自ATM90E32AS电能表IC的电压、电流和功率值。Iam使用spidev库与电能表IC进行SPI通信。我初始化了两个字节数组(每个字节宽4个字节),用于读取和写入电能表IC,如下所示

代码语言:javascript
复制
writeBuffer = bytearray ([0x00,0x00,0x00,0x00])
readBuffer = bytearray ([0x00,0x00,0x00,0x00]) 

例如,读取有效R相电压I初始化了寄存器值,如下所示

代码语言:javascript
复制
VrRead_Reg = bytearray ([0x80, 0xD9])

并尝试使用下面的子程序将上述值写入IC,以读取R相电压

代码语言:javascript
复制
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)

我得到的输出如下

代码语言:javascript
复制
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以及其他字节联系起来。请帮助解码上面的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-13 08:54:47

做一些比率计算:

代码语言:javascript
复制
(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)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69158942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档