Получение данных с INA219

Доброго времени суток пытаюсь получить данные с INA219 при помощи такого кода

Спойлер
#include <Adafruit_INA219.h>    // Подключаем библиотеку Adafruit_INA219 

Adafruit_INA219 ina219;         // Создаем объект ina219

void setup(void) 
{
  Serial.begin(115200);         // Инициализируем последовательную связь на скорости 115200
  uint32_t currentFrequency;    // Создаем переменную
    
// По умолчанию при инициализации будет использоваться самый большой диапазон (32 В, 2 А)
// Проверка инициализации модуля INA219

  if (! ina219.begin()) {       
    Serial.println("Failed to find INA219 chip");  
    while (1) { delay(10); }
  }
   
  Serial.println("Measuring voltage and current with INA219 ..."); // Отправка сообщение
}

void loop(void) 
{
  float shuntvoltage = 0;     // Создаем переменную shuntvoltage 
  float busvoltage = 0;       // Создаем переменную busvoltage 
  float current_mA = 0;       // Создаем переменную current_mA 
  float loadvoltage = 0;      // Создаем переменную loadvoltage
  float power_mW = 0;         // Создаем переменную power_mW 
  float resist = 0;

  shuntvoltage = ina219.getShuntVoltage_mV();       // Получение напряжение на шунте 
  busvoltage = ina219.getBusVoltage_V();            // Получение значение напряжения V
  current_mA = ina219.getCurrent_mA();              // Получение значение тока в мА
  power_mW = ina219.getPower_mW();                  // Получение значение мощности
  loadvoltage = busvoltage + (shuntvoltage / 1000); // Расчет напряжение на нагрузки
  resist = loadvoltage/(current_mA/1000);
  // Поочередно отправляем полученные значение в последовательный порт.
  Serial.print("Bus Voltage:   "); Serial.print(busvoltage); Serial.println(" V");
  Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
  Serial.print("Load Voltage:  "); Serial.print(loadvoltage); Serial.println(" V");
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");
  Serial.print("Power:         "); Serial.print(power_mW); Serial.println(" mW");
  Serial.print("resist:         "); Serial.print(resist); Serial.println(" om");
  Serial.println("");

  delay(2000);   // Пауза
}```

подключен датчик последовательно до предполагаемой нагрузки, и соответственно цель померить этим датчиком его сопротивление по закону ома. Но вся оказия заключается в том, что предполагается мерить сопротивление 10 - 20 ом, а мои результаты на тестовом резистре с заводским сопротивлением в 860, равняются 680 ±, и в общем ленейная погрешность не так пугает как разница этих значений скрин монитора серийного порта прилагается.

Спойлер

соответственно вопрос… есть ли решение у этой проблемы? может стоит на модуле шунт перепаять? или же это в норме погрешности и измерять столь малое сопротивление таким образом - извращение?

стр. 34 ?

1 лайк

схема включения какая? а то меня отрицательные величины сопротивления изумили, как это?

Хотелось бы еще узнать, в чем именно Вы видите проблему.

Тк busvoltage напряжение на шине, а не на нагрузке, и как я изначально понял, напряжение на нагрузке вычисляется по Закону напряжения кхиргофа. Так советуют делать в библиотеке Adafruit.

Отрицательные сопротивления появляются от отрицательных токов… как я помню из тоэ это не должно иметь глобального смысла, кроме токого что изначально мы выбрали не правильное условное направление тока… соответственно, я думал в будущем просто брать модуль… а схема соответственно такая: резистор одним входом на земле, другой подключен к vin+, соответственно vin- подключен к + 5 v, земля и питание общее как для питания датчика, так и для питания МК и соответсвующего резистра.

Проблема в том что значения меняются в слишком большом диапозоне, ибо надо мерить сопротивление 10-20 ом а они помещаются полностью между двумя эдентичными измерениями. и проблема в том что не получается вычислить правильное сопротивление.

Как напряжение на шине может быть меньше напряжения на нагрузке?
Вам в первом посте на это (ИМХО) указали…

Нужно пользоваться не библиотекой адафрут,а нормальной библиотекой, взять учебник по физике,класса 7го и прочитать соответствующий раздел

то -есть ты изобрёл схему подключения, перепутал вход с выходом и потом начинаешь с этим бороться, оригинально. Включи как написано в даташите и не морочь нам голову

По моему это около погрешности. Разрешение для напряжения на шунте 0,01 мВ, Вы измеряете 0,70 мВ, что уже дает в вашем случае погрешность около 10 Ом на 600 Ом