Расшифровка полученных данных от ИС счетчика электроэнергии 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)

Но вам лучше найти руководство к устройству, чтобы получить справочную информацию.

Другие вопросы по тегам