• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 и INA 226

CodeNameHawk

Moderator
Команда форума
Я и говорю что надо скачать через управление библиотеками в самой IDE, а не искать по левым ресурсам.
Мне не надо, я умею пользоваться поиском.
Что так, что так путь на githab.
Вы упускаете главное, подойдёт не та библиотека что лежит на видном месте, а та что применил автор, проект которого пытается тс собрать.
 

sergmetrolog

New member
Скомпилирол без ошибок, но не тут то было. При подключении аккума к ina 226 для измерения сильно греются провода, как будто КЗ. Всё проверил на несколько раз.... :unsure:. Да и на виджете blynk ничего...
 

ghost21

Member
При подключении аккума к ina 226 для измерения сильно греются провода, как будто КЗ.
Как подключали? Плюс аккумулятора на IN+, а минус на IN-? Если да, то поздравляю, у вас не "как будто КЗ", а реально КЗ через шунт сопротивлением 0,01 Ом
 

sergmetrolog

New member
Всё разобрался, инструкцию нужно было снача прочитать:ROFLMAO:. Спасибо большое.
 

Daiman

New member
Всё разобрался, инструкцию нужно было снача прочитать:ROFLMAO:. Спасибо большое.
а подскажите мне пожалуйста, какую библиотеку все же использовали? я этот же скетч скачал у того же автора, который его на ютубе использовал, и в коментах он специально людей стебёт, и не говорит, что за библиотека.
 

Daiman

New member
Всё разобрался, инструкцию нужно было снача прочитать:ROFLMAO:. Спасибо большое.
смотрите, я приложу этот же скетч и скрин с ошибками от него, в чём причина ошибки? подскажите пожалуйста, я в этом не понимаю.

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// #define BLYNK_PRINT Serial
char auth[] = "9pRo9pRoHzGs9pRoHzGs7v6UlnOsP";
char ssid[] = "Home Wi-Fi 2.4";
char pass[] = "8888888888";
#include <SimpleTimer.h>
SimpleTimer timer;
#include <Wire.h>
#include <INA226.h>
INA226 ina;
double Voltage;
#define RELE D7
bool rele;
void setup() {
// Serial.begin(115200);
pinMode(RELE, OUTPUT);
Wire.begin(D1, D2); /* SCL=D1 и SDA=D2 */
Blynk.begin(auth, ssid, pass);
ina.begin(0x44);
ina.configure(INA226_AVERAGES_1, INA226_BUS_CONV_TIME_1100US, INA226_SHUNT_CONV_TIME_1100US, INA226_MODE_SHUNT_BUS_CONT);
// ina.calibrate(0.01, 4);
timer.setInterval(1000L, getSendData); }
void loop() {
timer.run();
Blynk.run(); }
void getSendData() {
Voltage = ina.readBusVoltage();
// Serial.print("Voltage: "); Serial.println(Voltage, 5);
Blynk.virtualWrite(10, Voltage); }
BLYNK_WRITE(V0) {
rele = param.asInt();
digitalWrite(RELE, rele); }
 

Вложения

sergmetrolog

New member
В продолжении темы, нашёл новый скетч, всё хорошо компилируется, и даже измеряет напряжение и ток, но только 1,5-2 минуты, потом esp отваливается от wifi. Питанием переключаешь и опять на пару минут только хватает.

Вот скетч:
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <INA226_WE.h> //https://github.com/wollewald/INA226_WE
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp8266.h>

#define BLYNK_TEMPLATE_ID "************"
#define BLYNK_TEMPLATE_NAME "DC Energy Meter"
char auth[] = "************";
char ssid[] = "************";
char pass[] = "************";

#define I2C_ADDRESS 0x40
INA226_WE ina226 = INA226_WE(I2C_ADDRESS);

float shuntVoltage_mV = 0.0;
float Load_Voltage = 0.0;
float Source_Voltage = 0.0;
float Current = 0.0;
float Power = 0.0;
float kWh = 0;

unsigned long lastmillis = millis();


void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass); // Start Blynk
delay(1000); // wait for a second
while (!Serial); // wait until serial comes up on Arduino Leonardo or MKR WiFi 1010
Wire.begin();
ina226.init();

/* Set Number of measurements for shunt and bus voltage which shall be averaged
Mode * * Number of samples
AVERAGE_1 1 (default)
AVERAGE_4 4
AVERAGE_16 16
AVERAGE_64 64
AVERAGE_128 128
AVERAGE_256 256
AVERAGE_512 512
AVERAGE_1024 1024*/

//ina226.setAverage(AVERAGE_16); // choose mode and uncomment for change of default

/* Set conversion time in microseconds
One set of shunt and bus voltage conversion will take:
number of samples to be averaged x conversion time x 2

Mode * * conversion time
CONV_TIME_140 140 µs
CONV_TIME_204 204 µs
CONV_TIME_332 332 µs
CONV_TIME_588 588 µs
CONV_TIME_1100 1.1 ms (default)
CONV_TIME_2116 2.116 ms
CONV_TIME_4156 4.156 ms
CONV_TIME_8244 8.244 ms */

//ina226.setConversionTime(CONV_TIME_1100); //choose conversion time and uncomment for change of default

/* Set measure mode
POWER_DOWN - INA226 switched off
TRIGGERED - measurement on demand
CONTINUOUS - continuous measurements (default)*/

//ina226.setMeasureMode(CONTINUOUS); // choose mode and uncomment for change of default

/* Set Resistor and Current Range
if resistor is 5.0 mOhm, current range is up to 10.0 A
default is 100 mOhm and about 1.3 A*/

ina226.setResistorRange(0.1, 1.3); // choose resistor 0.1 Ohm and gain range up to 1.3A

/* If the current values delivered by the INA226 differ by a constant factor
from values obtained with calibrated equipment you can define a correction factor.
Correction factor = current delivered from calibrated equipment / current delivered by INA226*/

ina226.setCorrectionFactor(0.93);

Serial.println("INA226 Current Sensor Example Sketch - Continuous");

ina226.waitUntilConversionCompleted(); //if you comment this line the first data might be zero
}


void loop()
{
Blynk.run(); // Initiates Blynk

ina226.readAndClearFlags();
shuntVoltage_mV = ina226.getShuntVoltage_mV();
Source_Voltage = ina226.getBusVoltage_V();
Current = ina226.getCurrent_mA() / 1000;
Power = ina226.getBusPower() / 1000;
Load_Voltage = Source_Voltage + (shuntVoltage_mV / 1000);
kWh = kWh + Power * (millis() - lastmillis) / 3600000000.0;

//Serial.print("Shunt Voltage [mV]: ");
//Serial.println(shuntVoltage_mV);

Serial.print("Source Voltage: ");
Serial.print(Source_Voltage);
Serial.println("V");

Serial.print("Load Voltage:");
Serial.print(Load_Voltage);
Serial.println("V");

Serial.print("Current: ");
Serial.print(Current);
Serial.println("A");

Serial.print("Power: ");
Serial.print(Power);
Serial.println("W");

Serial.print("kWh: ");
Serial.print(kWh);
Serial.println("kWh");

if (!ina226.overflow)
{
Serial.println("Values OK - no overflow");
}
else
{
Serial.println("Overflow! Choose higher current range");
}
Serial.println();

//Send to Blynk
Blynk.virtualWrite(V0, Source_Voltage);
Blynk.virtualWrite(V1, Load_Voltage);
Blynk.virtualWrite(V2, Current);
Blynk.virtualWrite(V3, Power);
Blynk.virtualWrite(V4, kWh);

delay(3000);
}
 

Mumrik75

New member
ПРивет!
Делал кто шунт из скрепки для ina226?
Мне мало 0,7-0,8А максимальных по даташиту, хочу сделать пару шунтов из скрепки (с коммутацией 1/2 в паралель)..
Из видоса в ютубе видел у скрепки одной сопротивление 0,033Ом , у двух в паралель будет в 2 раза меньше и уменьшу влияние нагрева на изменение сопротивления.
Пришлось заказать пачку скрепок 50мм длиной, завтра с магаза заберу и буду шунты крутить :D
Шунт токовый Амперметра из Скрепки.jpg
 

Mumrik75

New member
Два скрепки в паралель = шунт 0,0165 Ом, позволит мерить ток до 4-Ампер (66мВ на шунте)..
Для контроля зарядки АКБ в авто двойного шунта по идее должно хватить,
ограничил ток зарядки до 3А на dc-dc модуле.
А ESP хочу снимать сделать Звуковую+световую индикацию пороговых значение U на АКБ и тока Зарядки Акб..
 

pvvx

Активный участник сообщества

pvvx

Активный участник сообщества
И для более сверх-точных показаний манганин желательно покрыть лаком или чем специальным, т.к. и он имеет уход от влажности и окисления.
 

Mumrik75

New member
Ещё вопрос:
кто как реализовывал защиту от превышения тока? :rolleyes:чтобы на токовом входе ina226 выше 65-70mV не упало..

Допустим щуп рассчитан на макс ток 4А. Предик на 3А перегорит не мгновенно и при токе в 5-10А...
Ставить второй INA с щупом на 20А и управлять релешкой токового входа на ina1 = перебор... :D (хотя по деньгам и приемлимо, но МЕСТО в корпусе под ina2+релешка + погрешность измерения тока ina1 из за того что релешка будет последовательно с шунтом)..

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