Мини-обзор монитора тока INA219 с выходом I2C

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Давно хотелось использовать какое-то очень простое и при этом достаточно качественное решение для измерения тока, и вот выбор пал на микросхему от техаса INA219.  Это специализированный чип для измерения тока, напряжения и мощности с выходом на шину I2C.  Никакого обвеса почти не требуется, только минимум -шунт, подтяжка шины, блокировочная ёмкость. ( на фото ниже установлен ещё корпус 78L05 и дополнительный фильтр на входе) АЦП сигма-дельта 12бит, программно задаются делители входа измерения тока для напряжения на шунте 40мв,80мв,160мв,320мв, и вход измерения напряжения 16 или 32вольта. По даташиту максимальное напряжение измеряемого тока 26вольт положительной полярности. Точность около 1%, напряжение питания 3...5,5в.  Один отсчёт (LSB) при измерении напряжения равен  4мв, при измерении тока -от 10мкв и больше (в зависимости он сопротивления шунта и делителя входа). Есть встроенная возможность усреднения результата (до 128 отсчётов). Девиация результатов счёта напряжения есть, но незначительная, не более (x + 4мв), а девиация при измерении тока зависит от множества параметров. В данном случае
 (на фото) она была менее 1ма. Никакой программной обработки результата счёта не требуется, чип сразу выдаёт напряжение в вольтах. Входной делитель тоже не требуется, т.к. вход уже рассчитан под полную шкалу 26в по даташиту.  В интернет-магазинах есть готовые шилдики от adafruit по $10 http://www.adafruit.com/products/904 , или на ту же сумму можно купить пяток микросхем на али. Я сам сделал маленькую платку для тестирования.
В инете для этого чипа можно найти 2 библиотеки под ардуино, одна от adafruit -неплохая, но в ней нет возможности что-то настроить под свои нужды, даже элементарно сопротивление шунта не изменить. И вторая, более-менее полноценная http://www.johngineer.com/blog/?p=1178, в ней уже можно почти всё настроить, правда авторы библы поленились все это описать. Выводы: данный чип удобное решение для большинства задач измерения напряжения и тока не требующих сверх высокой точности.   Скетч:

#include <Wire.h>
#include <ina219.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
INA219 monitor;
void setup() {
lcd.begin(16, 2);
 monitor.begin(64); // i2c address 64=0x40
 monitor.configure(0, 2, 11, 11, 7);
// range, gain, bus_adc, shunt_adc, mode
// range = 1 (0-32V bus voltage range)
// gain = 3 (1/8 gain - 320mV range)
// bus adc = 3 (12-bit, single sample, 532uS conversion time)
// shunt adc = 3 (12-bit, single sample, 532uS conversion time)
// mode = 7 (continuous conversion)
  monitor.calibrate(0.065, 0.16, 16, 2); 
 //R_шунта, напряж_шунта, макcнапряж, максток
  }
void loop() {
delay(300);
lcd.setCursor (0,0);
lcd.print(monitor.busVoltage()); lcd.print("v");
lcd.setCursor (0,1);
lcd.print(monitor.busPower()); lcd.print("W");
lcd.setCursor (8,0);
lcd.print(monitor.shuntCurrent() * 1000,0); lcd.print("mA");
}


 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Как раз такой модуль подключаю к проекту esp8266. Я написал код, а пользователь тестирует у себя. Пока не ясно почему, но ток не отображает..Напряжение выводиться отлично.

Основа кода для esp8266 - код adafruit, там все настройки находятся внутри библиотеки - вроде все ясно, есть описания настроек и несколько преднастроенных функций. Тут надо изучить хорошо даташит чтобы понять как работать с этим датчиком :)

Получилось ли запустить adafruit ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

MaksMS, если ток не отображает, то вероятно  чип не получает данные в кофигурационный регистр? Впрочем я не силён пока в нюансах)  Да, я и эдафрутовскую библиотеку немножко поизучал.  Всё  с ней работает, но просто неудобства конфигурирования вынудили сразу отказаться.. Там внутри спрятано три профиля, но ни один не понравился. Создал свой, но выяснилось что возможности усреднять результат измерения напряжения совсем не предусмотрено, хотя для тока это возможно. А во второй библиотеке всё вынесено, хотя тоже есть свои странности. Меня ещё очень заинтересовала программа для конфигурирования этого чипа, которую можно скачать с сайта. Только вопрос через чего его подключить к компу, в описании предлагается использовать специальный отладочный модуль, который в свою очередь подключается в юсб-порт компа. Но наверняка ведь можно какой-то переходник USB-I2C использовать т.к. судя по картинкам модуль определяется как обычное USB HID устройство.

MaksMS
Offline
Зарегистрирован: 11.03.2013

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

MaksMS, наверное всё таки что-то с калибровкой у вас, как раз для вывода напряжения она не нужна, а вот  для тока -нужна.  Напрашивается  перед выводом тока прочесть регистр 0x05 (калибровка) , если там ноль -то логично что выводит 0.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Да, уже нашел ошибку в функции записи в регистр. Спасибо :)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

MaksMS, попробывал вашу прошивку для esp8266, очень интересно, понравилось :) Появилось предложение по INA219, можно ли в веб-интерфейс вынести ещё настройку 2х байтов (конфигурации и калибровочного) т.к. настройки по умолчанию не всем подойдут..

PS заодно дополню свою тему, -вариант скетча без спец. библиотеки.  Нужно по даташиту определиться с конфигурацией, и по программе (ссылка в сообщении#2) рассчитать калибровочную константу.

#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.begin(16, 2);
Wire.begin();
ina219_write(0x00, 0x37ff);// значение конфигурационного регистра по даташиту
//текущ.конфигурация  00 1 10 1111 1111 111 = 0x37FF (на 26й странице даташита)
ina219_write(0x05, 6300);// рассчитанное значение калибровочной константы по даташиту или программе
}

void loop() {
//чтение регистров напряжения и тока
int busvolt = ina219_read(0x02); 
// bitRead(busvolt,1); // "Conversion Ready" если 1 данные не готовы. //пригодится
// bitRead(busvolt,0); // "Math Overflow Flag" если 1 перегрузка входа. //пригодится 
busvolt >>=3;// избавится от лишних (вышеописанных) информационных бит. Стр.30 даташита
lcd.setCursor (0,0);
lcd.print(busvolt*4); lcd.print("mV"); //один LSB=4mv
//--------------------------------------
int tok = ina219_read(0x04);
lcd.setCursor (8,0);
lcd.print(tok/10 ); lcd.print("mA"); // LSB в расчётах был = 100 mkA, поэтому просто.
lcd.setCursor (0,1);
lcd.print(ina219_read(0x03)*2 ); // вывод мощности
lcd.print("mW");
/*
//тестовый вывод конфигурационного и калибровочного регистра
lcd.print(ina219_read(0x00),HEX);  lcd.print("/");
lcd.print(ina219_read(0x05)); 
*/
} // *** END void loop ***////


// функция записи в конфигурационные регистры INA219
void ina219_write(byte adr, int cfg) {
Wire.beginTransmission(0x40);
Wire.write(adr);
Wire.write((cfg >> 8) & 0xFF);       
Wire.write(cfg & 0xFF);              
Wire.endTransmission();
}  
  
//функция чтения данных из регистров INA219
int ina219_read(byte adr) {  
Wire.beginTransmission(0x40);
Wire.write(adr);
Wire.endTransmission();
Wire.requestFrom(0x40,2);
int value = ((Wire.read() << 8) | Wire.read());
return value;
}  

 

gena
Offline
Зарегистрирован: 04.11.2012

  А не делал ли кто попытки доработки схемы для измерения напряжения более 26 В? Ну скажем до 40 В. 

MaksMS
Offline
Зарегистрирован: 11.03.2013

dimax, да, можно по идее реализовать, но надо больше вникать в эти калибровки модуля. 

gena, ставите делитель из резисторов и умножаете принятые данные на число ,на  которое делили напряжение..

У меня данной микросхемы нет и тестов сделать не могу.

PS К сожалению оповещение о теме тут не работает по этому отвечаю спустя полмесяца)

xxoma
Offline
Зарегистрирован: 13.02.2014

Не подскажете как реализовать делитель для измерения напряжения выше 26В?

Пробовал обычный резистивный делитель от +Vin и к земле. Тогда ток зашкаливает. В общем не то...

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

xxoma, по-моему никак. Есть более крутой собрат INA226 он до 36 вольт +имеется отдельный вход для измерения напряжения. + более высокая разрядность (кажется 15 бит) , и ещё какие-то вкусности.

xxoma
Offline
Зарегистрирован: 13.02.2014

dimax пишет:

xxoma, по-моему никак. Есть более крутой собрат INA226 он до 36 вольт +имеется отдельный вход для измерения напряжения. + более высокая разрядность (кажется 15 бит) , и ещё какие-то вкусности.

Понятно, просто есть у меня ina219(было две, одну уже сжег) и нужно измерять ток с шунта и напряжение до 60В а желательно до 100. А другие варианты типа ina226 нужно из за бугра заказывать((

MaksMS
Offline
Зарегистрирован: 11.03.2013

Как это никак ? Ставим, например в самом простом  варианте делитель 10к+10к на входе . А выдаваемые показания умножаем на два в данном случае..

 

 

xxoma
Offline
Зарегистрирован: 13.02.2014

MaksMS пишет:

Как это никак ? Ставим, например в самом простом  варианте делитель 10к+10к на входе . А выдаваемые показания умножаем на два в данном случае..

 

 

Если не трудно накидайте схему и я протестирую. Так как по моему все таки и на самом деле никак.

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Ну в интернете можно найти без проблем схему делителя на резисторах...

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

MaksMS, тогда уж нужно 2 делителя., ведь при измерении тока используется дифф режим. Тем не менее не видя полной принципиальной схемы входной части чипа ( не известно же какой обвес на входном ОУ)  я бы побоялся предпологать, что можно просто  делителями обойтись.

xxoma, вам нужно подобрать монитор тока с режимом LOW-SIDE что б включить его в цепь минуса, тогда напряжение по плюсу не будет иметь никакого значения. Кстати Ina226 как раз поддерживает и LOW и HIGH-SIDE :)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

xxoma, в принципе INA219 считается HIGH-SIDE  исключительно из-за того, что один вывод используется  для измерения и напряжения и тока. Если вы откажитесь измерять напряжение инкой, то можете смело ставить её в разрыв общего провода, и измерять свои амперы на 100вольтах. ИТОГО: Плюс источника питания 100вольт соединить с плюсом нагрузкиЗемлю источника питания 100вольт  подать на  Vin- ногу , а землю нагрузки на Vin+  ногу. (шунт при этом  обязательно должен стоять, иначе INA выпустит волшебный дым)  И всё, никаких проблем!   Напряжение можно измерять и встроенным ацп ардуины, пусть и несколько с меньшим качеством.

xxoma
Offline
Зарегистрирован: 13.02.2014

dimax пишет:

xxoma, в принципе INA219 считается HIGH-SIDE  исключительно из-за того, что один вывод используется  для измерения и напряжения и тока. Если вы откажитесь измерять напряжение инкой, то можете смело ставить её в разрыв общего провода, и измерять свои амперы на 100вольтах. ИТОГО: Плюс источника питания 100вольт соединить с плюсом нагрузкиЗемлю источника питания 100вольт  подать на  Vin- ногу , а землю нагрузки на Vin+  ногу. (шунт при этом  обязательно должен стоять, иначе INA выпустит волшебный дым)  И всё, никаких проблем!   Напряжение можно измерять и встроенным ацп ардуины, пусть и несколько с меньшим качеством.

Спасибо! Вечером попробую! У меня сейчас напряжение измеряется ацп атмеги, точности хватает. А вот ток хотелось бы точнее измерять. Отпишусь о результатах.
Кстати, интересно ina219 переключает вход(в даташите указан условный переключатель) на измерение напряжение в любом случае или только когда идет обращение к регистру содержащем значение измеряемого напряжения? Хотя наверное что бы это проверить прийдется рискнуть еще одной ina а она у меня последняя осталась)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

xxoma пишет:

Кстати, интересно ina219 переключает вход(в даташите указан условный переключатель) на измерение напряжение в любом случае или только когда идет обращение к регистру содержащем значение измеряемого напряжения? Хотя наверное что бы это проверить прийдется риснуть еще одной ina а она у меня последняя осталась)

По умолчанию -непрерывные запросы на ток и напряжение поочереди . Это настраивается в конфиге, 27 страница даташита. Лучше перенастроить на только шунт-непрерывно.

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

Ребят, можно вопрос от новичка ?

а как схематично подключить этот модуль в автомобиле чтоб мерять напряжение и по возможности ток бортовой сети

у мня вот такой модуль пришел 

не пойму где в разрыв в автомобиле брать точки 

и надо ли шунт менять ?

все это будет использоваться для вывода данных через ардуино на планшет спомощью вот этой

замечательной проги :)

ну если еще поможете внедрить это в мой скетч буду очень признателен

вот мой скетч:

#include <OneWire.h>
#include <DallasTemperature.h>
char incomingByte;
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0;
float R2 = 10000.0;
int value = 0;
OneWire OW_tempa(9);
OneWire OW_tempb(10);
OneWire OW_tempc(11);
DallasTemperature tempa(&OW_tempa);
DallasTemperature tempb(&OW_tempb);
DallasTemperature tempc(&OW_tempc);
DeviceAddress tempaAddress, tempbAddress, tempcAddress;
void setup(void){
Serial.begin(9600);
pinMode(analogInput,INPUT);
tempa.begin();
tempb.begin();
tempc.begin();
}
void loop(void){
  value = analogRead(analogInput);
  vout = (value*5.0)/1024.0;
  vin = vout/(R2/(R1+R2));
  if(vin<0.09){
    vin = 0.0;
  }
tempa.requestTemperatures();
delay(700);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
tempb.requestTemperatures();
delay(700);
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
tempc.requestTemperatures();
delay(700);
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(700);
Serial.print("<Voltage:");
Serial.print(vin,2);
Serial.println(">");
}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ток и стартера тоже?

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

вот и я тут не допонимаю  .... конечно стартер мне мониторить ни к чему :)

переделывать силовую проводку в авто под эту платку -как-то нелепо выглядит 

фиг знает - может я конечно где-то не допонимаю....

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

да хрен с ним с током ,главное напряжение видеть 

ну чтоб генератор мониторить 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

 

 

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

jeka_tm пишет:

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

 

 

это я знаю ,и на Али это я все видел ,цэ не то...

у мня карпс в машине на планшете ,и я показания разных датчиков вывожу на экран кое что уже

сделано ,вот хотел это еще прикрутить ,спрашиваю совета

я ссылки выше вроде приводил...

как бы топик стартеру в личку написать ,немогу понять как тут это сделать ?

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Serg-Zmuh, я не знаю чем вам помочь. Куда включать модуль в вашем автомобиле, какие токи там текут, как выбрать шунт -это к специалистам по авто-электрике. На том-же pccar.ru  этот вопрос было бы уместнее задать.  А про програмнную часть подключения в верхних сообщения всё разжевано, ссылки на библиотеки даны.

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

dimax пишет:

Serg-Zmuh, я не знаю чем вам помочь. Куда включать модуль в вашем автомобиле, какие токи там текут, как выбрать шунт -это к специалистам по авто-электрике. На том-же pccar.ru  этот вопрос было бы уместнее задать.  А про програмнную часть подключения в верхних сообщения всё разжевано, ссылки на библиотеки даны.

 да вроде как сам автоэлектрик немного ,автосигналками занимаюсь

а тут как-то в тупике .... как это реализовать 

в идеале хотелось бы сделать мониторинг токов авто при заботающем двигателе 

ну там фары ,генератор 

это реально ,или лучше не заморачиваться?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

конечно реально. другой вопрос сколько времени/денег уйдет. и на постоянную основу или для тестирования какого либо авто

как по мне самый простой способ это вместо предохранителей втыкается измеритель с предохранителем. но хз сколько датчиков надо будет))

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

jeka_tm пишет:

конечно реально. другой вопрос сколько времени/денег уйдет. и на постоянную основу или для тестирования какого либо авто

как по мне самый простой способ это вместо предохранителей втыкается измеритель с предохранителем. но хз сколько датчиков надо будет))

да только себе с машину хочу ,и много датчиков мне не нужно ,просто видеть один общий параметр

я не понимаю другое - как к этому дакчику можно подать большие нагрузки ,например 40 ампер ??

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

датчик .... это же фигня получается ,я так думаю

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

авто какое?

а с чего ты взял 40А? больше думаешь не может быть? в форде например от 10 до 60А предохранители стоят

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

конечно у мну там гораздо больше :) ,это ятак по-скромничал 

у меня паджеро 2 ,там 2 акума 80-ки стоят :) ,машина дизель 94 года ,естественно все аналоговое ,ни каких OBD там нету (

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

схему, в которой можно было бы понять какой провод резать, не нашел

да и шунт будет большой

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

вот шунт нашел

заказал уже ,теперь буду прикидывать куда эти 10 см воткнуть )

буду пробовать в подкапотную коробку установить 

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не понял всей настройки

monitor.calibrate(0.065, 0.16, 16, 2);
//R_шунта, напряж_шунта, макcнапряж, максток

на что влияют макс напряжение и ток в настройке, да инапряжение шунта. это напряжение на шунте при максимальном напряжении и токе?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

jeka_tm,  я уже детали стал подзабывать, но кажется макс. измеряемое напряжение действительно ни на что не влияет. Там 2 варианта допустимы 16 или 32.   Ток и напряжение шунта -да, максимальные. Причём напряжение шунта ставятся не от балды, а  выбирается из нескольких вариантов по даташиту.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

понятно. пришел модуль просто. думал все проще

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

Получил шунт 200А 75мВ

Начал эксперименты ......

вопросы есть ,как правильно выставить параметры  чтоб более-менее правильно считывало:

monitor.configure(0, 3, 11, 11, 7); 

// (range, gain, bus_adc, shunt_adc, mode)

// range = 1 (0-32V bus voltage range)
// gain = 3 (1/8 gain - 320mV range)
// bus adc = 3 (12-bit, single sample, 532uS conversion time)
// shunt adc = 3 (12-bit, single sample, 532uS conversion time)
// mode = 7 (continuous conversion)
// test shunt = 115mm of 22AWG solid copper = 0.3 Ohms
monitor.calibrate(0.15, 0.075, 16, 50);
//R_шунта, напряж_шунта, макcнапряж, максток
шунт установлен в машине бортовое напряжение 12вольт 
 
вот примерный скетч который использую:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <INA219.h>
INA219 monitor;
char incomingByte;
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0;
float R2 = 10000.0;
int value = 0;
OneWire OW_tempa(9);
OneWire OW_tempb(10);
OneWire OW_tempc(11);
DallasTemperature tempa(&OW_tempa);
DallasTemperature tempb(&OW_tempb);
DallasTemperature tempc(&OW_tempc);
DeviceAddress tempaAddress, tempbAddress, tempcAddress;
void setup(void){
Serial.begin(9600);
  monitor.begin(64); //i2c address
  monitor.configure(0, 3, 11, 11, 7); 
// (range, gain, bus_adc, shunt_adc, mode)
// range = 1 (0-32V bus voltage range)
// gain = 3 (1/8 gain - 320mV range)
// bus adc = 3 (12-bit, single sample, 532uS conversion time)
// shunt adc = 3 (12-bit, single sample, 532uS conversion time)
// mode = 7 (continuous conversion)
// test shunt = 115mm of 22AWG solid copper = 0.3 Ohms
monitor.calibrate(0.15, 0.075, 16, 50);
//R_шунта, напряж_шунта, макcнапряж, максток
pinMode(analogInput,INPUT);
tempa.begin();
tempb.begin();
tempc.begin();
}
void loop(void){
 
  {
  Serial.println("******************");
  Serial.print("raw shunt voltage: ");
  Serial.println(monitor.shuntVoltageRaw());
  Serial.print("raw bus voltage:   ");
  Serial.println(monitor.busVoltageRaw());
  Serial.println("--");
  Serial.print("shunt voltage: ");
  Serial.print(monitor.shuntVoltage(), 4);
  Serial.println(" mV");
  Serial.print("shunt current: ");
  Serial.print(monitor.shuntCurrent() * 1000, 4);
  Serial.println(" mA");

  Serial.print("bus power:     ");
  Serial.print(monitor.busPower() * 1000, 4);
  Serial.println(" mW");
  Serial.println(" ");
  Serial.println(" "); 
  
}
  value = analogRead(analogInput);
  vout = (value*5.0)/1024.0;
  vin = vout/(R2/(R1+R2));
  if(vin<0.09){
    vin = 0.0;
  }
tempa.requestTemperatures();
delay(700);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
tempb.requestTemperatures();
delay(700);
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
tempc.requestTemperatures();
delay(700);
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(700);
Serial.print("<busvoltage:");
Serial.print(monitor.busVoltage(), 4);
Serial.println(">");
Serial.print("<Voltage:");
Serial.print(vin,2);
Serial.println(">");
for(int i = 0; i < 100; i++);

}

пока на планшет выводятся показания 3-х датчиков и напряжение борт. сети через делитель и с собственно с INA.

наблюдаю интересный момент ,пока мотор не запущен все показывает боле-менее правильно,стоит завестись показания тока 

уходят в минус и почемуто и скачут в больших пределах ,напряжение норм показывает ,что может быть не так ?

 
dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Serg-Zmuh, у вас что, сопротивление шунта 0,15 Ом ? Оно бы на 200 амперах засветилось бы как лампочка.

monitor.calibrate(0.15, 0.075, 16, 50);
//R_шунта, напряж_шунта, макcнапряж, максток

 

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

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

точного мультиметра у меня нету

я в настройках выставлял 0.01- так показания еще больше загоняют

я в остальных настройках калибровки разобраться не могу ,что для чего 

//R_шунта, напряж_шунта, макcнапряж, максток

первое понятно ,второе -как определить ?,третье- тут понятно,четвертое- тут что ,макс ток шунта или потребления?

monitor.configure(0, 2, 11, 11, 7); а тут вообще не понял что изменять

разжуй пожалуйста )

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

напримет такой шунт

R=Uш/Iш

Uш=0,075

Iш=15

например напряжение в сети автомобиля, возьмем макс напряжение 16В, и макс ток 15А. получается

monitor.configure(0.005, 0.075, 16, 15)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Serg-Zmuh пишет:

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

Про закон Ома что нибудь слышали? Любой из трёх параметров (ток, сопротивление, напряжение)  цепи можно вычислить имея два других. Надеюсь рассчитаете сами :-)

Serg-Zmuh пишет:

я в остальных настройках калибровки разобраться не могу ,что для чего 

//R_шунта, напряж_шунта, макcнапряж, максток

первое понятно ,второе -как определить ?,третье- тут понятно,четвертое- тут что ,макс ток шунта или потребления?

Что определить? Всё определено -75 мВ.  Четвёртое - максимальный ток в нагрузке.

Serg-Zmuh пишет:

monitor.configure(0, 2, 11, 11, 7); а тут вообще не понял что изменять  разжуй пожалуйста )

Разжёвано в скетче из шапки топика. Вам нужно такие параметры: 1,1,15,15,7 что соответствует настройкам: 

( до 32 вольт), (±80mV), (128 сэмплов),(128 сэмплов), (Shunt and Bus, Continuous)

 

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014
вот что выдает с этими параметрами монитор порта:
raw shunt voltage: 7
raw bus voltage:   25170
shunt voltage: 0.0001 mV
<A-ina:15.8722>
<V-ina:12.5840>
bus power:     197.7520 mW
если честно я ни чего не понимаю , 
реальное потребление около 1 ампера(мултиметром мерял) - показывает 15.8722 
 
поетому я и стал настройками играться ,делал: monitor.calibrate(0.1, 0.2, 16, 200); так хоть меньше врет .
похоже я где-то туплю - не могу понять костыль....
и еще вопрос ,а как можно градацию точности до десятых снизить ,ну не нужна тут такая точность 
 
P.S. я ведь не такой продвинутый как вы , в програмировании почти ноль (
dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Serg-Zmuh пишет:

вот что выдает с этими параметрами монитор порта:
<A-ina:15.8722>
Какое сопротивление шунта указано в функции калибровки, вы рассчитали как я сказал?

Serg-Zmuh пишет:

P.S. я ведь не такой продвинутый как вы , в програмировании почти ноль (

Ну так не ставьте себе задачи неадекватные имеющемуся опыту. Учите язык, тренируйтесь на чём-то попроще.

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

ставил monitor.configure(0.005, 0.075, 16, 15)

да все что меньше чем R_shunt 0.1 ставлю начинает в разы врать 

там ведь еще провода от шунта метра 2 до ины идут .... ,может в этом дело фиг знает 

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Serg-Zmuh, откуда эта цифра 0.005 ????  От балды? От балды вам измерение 15 ампер.  Прочитайте наконец закон Ома и рассчитайте сопротивление.

Провода от шунта до входа INA - сантиметров 5 максимум, иначе наловите помех.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Serg-Zmuh пишет:

ставил monitor.configure(0.005, 0.075, 16, 15)

да все что меньше чем R_shunt 0.1 ставлю начинает в разы врать 

там ведь еще провода от шунта метра 2 до ины идут .... ,может в этом дело фиг знает 

это я написал для конкретного шунта, у тебя какой?

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

выше jeka_tm написал , я его показания поставил

шунт 200А 75мВ вот мой шунт

я понимаю если бтам погрешности не большие были ,но не на столько же ....

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Serg-Zmuh, У меня уже нет сил комментировать это культурными словами. Поэтому пишу в последний раз. Посмотрите коммент #38 от jeka_tm внимательно. Он написал какой он использовал шунт, он написал ВАМ формулу по которой он рассчитывал. Так за каким извините хреном вы вставляете его полученное значение в свой скетч?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

0,000375 0,075 16 200

Serg-Zmuh чукча не читатель, чукча писатель?

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

dimax пишет:

Serg-Zmuh, откуда эта цифра 0.005 ????  От балды? От балды вам измерение 15 ампер.  Прочитайте наконец закон Ома и рассчитайте сопротивление.

Провода от шунта до входа INA - сантиметров 5 максимум, иначе наловите помех.

ууу.... тогда надо где-то под капотом ИНУ прятать и....  герметезировать ,вот этого я не знал (

а если экранированный провод кинуть ? или безтолку ?

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

Ладно больше доставать не буду (

буду ИНУ переносить ..... под капот 

всем ОГРОМНОЕ спасибо !  

Serg-Zmuh
Offline
Зарегистрирован: 11.08.2014

jeka_tm пишет:

0,000375 0,075 16 200

Serg-Zmuh чукча не читатель, чукча писатель?

да вот так получилось - извените )