Дело же не в библиотеках, а в самой проге. Чтото нехватает для обновления.
Думаю задержки в 20мс маловато между измерениями.
Попробуй 1000мс поставить.
ааа, ну вам виднее…
Вариантов может быть два: не считываются данные из датчика или все зависает. Проверить несложно - в самом конце loop() вставить строку
Serial.println(current_mA) ;
И смотреть в мониторе порта, что там выдается - есть ли это сообщение, обновляется ли оно и какие данные выводит
Думаю не успевает вычитывать при 20мс задержки.
дык, она наверняка блокирующая.
Кстати, вот такое получил недавно:
Отлично работает, хорошо видно и стоит копейки (буханка хлеба).
Да и похрен, там больше ничего в коде не выполняется.))
А с точьностью как? Я в будущем хочу вольтаж перевести в давление.
Скорее всего зависает при первом считывание. Остается понять почему.
/* ТЕСТ МОНИТОРА ТОКА (МОЩНОСТИ) 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);
}
млля…
залей и посмотри
это работает
Что написали я добавил. В мониторе порта вышло:одна дата время и квадратики добесконечности
Вот у этого разница показаний с мультиметром 10мВ:
вообщем тут опять, к сожалению, клиника воскресная
в мониторе порта скорость 115200 поставил?
не не работает
нет 9600
Работает только внрхняя строка(. Заказал новый. Поэтому приходится мудрить.
На втором фото счетчик добесконечности