Авторизация
Зарегистрироваться

Датчик напряжения и тока. Исправляем недостатки Imax.


цена за 3 шт.

У нас будет свой контроллер заряда/разряда. С экраном и графиками!


Датчик напряжения и тока. Измеряет напряжения до 26 вольт и токи до 3,2 амера. Отличительной особенностью является то, что он подсоединяется по шине IIC, что дает ряд преимуществ. Он лучше, чем аналоговые датчики, защищен от помех, он не занимает аналоговый вход контроллера, он определяет сразу три величины: ток, напряжение и мощность.

У меня есть зарядка для аккумуляторов — Imax B6 mini. Хороший, в принципе, аппарат, я им даже автомобильный аккумулятор заряжал. Но долго, конечно. А уж разряжает он совсем медленно: максимальный ток 400мА. Можно заряжать аккумуляторы и обычным лабораторным блоком питания, он умеет и СС и CV, но увы, он не подсчитает отданный в аккумулятор ток. Было время, я прилаживал USB доктора, чтобы подсчитать емкость, но это, конечно же, временная мера. Все равно он не строил графиков зарядки, он не мог отключать зарядное устройство при достижении нужного напряжения, он не мог отключать нагрузку при просадке напряжения во время тестового разряда.

Наконец, дошли руки сделать штуковину, которая будет все это делать. Заказал три датчика. Модули и датчики я всегда заказываю по 2-3 штуки, это удобно: один экземпляр для работы, один для тестирования и отладки, один запасной.

Вот что приехало:



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



Сделано аккуратно, детальки лежат ровненько, флюс смыт, любо-дорого посмотреть.



На плате сама микросхема сенсора, один конденсатор, батарея резисторов и шунт 0,1Ом. Имеются две площадочки, на которые можно посадить соплю из припоя, чтобы изменить адрес устройства по шине IIC.

В большие отверстия впаиваем колодку.



Маленькие для подключения гребенки: SDA и SDL — шина I2C, плюс и земля — питание, два остальных дублируют силовой вход датчика.

Что же из себя представляет микросхема датчика: Обратимся к первоисточнику: https://cdn-shop.adafruit.com/datasheets/ina219.pdf. Тут приведена схема с пояснением принципов работы:



Сигнал с шунта и с входного напряжения попеременно через переключатель подается на усилитель, затем на АЦП, после значения напряжения складываются в регистр напряжения, значения тока — в регистр тока. Произведение двух значений — в регистр мощности. Далее по интерфейсу IIC все это отдается в ответ на запрос.

С теорией все понятно, переходим к практике. Я соединил проводами этот датчик, Ардуино Про Мини, ЖК дисплей 1602 и релюшку. Все это сложил в распаячную коробку и запитал от микро-юсб гнезда. Наружу вывел две пары проводов: одна для источника тока, вторая для потребителя. Вот что у меня получилось:





Написал небольшой скетч. Вот он:

ina219.ino

///////////////////////////////////////////////////////////////////////
//
//		Battery charge/discharge controller:
//		- writes a log with voltage, current, power and capacity
//		- switches off the load when max or min voltage achieved
//		Based on INA219 sensor connected to IIC bus
//
//		components:
//		1) ardiono Pro Mini/Nano/Uno
//		2) relay
//		3) 1602 LCD display
//		4) INA 219 sensor
//		5) OpenLog module to store a log file - optional
//
//		© tykhon, 2018
//
///////////////////////////////////////////////////////////////////////

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Adafruit_INA219.h>

const int relay_pin = 2;								// pin to connect relay
// const float minimal_voltage = 3.2;					   // minimal voltage to switch off the load
const float minimal_voltage = -1.0;						// minimal voltage to switch off the load
const int window_sec = 5;								// update LCD and log interval

float voltage = 0;
float current = 0;
float power = 0;

float voltage_display = 0.0;
float current_display = 0.0;
float power_display = 0.0;

float voltage_sum = 0.0;
float current_sum = 0.0;
float power_sum = 0.0;

float capacity = 0.0;
float shuntvoltage = 0;
float busvoltage = 0;

int counter = 0;
int seconds = 0;
int minutes = 0;

boolean working = true;

unsigned long timelastinstance;   
unsigned long now;

// LiquidCrystal_I2C lcd(0x27,16,2);
LiquidCrystal_I2C lcd(0x3F,16,2);
Adafruit_INA219 ina219;


void setup() {
  Serial.begin (9600);
  lcd.init();
  lcd.clear();
  lcd.setBacklight(HIGH);
  pinMode(relay_pin, OUTPUT);
  ina219.begin();
  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  voltage = busvoltage + (shuntvoltage / 1000);
  if (voltage > minimal_voltage) {digitalWrite(relay_pin, HIGH);}
  else {working = false; lcd.setCursor(0, 1); lcd.print("OFF");};
}

void loop() {
  if (working){
    now = millis();
    if ((now - timelastinstance) >= 1000) {
      timelastinstance = now;
      shuntvoltage = ina219.getShuntVoltage_mV();
      busvoltage = ina219.getBusVoltage_V();
      current = ina219.getCurrent_mA();
      power = ina219.getPower_mW();
      voltage = busvoltage + (shuntvoltage / 1000);
      
      voltage_sum += voltage;
      current_sum += current;
      power_sum += power;

      counter += 1;
      seconds += 1;
      if (seconds >= 60) {
        minutes+=1;
        seconds = 0;
      };
      
      if (counter >= window_sec) {
        voltage_display = voltage_sum/float(counter);
        current_display = current_sum/float(counter);
        power_display = power_sum/float(counter);
        capacity += current_display*window_sec/3600.0;
        voltage_sum = 0.0;
        current_sum = 0.0;
        power_sum = 0.0;
        String seconds_display = String(seconds);
        if (seconds < 10){seconds_display = '0'+seconds_display;};
        String minutes_display = String(minutes);
        if (minutes < 10){minutes_display = '0'+minutes_display;};

        String dataString = minutes_display+":"+seconds_display+"  U= "+String(voltage_display)+"  I= "+String(current_display)+"  P= "+String(power_display)+"  mAh= "+String(capacity);
        dataString.replace(".",",");
        dataString.replace("  ","\t");
        Serial.println(dataString);
        lcd.setCursor(0, 0);
        lcd.print("        ");
        lcd.setCursor(0, 0);
        lcd.print(voltage_display,2);
        lcd.print("V");
        lcd.setCursor(8, 0);
        lcd.print("        ");
        lcd.setCursor(8, 0);
        lcd.print(current_display,0);
        lcd.print("mA");
        lcd.setCursor(0, 1);
        lcd.print("        ");
        lcd.setCursor(0, 1);
        lcd.print(power_display,0);
        lcd.print("mW");
        lcd.setCursor(8, 1);
        lcd.print("        ");
        lcd.setCursor(8, 1);
        lcd.print(capacity,0);
        lcd.print("mAh");

        counter = 0;
          if (voltage_display <= minimal_voltage) {
            digitalWrite(relay_pin, LOW);
            lcd.setCursor(0, 1);
            lcd.print("        ");
            lcd.setCursor(0, 1);
            lcd.print("OFF");
            working = false;
          };
        };
      delay(10);
      };
  };
}


Для работы используется библиотека от Adafruit, ее можно найти вот тут: https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout/downloads

Работает прямо из коробки: скачиваем, распаковываем с папку с библиотеками Ардуины, запускаем пример из папки с библиотекой, работает сразу и без танцев с бубном.

Скетч выдает в порт значения напряжения, тока, мощности и емкости батареи. Примерно вот так:


39:00 U= 4,08	I= 404,66	P= 1624,40	mAh= 254,40
39:05 U= 4,08	I= 397,22	P= 1592,40	mAh= 254,95
39:10 U= 4,08	I= 404,82	P= 1644,40	mAh= 255,51


Далее мне захотелось проверить точность прибора. Подключаем источник опорного напряжения.

2,5 вольт:



5,0 вольт:



7,5 вольт:



10 вольт:



Ну просто замечательно! Идеальная точность! Конечно, можно было бы посмотреть что там в третьем знаке после запятой, но мне совершенно достаточно двух.
Ток с аналогичной точностью мне сверить не с чем, но т.к. ток измеряется тем же АЦП, только подключенным к шунту, то можно предположить, что точность его измерения тоже хорошая, ведь шунт наверняка обладает линейной характеристикой в разумном диапазоне температур.

Подключаем аккумулятор как источник тока и лампочку как нагрузку. Вот лампочка горит:



А вот напряжение перешло выставленный минимальный порог и реле отключило лампу:



Работает!

Теперь сверим показания Imax и прибора на датчике INA219:



Совпадение очень хорошее!

Если вместо адаптера com-usb к ардуино подключить модуль OpenLog, то все, что выводилось в компорт, будет складываться в текстовый файл на флешку. Потом этот текстовый файл можно загрузить в Exel и построить график заряда-разряда. Иногда это бывает очень полезно, когда аккумулятор полуживой, то график его зарядки перестает быть ровненькой горкой. Как правило, сначала напряжение взлетает, потом падает, потом снова нарастает, но уже спокойнее. Аккумулятор может начать греться. Так что график — вещь полезная.

Вот график зарядки аккумулятора от Imax:



А вот от самоделки:



Что хочется сказать в заключении:

Датчик очень неплох, нравится и удобный интерфейс и точность. Хорошо бы ток был побольше, ампер 10 бы. Но это можно сделать и самому, заменив шунт и программно умножая показания на коэффициент.
Планирую купить +74 Добавить в избранное +122 +177
свернуть развернуть
Комментарии (149)
RSS
+
avatar
  • ksiman
  • 26 октября 2018, 16:57
+1
12 bit ADC вполне достаточно для домашних измерений :)
Хорошо бы ток был побольше, ампер 10 бы
Хоть 100А, но точность измерения малых токов окажется неприемлемой.
+
avatar
  • ybxtuj
  • 27 октября 2018, 06:58
+1
продавец описывает этот момент как

Продвинутые хакеры могут удалить 0,1 ohm тока чувство резистора и заменить его своим собственным, чтобы изменить диапазон (скажите а 0,01 Ом для измерения 32 Ампер с разрешением 8мА)
8ма вполне себе точность
+
avatar
  • ksiman
  • 27 октября 2018, 08:13
+2
Продвинутые хакеры
Так вот как китайцы электроников называют…
8ма вполне себе точность
Это если оставить 320мВ, но на шунте будут дикие потери мощности (10 Вт)
+
avatar
  • ybxtuj
  • 27 октября 2018, 09:39
0
там ещё что то про внутренний коэф усиления расказывалось
но я ничего не понял

Прецизионный усилитель измеряет напряжение через 0,1 Ом, 1% чувство резистора. Поскольку усилитель максимальной входной разницы составляет ± 320mV, это означает, что он может измерить до ±3. 2 ампер. С внутренней 12 бит АЦП, разрешение на ±3 ±3 2A диапазон составляет 0.8mA. С внутренним коэффициентом усиления, установленным на минимальном уровне div8, максимальный ток ± 400мА и разрешение-0.1mA.
но если его повысить скорее всего внешней обьвязкой то возможно и точность изменится
наверно он это имел в виду
+
avatar
  • AndyBig
  • 27 октября 2018, 12:26
0
что то про внутренний коэф усиления расказывалось
но я ничего не понял
Если грубо: на внутренний АЦП должно подаваться не больше 40 мВ, перед АЦП там еще есть «усилитель» (на самом деле делитель) напряжения, который может ослаблять измеряемое на шунте напряжение в 1,2,4 или 8 раз. Если с шунта снимается не больше 40 мВ, то усилитель настраивается на ослабление в 1 раз, то есть сигнал проходит через него без изменений. Если с шунта снимается до 80 мВ, то усилитель настраивается на ослабление в 2 раза. И т.д.
+
avatar
  • ksiman
  • 27 октября 2018, 19:01
0
перед АЦП там еще есть «усилитель» (на самом деле делитель) напряжения
Обычно как раз стоит усилитель со ступенчатым коэффициентом от 1 до скольки нужно.
+
avatar
  • AndyBig
  • 27 октября 2018, 19:49
0
Ну, в даташите говорится именно об ослаблении, а не об усилении :)
Вот после него, скорее всего, стоит уже усилитель с постоянным усилением с 40 мВ до, например, 1.2 В или какая там опора используется для АЦП :)
+
avatar
0
С током понятно, а как поднять максимально-измеряемое напряжение хотя бы до 50В?
+
avatar
  • AndyBig
  • 30 октября 2018, 10:39
0
По идее, можно на оба входа микросхемы (между шунтом и микросхемой) поставить по резистивному делителю.
+
avatar
  • ksiman
  • 06 ноября 2018, 10:38
0
Тогда ток перестанет нормально измеряться.
+
avatar
  • AndyBig
  • 06 ноября 2018, 13:21
0
Да нет, ток тоже будет измеряться, но напряжение с шунта уменьшится :)
+
avatar
  • ksiman
  • 06 ноября 2018, 14:42
0
Это так кажется только на первый взгляд.
Подсказка — резисторы делителя придётся брать супервысокопрецизионные, чтобы данная система работала корректно
+
avatar
  • AndyBig
  • 06 ноября 2018, 15:44
0
Это так кажется только на первый взгляд.
Поясните моменты, мешающие этому :) Я сегодня попробую в симуляторе посмотреть, но на первый взгляд никаких препятствий не вижу.
резисторы делителя придётся брать супервысокопрецизионные
Достаточно чтобы они в обоих плечах совпадали в каких-то пределах, скажем, в 0.5%, то есть чтобы коэффициент деления был одинаковым :)
+
avatar
  • ksiman
  • 06 ноября 2018, 16:22
0
В режиме симуляции при напряжении 50В и нулевом токе попробуйте изменить сопротивление любого резистора в делителе хотя-бы на 0,1% — ток резко убежит с нулевого уровня :)
+
avatar
  • AndyBig
  • 06 ноября 2018, 20:43
0
Я же написал — резисторы должны быть подобраны одинаковыми в обоих делителях :) Это не означает, что нужны суперпрецизионные резисторы, это просто означает, что из партии надо отобрать одинаковые пары :) Или добавить подстроечный резистор :) Оставшуюся погрешность можно учесть в микроконтроллере :)
Схема симуляции (VCC = 50 вольт):

Вот график и напряжения между Vs1 и Vs2 при разном значении одного из резисторов в одном делителе — R5. По оси X — сопротивление нагрузки от 10 Ом до 10 кОм, по Y — напряжение между Vs1 и Vs2 в милливольтах:

Появляется просто смещение, которое легко вычесть.
+
avatar
  • ksiman
  • 06 ноября 2018, 23:04
0
Появляется просто смещение, которое легко вычесть.
1. Величина смещения будет сильно зависеть от измеряемого напряжения
2. Резисторы не имеют абсолютно одинаковый ТКС
В результате, значение измеряемого тока будет сильно плавать.
При разнице сопротивлений всего 0,5% (в Вашей симуляции) сдвиг получается 70мВ, а это аж 0,7А, что абсолютно неприемлемо при дискрете измерения тока 0,0008А
+
avatar
  • AndyBig
  • 07 ноября 2018, 00:25
0
1. Величина смещения будет сильно зависеть от измеряемого напряжения
А, блин, слона-то я и не заметил :) Точно. Действительно тогда такой метод непригоден для измерения и тока и напряжения.
Остальное несущественно. ТКС у одинаковых резисторов будет практически одинаков. Дискрету сдвиг только слегка увеличит за счет ненулевой нижней точки, тем более, что резисторы можно подобрать с разбросом менее 0.5% :)
+
avatar
  • ksiman
  • 06 ноября 2018, 10:37
0
а как поднять максимально-измеряемое напряжение хотя бы до 50В?
Простыми средствами — никак
+
avatar
0
Спасибо, почему то так сразу и подумал
+
avatar
  • u3712
  • 26 октября 2018, 17:16
-1
У нас будет свой контроллер заряда/разряда. С экраном и графиками!
Вообще-то, там речь шла о блекджеке и «девках». ©Бендер ))
+
avatar
  • tykhon
  • 26 октября 2018, 17:17
+14
Ну не мог же я написать именно так? У нас же приличный сайт!
+
avatar
  • Semenych
  • 26 октября 2018, 17:17
+2
ценник конский
+
avatar
  • tykhon
  • 26 октября 2018, 17:18
+1
Это за ТРИ!
+
avatar
  • serg_mur
  • 26 октября 2018, 17:20
+2
Эт точно. Он же на Али. Два доллара.
+
avatar
  • tykhon
  • 26 октября 2018, 17:21
0
Цена за 3 шт, так что тут дешевле, чем на Али. Тем более, можно поинтами синуть еще.
Но спасибо, действительно было непонятно, добавил в шапку уточнение по цене.
+
avatar
  • Semenych
  • 26 октября 2018, 17:24
+4
Чем дешевле? Тут 512 рублей 3 штуки, на Али 122,06 одна. 4 штуки можно купить.
+
avatar
  • Iron_69
  • 26 октября 2018, 18:30
0
А Вы посмотрите еще на доставку — на Али бесплатная 30-50 дней. Если выбрать AliExpress Standard Shipping, это +151 руб.(17-22 дней) Если выбрать 3 шт. то получается те же 514 рублей что и на Бангуде, где доставка 10-30 дней. Так что, те же яйца — вид сбоку.
+
avatar
  • serg_mur
  • 26 октября 2018, 19:01
+1
Так на Бангуде тоже бесплатная (безтрековая) доставка. И за трек нужно еще 87 руб доплатить.
Итого — 601 руб.
На Али то же самое с платной доставкой — 514 руб.
Ещё вопросы?
+
avatar
  • ResSet
  • 26 октября 2018, 19:09
+3
Так на Бангуде тоже бесплатная (безтрековая) доставка.
Из бенга безтреки хотя бы стабильно приходят и в случае чего без проблем высылают повторно уже с треком, так что в любом случае посылка будет получена без доплаты, в али придется потрепать нервы.
+
avatar
  • Semenych
  • 26 октября 2018, 19:37
+4
Никогда не трепал нервы на Али. Открываешь спор — посылка не пришла, получаешь деньги.
+
avatar
  • ResSet
  • 26 октября 2018, 19:41
0
Это если сразу открывать спор, но говорят что это не очень полезно для репутации. Если же сначала пытаться решать по-хорошему, попросив продавца переотправить товар, процентов 80 ответят что они не виноваты и вообще товар получен, просто Вы хотите обмануть честного продавца у которого шестеро маленьких детей.
+
avatar
  • Semenych
  • 26 октября 2018, 19:52
+1
Для репутации плохо, если открывать 9 споров из 10 посылок. А один спор копеечный безтрековый спокойно закрывается и всё.
+
avatar
  • ResSet
  • 27 октября 2018, 10:37
+1
Я не так давно мучился с заказом жены. Заказала с десяток вещей, доплатили за трек, в итоге продавец присвоил один номер на все, думаю ну наверное в одном пакете получит, бывало такое. В итоге действительно пришло несколько позиций… две. На вопрос что за фигня? Продавец ответил что посылка получена и я хочу его обмануть. А она ведь и правда получена, если посмотреть на трек к каждому товару и не заметить что он один и тот же. Казалось бы идиотская ситуация, проблема видна и можно понять почему покупатель не доволен, но после нескольких дней безрезультативных переписок пришлось открывать споры на кучу позиций. Деньги вернули когда вмешался арбитраж, но осадочек добавился, учитывая что и ранее возникали похожие ситуации )
+
avatar
+2
А не доводилось в последнее время открывать спор, когда посылка, как кажется алишному роботу, «Уже подъезжае!» И диспут отказывается начинаться. Т.е. последняя надежда вернуть свои деньги быстро тает. Киты — они на выдумку хитры. Не мытьем, так отказом в диспуте припечатают.
+
avatar
  • vladius
  • 26 октября 2018, 20:12
0
Просто сейчас правила несколько поменялись. Спор можно открыть в течении 15 дней по истечении установленного срока доставки.
+
avatar
  • Semenych
  • 26 октября 2018, 20:22
+1
Просто ждем окончания указанного срока доставки и открываем спор.
+
avatar
  • AndyBig
  • 26 октября 2018, 21:33
0
На самом деле торговой площадке в перспективе невыгодно кидать покупателей. Она-то ничего не теряет от возврата денег, зато теряет репутацию при необоснованных отказах возврата.
+
avatar
  • CKYHC
  • 27 октября 2018, 04:21
0
Это вы из какого года нам пишите? из 2012?

Али уже настолько плотно вошла в обиход, что это как отксерить, погуглить, и купить на Али.
+
avatar
  • AndyBig
  • 27 октября 2018, 12:31
0
это как отксерить
И какова сейчас доля на рынке копировальных аппаратов фирмы Xerox?
+
avatar
  • serg_mur
  • 26 октября 2018, 19:58
+2
Из бенга безтреки хотя бы стабильно приходят и в случае чего без проблем высылают повторно уже с треком
Да ну! Из сотни посылок штук 20 безтрековых, из них 3 сгинули. Бодались до последнего, деньги, конечно, вернули. Но чтоб повторно, да ещё и с треком? Ни разу такого не было, хотя сам предлагал. Всегда деньги возвращали. Нынче Бангуд не тот.
+
avatar
  • ResSet
  • 27 октября 2018, 10:32
0
Но чтоб повторно, да ещё и с треком? Ни разу такого не было, хотя сам предлагал. Всегда деньги возвращали. Нынче Бангуд не тот.
Может количество товара было ограничено? В Гире тоже в основном возврат делают, ссылаясь на отсутствие на складе.
+
avatar
  • Slymas
  • 26 октября 2018, 23:09
+4
Одни раз в жизни заказал на бэнге часы на DS3221, плюс решил сэкономить на треке.
В итоге посылка не пришла, написал на сайте что не пришла, мне написали, что выслали повторно и этим все и закончилось.
Далее заказал эти же часы на Али и с него все пришло.
Цена ошибки: около 900 руб.
Было это года полтора назад.
Ясно что больше заказывать там ничего не буду, хотя люди пишут, что у них проблем нет.
С Али никогда проблем не было как с неполученной посылкой, так и с некачественным товаром. Правда иногда дело доходило до службы поддержки, но все споры разрешались в мою пользу.
+
avatar
  • ResSet
  • 27 октября 2018, 10:29
+1
У меня в данный момент 208 заказов в бэнге и в основном это товар стоимостью от 20$. Ситуация как у Вас, но ровно наоборот — после множества неприятных ситуаций решил покупать дорогостоящий товар где угодно, только не в Али )
Из этих 208 заказов я получил все 208, с десяток не дошли и приходилось обращаться в службу поддержки, после чего его без проблем переотправляли. Часть недоставленных товаров я все же получил спустя время, отписывался по поводу доплаты чтобы было честно, но на такие сообщения уже не отвечали.
В итоге посылка не пришла, написал на сайте что не пришла, мне написали, что выслали повторно и этим все и закончилось.
Почему не написали еще раз в техподдержку? Почему не написали в пейпал, который в 90% обращений возвращает деньги покупателю?
+
avatar
+2
Спасибо Вам и автору. Закажу, может куда применю.
+
avatar
  • ybxtuj
  • 27 октября 2018, 07:04
0
там и за 100 рубликов есть
а сама микруха 90 стоит
так что самому изготавливать нет смысла
+
avatar
  • dens17
  • 26 октября 2018, 17:36
+1
Беленькие парные разъемы (которые у лампочки, аккумулятора), лучше не использовать — это китайский хлам.
Они только подходят, при проверке БП после ремонта или при первом включении БП, из коробки (для страховочной лампочки 220V).
+
avatar
  • u3712
  • 26 октября 2018, 17:38
0
Хорошо бы ток был побольше, ампер 10 бы.
Там PGA до 0.3В — на этом шунте до 3А. Здесь придется уменьшать шунт раз, этак, в 5-10. (0.01 Ом 2 Вт).
В-принципе, у вас не особо высокоточное изделие, падение чувствительности не должно особо сказаться.

И… вот еще что — лучше было-бы повысить точность/дискретность результатов. Во-первых, «лесенка» на графиках, это моветон. )) Во-вторых, это полезно — для графиков напряжения. Процесс заряда идет медленно и полезно знать, что что-то происходит. У меня для этого В7-38, очень удобно. Делается просто — постоянно оцифровывать и усреднять с удалением «не-обычных» значений (фильтрация шума). Так можно выиграть еще 1-2 разряда на индикаторе.
+
avatar
  • AndyBig
  • 26 октября 2018, 18:03
+4
постоянно оцифровывать и усреднять
Ну, у автора в скетче почти так и есть — измеряет каждую секунду с накоплением, а каждые пять секунд делит накопленное на количество измерений и выводит результат, обнуляя накопление :)
но я бы на его месте делал измерение хотя бы 5 раз в секунду и усреднял скользящим окном :)
+
avatar
  • tykhon
  • 26 октября 2018, 18:10
0
У меня там раз в секунду идут замеры, потом среднее арифметическое за 5 секунд. Лесенка — это следствие вывода, там до двух знаков округление.
+
avatar
  • AndyBig
  • 26 октября 2018, 18:18
0
У меня там раз в 10 мс идут замеры
Скетч точно Вы сами писали? :) Потому что в нем четко прописано выжидание 1 секунды между замерами :)
+
avatar
  • tykhon
  • 26 октября 2018, 18:47
0
Я, я. Что там писать-то? Запрос из библиотечного примера, остальное из других скриптов скопипастил. Просто версий было несколько, до этой.
+
avatar
  • AndyBig
  • 26 октября 2018, 21:29
+1
Запрос из библиотечного примера, остальное из других скриптов скопипастил.
Вот она, суть ардуины :)
+
avatar
  • tykhon
  • 26 октября 2018, 22:50
0
Рыба ищет где глубже, а программер — где скопипастить. Не сердитесь.
+
avatar
  • AndyBig
  • 26 октября 2018, 23:01
0
Да мне-то что сердиться, я сам ардуин не касаюсь, а остальные пусть делают что хотят :)
+
avatar
  • aaan73
  • 28 октября 2018, 11:14
-1
Это суть ВСЕХ нынешних разработок. Использовать непонятные библиотеки. Зато скорость разработок на порядки выше (с низкой надёжностью)…
+
avatar
+1
Всё, что сыплется в консоль, и так можно перенаправить в файл, не терзая флешку побайтной дозаписью)

Вывод мВт•ч тоже надо добавить, даже на 1602 хватит места: верхняя строка для мгновенных показателей, нижняя для накопленных (например;)

Замечательный конструктив использован для 1602, в оффлайне как-то не попадался на глаза…
+
avatar
  • tykhon
  • 26 октября 2018, 18:13
0
Флешка для того, чтобы вообще от компа отвязаться. Автомобильный аккумулятор трехамперным током может разряжаться и сутки и двое.
+
avatar
0
В прибор повышенной автономности сразу захочется много лишнего добавить — wifi/bt кнопку для установки времени опроса, возможность питания от проверяемого аккума, автоотключение дисплея…
В то же время, 50÷100 первичных отсчётов можно^ просто в оперативке сохранить.

^ или нельзя;)
+
avatar
  • Aostspb
  • 26 октября 2018, 17:44
+1
У штатного Imax-а есть выход с usb разъемом. Говорят, что это для вывода данных и построения графиков.
+
avatar
  • tykhon
  • 26 октября 2018, 18:12
0
Да, он строит графики. Но для разрядки 0,4А это мало.
+
avatar
0
Там uart :)
+
avatar
  • tykhon
  • 26 октября 2018, 18:15
0
Не во всяком Imax.
+
avatar
0
Речь шла о штатном, обычном. Если и с блоком питания, есть с увеличенным разрядным резистором, много чего можно ещё впихать. А с usb я вот и не видел даже.
+
avatar
0
Imax b6 mini идет с usb.
+
avatar
  • ksiman
  • 26 октября 2018, 19:11
0
MicroUSB :)
+
avatar
  • AndyBig
  • 26 октября 2018, 17:57
+3
Точность измерения тока напрямую связана с точностью сопротивления шунта :) У которого, кстати, еще и ТКС неизвестен :) Так что вывод «раз ток измеряет та же АЦП, значит и тут все точно» тут неприменим :)
Ну и 3 ампера на шунте 0.1 ома — это падение напряжения 0.3 вольта, как-то многовато :)
+
avatar
0
0.3 Вт — как pаз ещё допустимая рассеиваемая мощность для «большого» SMD? А если в печатке ещё предусмотрены в нужных местах дырки с металлизацией… правда, в этом смысле меня очень смущают надписи Vin± возле крепёжных отверстий;)
+
avatar
  • AndyBig
  • 26 октября 2018, 21:35
+1
При 3 амперах и 0.3 вольтах будет выделяться 0.9 ватт, а не 0.3 :)
+
avatar
  • ksiman
  • 26 октября 2018, 22:05
0
Для этого шунта это в пределах нормы
+
avatar
  • AndyBig
  • 26 октября 2018, 23:02
0
Я и не утверждал обратного :)
+
avatar
0
Эти надписи там для того, чтоб при установленной колодке было видно, что куда вставлять — она закрывает те, которые рядом с, собственно, контактами VIN + и -
+
avatar
  • ResSet
  • 26 октября 2018, 18:44
+6
Отличный обзор, за скетч отдельное спасибо, а то уже думал у авторов в привычку войдет показывать проект и не делиться исходниками )
+
avatar
  • AndyBig
  • 26 октября 2018, 21:35
+1
Да, такие товарищи стали частенько выплывать :)
+
avatar
  • achkov
  • 26 октября 2018, 19:27
0
может кто подскажет, что нужно изменить в данном проекте, чтобы измерять емкость автомобильных аккумуляторов до 200а/ч с разрядным током до 10-20-30 ампер?
+
avatar
  • ksiman
  • 26 октября 2018, 19:36
0
Прежде всего, выпаять шунт и подключить к внешнему шунту на 10-20-30 ампер
Ну и слегка подправить программку
+
avatar
  • AndyBig
  • 26 октября 2018, 21:38
0
30 ампер при падении напряжения на шунте 0.3 вольта — неплохая грелка для рук зимними вечерами :)
Для таких токов лучше уже использовать токовые датчики на эффекте Холла :)
+
avatar
  • ksiman
  • 26 октября 2018, 21:59
0
30 ампер при падении напряжения на шунте 0.3 вольта — неплохая грелка для рук зимними вечерами :)
Измерять такие токи с высокой точностью обычно и не требуется, поэтому:
в программе настроить режим PGA=+2 и на стандартном шунте 30А будет выделяться всего 30х0,075=2,25Вт на токе 30А и 2,5Вт на максимальном для этого режима токе 32А
+
avatar
  • AndyBig
  • 26 октября 2018, 23:00
0
Но тогда и точность при низких значениях упадет :)
+
avatar
  • Bald
  • 26 октября 2018, 22:17
0
А есть в этом случае смысл в этом модуле? Может тогда микруху и шунт брать?
+
avatar
  • Aostspb
  • 29 октября 2018, 11:03
0
что нужно изменить в данном проекте
Если кратко — то все. :) Я себе купил отдельную мерялку и заменил в ней резисторную нагрузку на галогенку в металлической гильзе…
+
avatar
  • achkov
  • 29 октября 2018, 20:52
0
при тестировании 200 амперного аккумулятора максимальным током вашего устройства (3А) понадобиться 66+ часов… нашел у себя шунт шунт 60А 75мВ сопротивление 0,00125 Ом. Может кто подскажет что в скетче поменять, что бы он корректно ток считал с таким шунтом…
+
avatar
  • unnk2004
  • 30 октября 2018, 10:15
0
Умножайте значение тока на 80: 0,1/0,00125
+
avatar
  • Aostspb
  • 30 октября 2018, 10:52
0
током вашего устройства (3А) понадобиться 66+ часов…
Вроде бы взрослый человек… :) s/понадобиться/понадобится/g

Во-первых, не три, а четыре и восемь десятых ампера, а во-вторых, кто Вам мешает включить две-три-четыре-пять лампочек параллельно, чтобы довести ток до требуемого значения?
+
avatar
  • achkov
  • 30 октября 2018, 20:58
0
Как у Вас все просто… А вашему сдвоенному MOSFETу STT8205S не поплохеет от 30 ампер с учетом того что по паспорту он 6+6 ампер? Далее ваш резистор шунта с вашей лампочкой уже рассеивает 0,5 ватт, от 3-х ватт, я думаю ему тоже станет не очень хорошо. Как скажется увеличение на порядок напряжения с шунта на входе АЦП тоже под вопросом. Большие сомнения терзают даже за синенький разъем и сечение дорожек (хоть там можно и припоем немного «помочь»). Далее, в описании вашего прибора фигурирует максимальный ток — 3 ампера, и при превышении 3,1 ампера он должен уходить в защиту с индикацией на экране «Err4». Почему у вас не отрабатывает защита — загадка…
+
avatar
  • Aostspb
  • 31 октября 2018, 10:51
0
Почему у вас не отрабатывает защита — загадка…
Все дело в волшебных пузырьках. :) Слева на фото боком стоит элемент коммутации, который, собственно, и включает дополнительную нагрузку: у него, по паспорту, номинальная нагрузка 10А, а максимальная — «self-limited». Управляется он через оптопару от того самого «синенького разъема», что, конечно же, вносит определенную погрешность в измерения, но для меня это — несущественно.
+
avatar
  • goblen
  • 26 октября 2018, 20:57
0
Интересная штука. Она ведь умеет измерять ток в обе стороны? И максимальный ток можно увеличить хотя бы до 5-6 ампер?
+
avatar
  • AndyBig
  • 26 октября 2018, 21:44
0
Она ведь умеет измерять ток в обе стороны?
По идее умеет :)
И максимальный ток можно увеличить хотя бы до 5-6 ампер?
Можно, поставив другой шунт.
+
avatar
0
Господа, кто может подсказать или может у кого идея/мысль какая будет: если мне нужно мониторить тоже самое, что выдает этот датчик, но с разъема 15 pin sata (см. вложение)? Желательно сквозное подключение. Как не мучил гугл и не ломал голову, но ничего дельного не придумал и не нашел. Нет, конечно были мысли, но то все изврат разный. Хотелось бы тоже коробочку какую-то.
+
avatar
  • AndyBig
  • 26 октября 2018, 21:46
0
Подключаешь в разрыв провода с нужным напряжением (желтый, красный или розовый) и мониторишь :)
+
avatar
0
Это понятно. Как можно мониторить сразу все и одним «прибором»?
+
avatar
  • AndyBig
  • 26 октября 2018, 23:04
+1
Сразу все одним — никак. По отдельному датчику на каждое напряжение. Все три датчика завести на ардуину и считывать с них поочередно.
+
avatar
0
Сразу все одним — никак.
Вот и я пришел к такому же выводу.
По отдельному датчику на каждое напряжение. Все три датчика завести на ардуину и считывать с них поочередно.
А как быть с общим потреблением? Если упростить задачу: нужно мониторить потребление на сата, в реальном времени, что посоветуете?
+
avatar
  • prohuk
  • 27 октября 2018, 05:59
0
собирать информацию из подсистеиы ACPI.
Есть соответствующая в Windows и в Linux.
+
avatar
0
собирать информацию из подсистеиы ACPI.
Есть соответствующая в Windows и в Linux.
Эта информация не будет объективной. И еще по ряду причин сие не вариант.
+
avatar
  • AndyBig
  • 27 октября 2018, 07:26
0
А общее потребление считать ардуиной, которая считывает с этих трех датчиков.
+
avatar
0
Человек ниже уже дал совет дельный. Думаю, что INA3221 с тремя каналами мне поможет.
+
avatar
  • AndyBig
  • 27 октября 2018, 12:16
0
Да, тоже должно сработать :)
+
avatar
  • goblen
  • 26 октября 2018, 23:33
+3
На али есть трёхканальный модуль на похожем контроллере.
+
avatar
0
Дайте ссылку? Спасибо!
+
avatar
  • rx3apf
  • 26 октября 2018, 23:51
+5
Искать по «INA3221»
+
avatar
0
Спасибо! Хотя я еще вчера нагуглил.
+
avatar
  • woddy
  • 27 октября 2018, 07:28
0
ina3221 отличный чип. имеет ноги адреса, что позволяет вешать несколько штук на одну i2c шину.
+
avatar
0
Даташит еще не смотрел, но похоже, что так и есть, то есть датчик годный.
+
avatar
0
Подскажите, уважаемые, эти датчики имеют гальваническую связь «холодная-горячая сторона»? В том смысле что могу ли я мониторить ими 2+ свинцовых акб соединенных последовательно?
+
avatar
  • AndyBig
  • 27 октября 2018, 19:52
0
эти датчики имеют гальваническую связь «холодная-горячая сторона»?
Да, имеют.
могу ли я мониторить ими 2+ свинцовых акб соединенных последовательно?
Можете, но только относительно свободного минуса одной из батарей. То есть один датчик будет мониторить напряжение первой батареи, а второй датчик — сумму напряжении первой и второй батарей.
+
avatar
0
Печально. Ток, соответственно, я вообще не измерю. А не встречали подобные, но с гальванической развязкой? Я пока нашел только изоляторы i2c, но не дёшево, да и редкие они. Изолированные операционники тоже не дешёвые.
+
avatar
  • AndyBig
  • 28 октября 2018, 11:36
0
Чтобы и ток и напряжение? Нет, не встречалось. Только ток — пожалуйста, датчики на эффекте Холла, типа таких — https://aliexpress.com/item/item/Free-Shipping-Hot-Sale-ACS712-30A-Range-Hall-Current-Sensor-Module-ACS712-Module-For-Arduino-30A/32515954572.html :)
+
avatar
0
Да ток я и так измерить могу. При Последовательном включении я его могу где угодно измерять. Напряжение на АКБ хочу знать, на каждом. Наверное лучше, чем измерять от общего на каждом плюсе, и вычитать ничего не придумать.
+
avatar
  • AndyBig
  • 28 октября 2018, 12:31
0
Ну почему, можно заморочиться с отдельными измерителями на каждой АКБ с гальванической развязкой, только зачем? Какие плюсы у раздельного измерения могут оправдать все это? :)
+
avatar
0
Да просто если бы было готовая недорогая микросхема — применил бы. А так придется переделывать имеющуюся систему питания — сейчас ключи на распределителе питания на основе N канальных мосфетов, соответственно «рву плюс» а не минус. А значит схема с общим минусом не прокатит. Буду переделывать или на З-канальные или уже на реле.
+
avatar
  • AndyBig
  • 28 октября 2018, 14:09
0
Честно говоря, не понял в чем проблема. Может быть по условной схеме было бы понятно.
Как я понял, у Вас есть две АКБ, соединенные последовательно, и Вам нужно контролировать напряжение на обеих АКБ. Контроль напряжения с общим минусом кажется вполне нормальным, и как при этом коммутируется нагрузка — значения не имеет :)
Но, может быть, я чего-то недопонимаю :)
+
avatar
0
CD74HC4067M96 не поможет?
+
avatar
  • Sonny
  • 27 октября 2018, 12:53
0
Если нужно видеть только общий ток, можно в разрыв общего(черного) включиться
+
avatar
0
Пробовал, шунт юзал и иже, но чет не то получалось, что нужно. Может я делал что-то не так и/или не совсем понимаю ваш совет? Заказал датчик INA3221, думаю, что он мне поможет решить задачу.
+
avatar
+2
Некорректное утверждение, что у аймакса максимальный ток разряда 400мА. Даже странно, что Вы не разобрались. У аймакса максимальная мощность разряда 5Вт, обусловленная возможностью рассеивания тепла на мосфетах. А максимальный фактический ток разряда зависит от текущего напряжения разряжаемого аккумулятора и насчитывается по формуле 5Вт / U. Если выставить при начале заряда бОльший разрядный ток, то аймакс его автоматически снижает в пределах лимита мощности 5Вт
+
avatar
  • tykhon
  • 26 октября 2018, 22:49
0
Согласен, вы совершенно правы, спасибо за замечание. Стоило написать, что, что в нужном мне диапазоне оказалось 400мА, и это стало решающим аргументом.
+
avatar
  • Totka
  • 27 октября 2018, 02:50
+1
У имакса хоть 50Вт разрядной мощности можно сделать. Прошивка cheali-charger с гитхаба (шьются оригиналы и реплики, которые на али присутствуют на атмежке, есть форк с поддержкой изменения параметров налету), выпаять разрядный транзистор и резистор (правый) в любые желаемые места и подключить кулер с радиатором либо на управление самим аймаксом, либо через терморезистор (для оборотов) с термостатом (для запуска) в любое место от 12В. Резистор не очень много рассеиваемой мощности даёт, вполне хватит перепаять его вниз и прижать к нижней части корпуса. Транзюк для 10-15Вт тоже вполне хватит на верхнею часть корпуса закрепить и не забыть изолировать слюдой или прокладкой. Для большей мощности уже на вынос сделать. Вполне можно сделать на разъеме и свитче 2 варианта: 1 стандартный компактный и другой для мощного разряда с радиатором под килограмм.

Но и у имакса при разряде есть один недостаток:
www.youtube.com/watch?v=QVsGGDFiBHA
+
avatar
0
Недостаток устраним программно, как раз в описании кастомной прошивки сказано как. (использование балансировочного разъёма со второго контакта)
+
avatar
  • prohuk
  • 27 октября 2018, 05:49
0
Для работы используется библиотека от Adafruit, ее можно найти вот тут: learn.adafruit.com/adafruit-ina219-current-sensor-breakout/downloads
Что запускается на стороне компьютера, чтобы снимать показания напряжения и тока?
+
avatar
  • tykhon
  • 27 октября 2018, 09:53
0
Эксель =) Там написано.
+
avatar
  • ybxtuj
  • 27 октября 2018, 06:50
0
ктонибудь в курсе есть ли разница в цвете смд резистора?
в плане их точности %
а тоесть зелёные белые чёрные на этих платах
+
avatar
  • ksiman
  • 27 октября 2018, 08:15
0
На керамике (белые) обычно точнее. Ещё проволочные неплохо работают
+
avatar
  • ybxtuj
  • 27 октября 2018, 09:47
0
у продавца чёрные и написано 1%
у другого зелёные тоже 1%

может это некий вариант показателя термостабильности
+
avatar
  • AndyBig
  • 27 октября 2018, 12:32
0
Это могут быть просто разные производители.
+
avatar
0
Доброго дня.
Как бы на этих модулях сделать контроллер напряжения 4S литиевого аккумулятора?
Элементарная схема с общей землей для каждого из ч-х модулей и вычитанием напряжений понятна,
а как каждую банку отдельно измерять?
+
avatar
0
Вот и у меня похожая задача. Только не литий, а свинцовые, но тоже последовательно. Резервное электропитание дома — низковольтное освещение и сервер.
+
avatar
0
Скорее всего, если это вообще возможно, включать нужно по схеме измерения тока (т.н. дифференциальный режим), только вместо шунта подсоединять измеряемую батарею, но что-то меня терзают смутные сомнения. Другой вариант — ставит с шунтом, но последовательно еще один резистор подбирать. Естественно, в таких режимах об измерении тока батареи речи не идет — для этого придется ставить отдельную микросхему в штатном включении.
+
avatar
  • AndyBig
  • 28 октября 2018, 11:41
0
а как каждую банку отдельно измерять?
А зачем? Вы же описали решение — «схема с общей землей для каждого из ч-х модулей и вычитанием напряжений», так и получаете напряжение на каждой банке.
+
avatar
0
Точность в дифференциальном режиме больше была бы, а так погрешности измерительных модулей будут накладываться друг на друга.
+
avatar
  • AndyBig
  • 28 октября 2018, 14:11
0
погрешности измерительных модулей будут накладываться друг на друга.
В худшем случае — да, но совершенно необязательно. К тому же можно просто откалибровать один раз, нивелировав погрешности модулей.
+
avatar
0
У этого способа несомненный плюс — простота :) Если будет лень ломать голову над проблемами диф. варианта — сделаю так.
+
avatar
  • Aostspb
  • 29 октября 2018, 11:09
+1
Как бы на этих модулях сделать контроллер напряжения 4S литиевого аккумулятора?
Плата защиты на 4s — раза в два дешевле и точнее. :)
+
avatar
  • ybxtuj
  • 27 октября 2018, 10:08
0
заказал 3 штучки за 300
и экранчики на 4 строки с ними думаю будет более информативнее
в задумке сделать на блоки питания такие
тогда можно выкинуть китайский сдвоеный вольтамперметр у которого напряжение начинает врать если отклоняться от откалиброваного значения
+
avatar
+1
Автор, это ваш проект? Если ваш, то не сочтите за труд и дополните обзор немного. Интересует список железок в «коробочке белой» и почему остановились именно на них, а не на других/аналогах? Спасибо! Если проект где-то «подсмотрели», то дайте ссылку на оригинал. Обзор прочитал еще вчера, было интересно. Но отсутствие списка железок слегка огорчило. Плюс хотелось бы понять вашу мотивацию при выборе других железяк. И вообще было бы круто, если бы вы в конце помимо списка железяк подвели бюджет. Все это не моя прихоть, а насущная необходимость для ЦА, т. к. не каждый поймет что за микруху видит на фото.
+
avatar
  • tykhon
  • 27 октября 2018, 12:35
+1
Проект мой. Железки — что под рукой были, то и взял. Релюшка, экран, ардуина и логгер. Список компонентов в шапке скрипта. Подключается все по стандартной схеме — IIC на A4 и A5, релюшка на 2, логгер на RX TX. Корпус — распределительная коробка, самая дешевая, из Леруа Мерлен, 19 рублей. Вообще, бюджет — смотря где брать, но очень недорого.
+
avatar
0
Проект мой. Железки — что под рукой были, то и взял.
Ясно.
Релюшка, экран, ардуина и логгер. Список компонентов в шапке скрипта.
Видел список, но там же не указаны конкретные железки. :)
Подключается все по стандартной схеме — IIC на A4 и A5, релюшка на 2, логгер на RX TX.
Это очевидно, но понятно не для всех. А это уменьшение ЦА и как следствие снижение продажи конкретного, обозреваемого девайса.

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

Типа/пример: коробочку купил в леруа, потому что дешево, но подойдет любая размером «таким-то», датчики юзал такие-то, но вот ссылки на аналогичные и т. д. Это расширит ЦА, во всех смыслах. Вам «кармы» больше даст и иже. Тут могу много букв написать, но не буду. Просто скажу так/пример: я читаю блоги Кирича по ЛБП потому что он все расписывает детально, дает ссылки и иже. То есть мне не нужно обращаться к гуглу, задавать ему много вопросов и т. д.
+
avatar
  • SergeVB
  • 27 октября 2018, 18:45
0
Автор подскажите — а что за плата присоединена к плате дисплея?
+
avatar
0
Конвертер в I2C
+
avatar
  • SergeVB
  • 27 октября 2018, 19:33
0
Как искать на али? По какому названию?
+
avatar
0
Есть дисплеи которые уже продаются с такими конвертерами нпр.:
https://aliexpress.com/item/item/Special-promotions-LCD-1602-module-Blue-screen-IIC-I2C-for-arduino-LCD1602-Adapter-plate/1967124495.html
+
avatar
  • gera911
  • 20 января 2019, 17:50
0
Приветствую! Просьба помочь разобраться — а на Nodemcu V3 к каким входам/выходам подключать датчик, экран, реле и логгер? Для логгера библиотеку разве не надо подключать, он и так, сам по себе будет работать?
+
avatar
0
Скажите пожалуйста, какую конкрето библиотеку LiquidCrystal_I2C использовали? Сейчас их по сети гуляет очень много. Спасибо!
+
avatar
  • Cqm
  • 21 января 2020, 14:00
0
Этой микросхемой можно ток 200-300 uA при 12в померить? шунт какой нужен буде для хотяб точности 1-5%,?
+
avatar
  • L2014
  • 19 декабря 2020, 21:44
0
Здорово, можно свой разрядник сделать…
+
avatar
  • noanylag
  • 23 декабря 2020, 13:37
0
А какие последствия при возможном коротком замыкании выходных клемм под напряжением?
Вероятно микросхема выйдет из строя под воздействием разрядного тока конденсаторов фильтра, который будет значительно больше трех ампер. Реле уж точно не отработает превышение тока. Да и есть сомнения что сама микросхема успеет…
А такая ситуация вполне возможна.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.