Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Измеряем напряжение в импульсе INA226+atmega8

Чт май 06, 2021 13:12:11

Всем привет! Затея измерить сопротивление импульсное Rimp d АКБ автомобильном. Есть для этого метода, Rimp = (Uimp-Uакб)/Iimp, где Uакб - напряжение до импульса, Uimp - напряжение в момент импульса, и Iimp - ток в момент импульса. Импульс длительностью 1 милисекунды. Измеряется все это дело при помощи INA226 c шунтом на 20А /75мВ. Связь с INA226 по I2C частота 100kHz.
Вопрос в том что моем коде опрос INA226, увеличивает время импульса до 40мс по ослику. Убираем работу с INA226 четко работа 1мс. Как быть, отказаться от такой затеи с INA226, перейти на АЦП меги?
Код:
if(newTime - offTime > PAUSE_CHAR-500) { //Если до конца ПАУЗЫ осталось 0,5 сек
            adc_R1_pause=read2Byte(INA226_BUS_VOLTAGE,INA226_I2C_ADDRESS); //замеряем напряжение перед импульсом
            write2Byte(INA226_CONFIGURATION, 1403, INA226_I2C_ADDRESS); //записали в INA226 измерение в режиме триггера, 16avr 140us
            PORTB.2=1; //подали импульс
        }   
if(newTime - offTime > PAUSE_CHAR-499) {
            adc_R2_pause=read2Byte(INA226_BUS_VOLTAGE,INA226_I2C_ADDRESS); //замеряем напряжение в момент импульса
            Iimp=read2Byte(INA226_SHUNT_VOLTAGE,INA226_I2C_ADDRESS); //замеряем ток в имп
            PORTB.2=0; //конец импульса
            write2Byte(INA226_CONFIGURATION, 4497, INA226_I2C_ADDRESS);    //записали в INA226 измерение в режиме неприрывное, 128avr 140us для дальнейшей работы
        }
Ответить