Расшифровка полученных данных от ИС счетчика электроэнергии ATM90E32AS
Я написал код на Python (raspberry pi) для получения значений напряжения, тока и мощности от микросхемы счетчика энергии ATM90E32AS. Я использую библиотеку spidev для связи SPI с ИС счетчика энергии. Я инициализировал два байтовых массива (каждый размером 4 байта) для чтения и записи микросхемы счетчика энергии, например
writeBuffer = bytearray ([0x00,0x00,0x00,0x00])
readBuffer = bytearray ([0x00,0x00,0x00,0x00])
Например, при чтении активного напряжения фазы R я инициализировал значения регистра, такие как
VrRead_Reg = bytearray ([0x80, 0xD9])
И я пытаюсь записать указанное выше значение в ИС, используя следующую подпрограмму для чтения напряжения фазы 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]
Я измерил напряжение в сети, оно показывает 230 В. Затем я пытаюсь сопоставить указанный выше выход с измеренным напряжением. Здесь третий байт 89 соответствует 230 В. Затем я использовал вариак, чтобы изменить напряжение, на этот раз для 220 В третье байтовое значение становится 85, для 210 В - 81, а для 100 В - 39 и так далее.
Я не знаю, как соотнести 89 с 230В, а также с другими байтами. Пожалуйста, помогите расшифровать вышеприведенный вывод.
1 ответ
Сделайте некоторый расчет соотношения:
(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)
Но вам лучше найти руководство к устройству, чтобы получить справочную информацию.