Не работает обновление данных

Дело же не в библиотеках, а в самой проге. Чтото нехватает для обновления.

Думаю задержки в 20мс маловато между измерениями.
Попробуй 1000мс поставить.

ааа, ну вам виднее…

Вариантов может быть два: не считываются данные из датчика или все зависает. Проверить несложно - в самом конце loop() вставить строку

Serial.println(current_mA) ;

И смотреть в мониторе порта, что там выдается - есть ли это сообщение, обновляется ли оно и какие данные выводит

2 лайка

Думаю не успевает вычитывать при 20мс задержки.

дык, она наверняка блокирующая.

Кстати, вот такое получил недавно:

Отлично работает, хорошо видно и стоит копейки (буханка хлеба).

1 лайк

Да и похрен, там больше ничего в коде не выполняется.))

А с точьностью как? Я в будущем хочу вольтаж перевести в давление.

Скорее всего зависает при первом считывание. Остается понять почему.

/*      ТЕСТ МОНИТОРА ТОКА (МОЩНОСТИ) INA226      */
#include "LiquidCrystal_I2C.h"                                                      //  подключение библиотеки LCD дисплея
#include  "INA226a.h"                                                               //  подключение библиотеки датчика

#define ADDRESS_INA226      0X40                                                    //  адрес датчика по шине I2C
#define SET_OVER_VOLTAGE    4400                                                    //  уставка превышения по напряжению шунта (чуть больше 1А)

//  Объекты
LiquidCrystal_I2C lcd(0x27, 16, 2);
INA226_Class  sensor;

int8_t Rsh = 10;                                                                    //  сопротивление шунта в милиОмах
uint8_t stateSensor = 0;
bool    answerDevice;

void setup()
{
  Serial.begin(115200);
  lcd.begin();                                                                      //  настройка дисплея
  lcd.backlight();                                                                  //  включение подсветки
  lcd.clear();                                                                      //  очистка экрана
  lcd. print("  TEST INA226");                                                      //  вывод надписи
  delay(1000);                                                                      //  пауза 1 секунда
  lcd.clear();                                                                      //  очистка экрана
  lcd. print("Sensor INA226");                                                      //  вывод надписи
  lcd.setCursor(2, 1);                                                              //  переход на 2 строку
  answerDevice = sensor.begin(ADDRESS_INA226);                                      //  инициализация датчика INA226
  if (answerDevice == true) lcd.print("   found");                                  //  если датчик присутствует на шине, то выводим надпись "Датчик найден""
   else 
     {
       lcd.print(" isn't found");                                                   //  иначе выводим надпись "Датчик не найден"
       while(1);                                                                    //  и зависаем!
     }                                       
  sensor.setModeDevice(MODE_SHUNT_CONTINUOUS, ADDRESS_INA226);                      //  установка режима "Измерение Ush, непрерывно"
  sensor.setAveraging(AVERAGING_64, ADDRESS_INA226);                                //  установка усреднения, равного 64
  sensor.setBitExcess(SHUNT_VOLTAGE_OVER, ADDRESS_INA226);                          //  установка режима тревоги "Превышение по Ush"
  sensor.setAlertLimit(SET_OVER_VOLTAGE, ADDRESS_INA226);                           //  запись в регистр сравнения уставки
  delay(2000);                                                                      //  пауза 2 секунда
  lcd.clear();                                                                      //  очистка экрана
}

void loop()
{
  int16_t kodVoltRaw = sensor.getVoltShuntRaw(ADDRESS_INA226) ;                  //  получение "сырого кода" напряжения шунта + корректировка
  lcd.setCursor(0, 0);                                                              //  переход на первую строку
  lcd.print("Raw = 0x");                                                            //  вывод сырого кода
  lcd.print(kodVoltRaw, HEX);                                                       //  напряжения шунта
  lcd.print("     ");                                                               //  затираем лишние символы (возможно не потребуется)
  lcd.setCursor(0, 1);                                                              //  переход на вторую строку
  lcd.print(millis());                                                              //  начало вывода тока
  delay(200);
}

млля…
залей и посмотри
это работает

1 лайк

Что написали я добавил. В мониторе порта вышло:одна дата время и квадратики добесконечности

Вот у этого разница показаний с мультиметром 10мВ:

https://aliexpress.ru/item/10000023623022.html

вообщем тут опять, к сожалению, клиника воскресная
в мониторе порта скорость 115200 поставил?

не не работает

нет 9600

Работает только внрхняя строка(. Заказал новый. Поэтому приходится мудрить.

На втором фото счетчик добесконечности