Измерение напряжения, тока от солнечной панели с использованием INA219 и ESP-12F

Недавно я начал возиться с ESP-12F, поэтому я новичок здесь. Как стандартный проект новичка, я делаю автономную метеостанцию для своей гостиной. Я хочу использовать солнечные панели для зарядки батарей, которые питают ESP-12F через USB. Я использую ESP-12F в качестве контроллера и отправляю данные в Rpi с помощью MQTT.

Я использую следующие элементы:

  1. ESP-12 F питание от USB
  2. 2,5 Вт 5 В солнечная панель (я хочу подключить две параллельно, но пока использую только одну)
  3. RPi 3B
  4. INA219A для измерения напряжения и тока, генерируемых солнечной панелью.
  5. Диод IN4001 как блокирующий
  6. Датчик температуры и влажности DHT11
  7. Аккумуляторная батарея для зарядки 2 батареек x 2500mAh (это еще не сделано)

Я совершенно сбит с толку соединениями с INA219 и данными, которые он предоставляет. Таким образом, ESP-12F все еще подключен к независимому источнику питания usb, и моя цель сейчас - понять и контролировать напряжение и ток, генерируемые солнечной панелью.

INA219 Vcc, GND, SDA, SCL подключены к ESP-12F. Я могу считывать значения и наблюдать их на последовательном мониторе или панели mqtt.

1. Ниже приведено соединение макетной платы, когда INA219 Vin + НЕ подключен.

INA219 Vin(+) Vin(-) not connected

Измерение напряжения, отправленное через MQTT, выглядит следующим образом:

Игнорируйте график, я слишком много раз подключал / отключал Vin-провод, таким образом, очень причудливые линии.

When INA219 Vin not connected

Текущие соединения следующие:

Солнечная панель (-) --> INA219 Vin (-) и макет для питания светодиода

Солнечная панель (+) --> Только для макетной платы для питания светодиода [INA219 Vin + НЕ подключен]

ESP-12F 3V --> INA219 Vcc

ESP-12F GND --> INA219 GND

ESP-12F D1 --> INA219 SCL

ESP-12F D2 --> INA219 SDA

ESP-12F питается от отдельного источника питания USB

Код, с помощью которого вычисляются значения: Я использовал библиотеку Adafruit_INA219.

  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  power_mW = ina219.getPower_mW();
  loadvoltage = busvoltage + (shuntvoltage / 1000);

Я не понимаю значений, отправленных INA219, и понятия не имею, как их интерпретировать. В этот момент INA219 подключается к ESP-12F 3V power (Vcc) и GND. У него нет никакого Vin. Почему существует напряжение нагрузки -1,9 и ток?

2. Когда INA219 подключены Vin (+) и Vin (-)

INA219 Vin is connected

Когда я подключаю Vin + и Vin- INA219, у меня нет никакого напряжения / тока на макете. Вы можете видеть светодиод, если он выключен. Я не понимаю, почему это происходит. Вся схема на макете становится избыточной, как только я подключаю контакты INA219 Vin к выходным контактам солнечной панели.

Текущие соединения следующие:

Солнечная панель (-) --> INA219 Vin (-) и макет для питания светодиода

Солнечная панель (+) --> INA219 Vin (+) и макет для питания светодиода

ESP-12F 3V --> INA219 Vcc

ESP-12F GND --> INA219 GND

ESP-12F D1 --> INA219 SCL

ESP-12F D2 --> INA219 SDA

ESP-12F питается от отдельного источника питания USB

Значения напряжения и тока в этой точке показаны ниже:

Voltage after INA219 Vin connected

Напряжение нагрузки увеличивается, и разница составляет приблизительно 2,1 В. Это дельта-напряжение соответствует значениям напряжения от солнечной панели при измерении мультиметром в этой точке. Таким образом, я бы предположил, что напряжение нагрузки = текущее напряжение, генерируемое солнечной панелью. Но ток не меняется, и светодиод на макете выключается в тот момент, когда я подключаю INA219 Vin. Таким образом, я предполагаю, что сделал неправильные соединения.

Будет здорово, если вы укажете на мои ошибки и внесете свои предложения!

Спасибо!

, 👍2

Обсуждение

У вас был длинный пост, но все же не хватало много важной информации для диагностики. Будет лучше предоставить схему, чем изображение макета, так как на нем даже нет IN219. Где находится ваш текущий шунт? а у вас есть подтягивающие резисторы для I2C? работает ли ваш I2C? просто напишите свой пост и сосредоточьтесь на одном вопросе, который вы хотите задать, или на том, что вам нужна помощь., @hcheung

Vshunt = Vin+ - Vin- и обычно < 50 мВ или всего несколько мВ, Vbus = Vin - GND и поэтому в вашем случае должно быть около 5 В, напряжение нагрузки должно быть очень близко к VBus. Так что все ваши данные не имеют никакого смысла. Для тока возвращаемое значение является целочисленным для мА, поэтому его нужно разделить на 1000. Поэтому лучше показать свою схему / схему подключения и скетч Arduino., @hcheung


1 ответ


Лучший ответ:

4

Вы подключили V- и V + зонды модуля INA непосредственно к V- и V + солнечной панели. Это означает, что вы соединяете V + с V- от солнечной панели через резистор 0,1 Ом. Это как короткометражка. Солнечная панель перегружается, и напряжение падает. Повезло вам, солнечная панель не может обеспечить больший ток. Если бы это было возможно, то шунтирующий резистор был бы поджарен. РИП ;-). Попробуйте поставить v + и V-последовательно со светодиодом и LED_Resistor.

Solar+ --> IN4001 --> INA+ |no connection| INA- --> LED --> R(LED) --> Solar-

В этом было бы больше смысла. Он покажет вам, сколько тока потребляет светодиод.

Если вы хотите знать, сколько тока может выдавать панель, вам придется построить схему с потенциометром и измерить напряжение между V + и V- панелью. Вы также можете использовать INA для измерения тока через потенциометр. Начните с высокого сопротивления, затем поверните поти в сторону более низкого сопротивления и проверьте, когда напряжение спадет. INA показывает вам ток. Но имейте в виду, что максимальный ток зависит от количества света, которому подвергается панель, и от возраста самой панели. Таким образом, значения будут меняться по мере изменения этих условий.

,