полюбому под капорт возле шунта, это не наша хотелка чтобы тебе сложнее было, просто так надо, и провода я бы поставил толстые между микрухой и шунтом, никак не тонкие 0,1-0,2мм
полюбому под капорт возле шунта, это не наша хотелка чтобы тебе сложнее было, просто так надо, и провода я бы поставил толстые между микрухой и шунтом, никак не тонкие 0,1-0,2мм
да уже понял , просто не знал (
а в скетче можно как-то градацию занизить , сотых было бы достаточно ?
Serg-Zmuh, я не знаю чем вам помочь. Куда включать модуль в вашем автомобиле, какие токи там текут, как выбрать шунт -это к специалистам по авто-электрике. На том-же pccar.ru этот вопрос было бы уместнее задать. А про програмнную часть подключения в верхних сообщения всё разжевано, ссылки на библиотеки даны.
да вроде как сам автоэлектрик немного ,автосигналками занимаюсь
а тут как-то в тупике .... как это реализовать
в идеале хотелось бы сделать мониторинг токов авто при заботающем двигателе
ну там фары ,генератор
это реально ,или лучше не заморачиваться?
В классике (ГАЗ-51) весь потребляемый авто ток шёл через амперметр (за исключением стартерного)
Помогите поправить скетч для работы с этим датчиком INA219, по описанию до 3.2 ампера, в реальных измерениях на этом скетче упёрся в 800 попугаев, дальнейшее наращивание тока до 1 ампера упирается в эту цифру
#include <Wire.h>
#include "ina219.h"
INA219 monitor;
void setup() {
Serial.begin(9600);
monitor.begin(64); // i2c address 64=0x40
monitor.configure(0, 1, 3, 3, 7);
/* конфигурируем режим датчика тока INA219
* 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)
* mode = 7 (continuous conversion)
*/
monitor.calibrate(0.100, 0.075, 16, 3);
//R_шунта, напряж_шунта, макc_напряж, макс_ток
}
void loop() {
for (int i=1; i<16; i++){
delay(300);
Serial.print(monitor.busVoltage()); Serial.println(" - v");
Serial.print(monitor.shuntCurrent() * 1000,0);Serial.print(" - ");
}
Serial.println();
}
Изменил строку калибровки установив напряжение шунта 320 милливольт, ничего не поменялось, упираюсь в 800 попугаев
Это в порту
Помогите поправить скетч для работы с этим датчиком INA219, по описанию до 3.2 ампера, в реальных измерениях на этом скетче упёрся в 800 попугаев, дальнейшее наращивание тока до 1 ампера упирается в эту цифру
#include <Wire.h>
#include "ina219.h"
INA219 monitor;
void setup() {
Serial.begin(9600);
monitor.begin(64); // i2c address 64=0x40
monitor.configure(0, 1, 3, 3, 7);
/* конфигурируем режим датчика тока INA219
* 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)
* mode = 7 (continuous conversion)
*/
monitor.calibrate(0.100, 0.075, 16, 3);
//R_шунта, напряж_шунта, макc_напряж, макс_ток
}
void loop() {
for (int i=1; i<16; i++){
delay(300);
Serial.print(monitor.busVoltage()); Serial.println(" - v");
Serial.print(monitor.shuntCurrent() * 1000,0);Serial.print(" - ");
}
Serial.println();
}
Изменил строку калибровки установив напряжение шунта 320 милливольт, ничего не поменялось, упираюсь в 800 попугаев
Это в порту
Dmitriyxz, нужно внимательнее читать материал. По ссылке из топика на готовые шилдики были все параметры. Максимальный ток стандартного модуля 3,2А. Для бОльшего тока нужно менять шунт.
Здравствуйте! Заказал у китайца Модуль на основе ina219 для одного проекта. Решил протестировать. Подключил к Ардуино, загнал тестовый скетч - не идут показания тока. Через монитор порта смотрю - напряжение на шунте есть, а тока нет. Может это указывать на на неисправность модуля? Опробовал обе библиотеки, ссылки на которые даны в начальном топике.
Здравствуйте! Заказал у китайца Модуль на основе ina219 для одного проекта. Решил протестировать. Подключил к Ардуино, загнал тестовый скетч - не идут показания тока. Через монитор порта смотрю - напряжение на шунте есть, а тока нет. Может это указывать на на неисправность модуля? Опробовал обе библиотеки, ссылки на которые даны в начальном топике.
вверху есть кусок рабочего скетча правильно выводящего значение тока в порт )))
#include <Wire.h>
#include "ina219.h"
INA219 monitor;
void setup() {
Serial.begin(9600);
monitor.begin(64); // i2c address 64=0x40
monitor.configure(0, 2, 11, 11, 7);
/* конфигурируем режим датчика тока INA219
* 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)
* mode = 7 (continuous conversion)
*/
monitor.calibrate(0.100, 0.32, 16, 3);
//R_шунта, напряж_шунта, макc_напряж, макс_ток
}
void loop() {
for (int i=1; i<16; i++){
delay(300);
int j = monitor.shuntCurrent() * 1000;
Serial.print(j);Serial.print(" - ");
// Serial.print(monitor.shuntCurrent() * 1000,2);Serial.print(" - ");
Serial.print(monitor.busVoltage()); Serial.println(" - v");
}
Serial.println();
}
До этого китаец мне вместо INA219 прислал по ошибке INA226. Я его сейчас проверил - претензий к нему нет. Точно показывает и ток и напряжение.
А этот модуль на INА219, независимо от тока, в монитор порта выдает 40 мв (падение напряжения на шунте). Ещё заметил, что мощность подсчитывает правильно. Короче полурабочий он какой то.
yucan, на основании ваших сведений не сделать вывод. Нужно 1) схема включения. 2)фото подключения модуля с источником питания и нагрузкой в высоком разрешении. 3) фактический ток, измеренный включённым последовательно в цепь миллиамперметром. 3) фактические напряжения, измеренные вольтметром относительно Gnd и входов Vin- и Vin+ 5)фактическое напряжение на шунте, измеренное милливольтметром.
Спасибо, dimax. Сейчас фото не смогу, а схема - такая. На +Vin подаю от регулируемого источника напряжения. В качестве нагрузки - автомобильная лампочка на 12 вольт. Напряжение на шунте меняется при регулировке напряжения с блока питания. По подобной же схеме подключал модуль (шилд) на INA226, там всё нормально работает.
Спасибо, dimax. Сейчас фото не смогу, а схема - такая. На +Vin подаю от регулируемого источника напряжения. В качестве нагрузки - автомобильная лампочка на 12 вольт. Напряжение на шунте меняется при регулировке напряжения с блока питания. По подобной же схеме подключал модуль (шилд) на INA226, там всё нормально работает.
Вот по быстрому спаял схемку с индикатором из первого поста. И вот три показания индикатора при напряжении 2, 5 и 8 вольт. Напряжение на шунте меняется, а ток - нет. Заметил вот что. При плавном увеличении напряжения от нуля до примерно полтора вольта, показания тока меняются. Далее на отметке 15 ма показания застывают.
Перемычки на месте. Без них ардуино не видит модуль. Спор открыл, а пока думаю заказать пару шилдов у разных продавцов. Хотя всё равно остается вероятность попасть на брак
Там должна быть замкнута (припоем) либо A0 либо А1, в разомкнутом состоянии есть неопределённость, правда некоторые экземпляры работали и без перемычек, но из последней партии меряли абы что (по току) пришлось замкнуть )))
И зачем было городить городьбу с просволочкой??? )))
Закажите хотя бы 3 шт, при 30% браке есть надежда
Если говорим об этом коде - однозначно не заработает, шунты то разные )))
смотрим строка 16 инициализации INA, на этом датчике шунт 0.1 Ом и должна выглядеть как-то так: monitor.calibrate(0.1, 0.320, 16, 2);
Там, где стоят надписи А0 и А1 присутствует 5 вольт. Адресные точки находятся слева. Для адреса 40H их нужно заземлить, что я и сделал. Вобщем заказал я модули.
Там, где стоят надписи А0 и А1 присутствует 5 вольт. Адресные точки находятся слева. Для адреса 40H их нужно заземлить, что я и сделал. Вобщем заказал я модули.
"Многие знания многие печали" - не надо ничего придумывать, замкни A0 и проверь сканером порта адрес устройства, поправь, ежели в скетче другой, второе, исправь строку инициализации как привёл выше и "картинко в студио"
Вчера получил оставшиеся 2 модуля на INA219. Оба рабочие. Замечено, что на всех рабочих модулях есть надписи на тыльной стороне. На том, который ток не показвает надписей нет.
Есть вопрос следующего плана:
В библиотеке INA219.H адрес устройства определён жёстко !
Каким образом изменить библиотеку, чтобы адрес устройства можно было определять в скетче?
полюбому под капорт возле шунта, это не наша хотелка чтобы тебе сложнее было, просто так надо, и провода я бы поставил толстые между микрухой и шунтом, никак не тонкие 0,1-0,2мм
полюбому под капорт возле шунта, это не наша хотелка чтобы тебе сложнее было, просто так надо, и провода я бы поставил толстые между микрухой и шунтом, никак не тонкие 0,1-0,2мм
да уже понял , просто не знал (
а в скетче можно как-то градацию занизить , сотых было бы достаточно ?
каюсь - это был последний вопрос )
а чем тебе они мешают? если не нужны не выводи их и все, или тебе принципиально несколько знаков убрать?
а чем тебе они мешают? если не нужны не выводи их и все, или тебе принципиально несколько знаков убрать?
эти показания выводятся виджетом на экран планшета в оверлее ,места много занимают
да и при delay(700) смысла в них нету , если же ускорить , в сериал порте не проходит ...
как-то так )
если ты через serial выводишь можно почитать тут:
https://www.arduino.cc/en/Serial/Print
вот пример
количество знаков после запятой
если ты через serial выводишь можно почитать тут:
https://www.arduino.cc/en/Serial/Print
вот пример
количество знаков после запятой
Да через serial вывожу
Почитал,спасибо ... завтра продолжу ,а то у нас уже 22:30 ,
Пошел я домой )
Для Serg-Zmuh:
Раз вы автоэлектрик, есть датчик тока АКБ, бесконтактный, TOYOTA 28850-23020
Сам датчик Denso 131400-0011
Толком инфы не нашел, но по схеме похож на датчик серии ACS, с аналоговым выходом.
Пока руки не дошли его испытать, зима, в гараже дубак :-(
Хммм.. интересно , с такими датчиками не сталкивался ...,
а по-поводу ИНА , оно работает и на планшет все выводит - но нестабильно , особенно бешенные наводки от
включенного ксенона ...., и экранировал уже и...., короче пока забросил
... ксенона ...
хоть родной ксенон? или правильно установлен? с линзами?
jeka_tm
да нет конечно же ,ксенон не родной ,билинзы сам ставил ,это уже второй комплект
видать с балластами не повезло ,менять буду
сам терпеть ненавижу колхозный ксенон )
Хммм.. интересно , с такими датчиками не сталкивался ...,
а по-поводу ИНА , оно работает и на планшет все выводит - но нестабильно , особенно бешенные наводки от
включенного ксенона ...., и экранировал уже и...., короче пока забросил
Я думаю что вам как-раз надо ACS использовать, т.к. они бесконтактные, на датчике холла.
Стартер им конечно не померяешь, но 30 ампер можно, может и больше есть, не копал.
Делал проект, для управления поворотом и складыванием сидений, вот на такой двуполярной
ацс, сама ацс была модулем к дуньке прилеплена, и реле тоже там-же, а длина проводов до движков
была 1.5 - 2 метра. Все работало как часы.
Двуполярную взял чтобы с фазировкой нагрузки не париться, потом только сообразил, что можно было
ацс в цепь земли включить, и на однополярной сделать, разрешение больше было-бы.
Но было уже поздно, ацс были уже закуплены, хорошая мысля ... как говорится :-)
надо погуглить ,почитать ..., спасибо за идею
надо погуглить ,почитать ..., спасибо за идею
Незачт. :-)
Я так понимаю на таком вольт-ампер метр для двух полярного БП не соберёшь? Напругу ведь меряет с полярностью, к тому же земля общая.
Ясно, с новым годом всех! Эмбеддеры.
Serg-Zmuh, я не знаю чем вам помочь. Куда включать модуль в вашем автомобиле, какие токи там текут, как выбрать шунт -это к специалистам по авто-электрике. На том-же pccar.ru этот вопрос было бы уместнее задать. А про програмнную часть подключения в верхних сообщения всё разжевано, ссылки на библиотеки даны.
да вроде как сам автоэлектрик немного ,автосигналками занимаюсь
а тут как-то в тупике .... как это реализовать
в идеале хотелось бы сделать мониторинг токов авто при заботающем двигателе
ну там фары ,генератор
это реально ,или лучше не заморачиваться?
В классике (ГАЗ-51) весь потребляемый авто ток шёл через амперметр (за исключением стартерного)
Помогите поправить скетч для работы с этим датчиком INA219, по описанию до 3.2 ампера, в реальных измерениях на этом скетче упёрся в 800 попугаев, дальнейшее наращивание тока до 1 ампера упирается в эту цифру
#include <Wire.h> #include "ina219.h" INA219 monitor; void setup() { Serial.begin(9600); monitor.begin(64); // i2c address 64=0x40 monitor.configure(0, 1, 3, 3, 7); /* конфигурируем режим датчика тока INA219 * 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) * mode = 7 (continuous conversion) */ monitor.calibrate(0.100, 0.075, 16, 3); //R_шунта, напряж_шунта, макc_напряж, макс_ток } void loop() { for (int i=1; i<16; i++){ delay(300); Serial.print(monitor.busVoltage()); Serial.println(" - v"); Serial.print(monitor.shuntCurrent() * 1000,0);Serial.print(" - "); } Serial.println(); }Изменил строку калибровки установив напряжение шунта 320 милливольт, ничего не поменялось, упираюсь в 800 попугаев
Это в порту
Пробую библиотеку от adafruit - работает, а вот как воспользоваться другими возможностями этой библиотеки, а именно получение средних значей:
I2C ADDRESS/BITS -----------------------------------------------------------------------*/ #define INA219_ADDRESS (0x40) // 1000000 (A0+A1=GND) #define INA219_READ (0x01) /*=========================================================================*/ /*========================================================================= CONFIG REGISTER (R/W) -----------------------------------------------------------------------*/ #define INA219_REG_CONFIG (0x00) /*---------------------------------------------------------------------*/ #define INA219_CONFIG_RESET (0x8000) // Reset Bit #define INA219_CONFIG_BVOLTAGERANGE_MASK (0x2000) // Bus Voltage Range Mask #define INA219_CONFIG_BVOLTAGERANGE_16V (0x0000) // 0-16V Range #define INA219_CONFIG_BVOLTAGERANGE_32V (0x2000) // 0-32V Range #define INA219_CONFIG_GAIN_MASK (0x1800) // Gain Mask #define INA219_CONFIG_GAIN_1_40MV (0x0000) // Gain 1, 40mV Range #define INA219_CONFIG_GAIN_2_80MV (0x0800) // Gain 2, 80mV Range #define INA219_CONFIG_GAIN_4_160MV (0x1000) // Gain 4, 160mV Range #define INA219_CONFIG_GAIN_8_320MV (0x1800) // Gain 8, 320mV Range #define INA219_CONFIG_BADCRES_MASK (0x0780) // Bus ADC Resolution Mask #define INA219_CONFIG_BADCRES_9BIT (0x0080) // 9-bit bus res = 0..511 #define INA219_CONFIG_BADCRES_10BIT (0x0100) // 10-bit bus res = 0..1023 #define INA219_CONFIG_BADCRES_11BIT (0x0200) // 11-bit bus res = 0..2047 #define INA219_CONFIG_BADCRES_12BIT (0x0400) // 12-bit bus res = 0..4097 #define INA219_CONFIG_SADCRES_MASK (0x0078) // Shunt ADC Resolution and Averaging Mask #define INA219_CONFIG_SADCRES_9BIT_1S_84US (0x0000) // 1 x 9-bit shunt sample #define INA219_CONFIG_SADCRES_10BIT_1S_148US (0x0008) // 1 x 10-bit shunt sample #define INA219_CONFIG_SADCRES_11BIT_1S_276US (0x0010) // 1 x 11-bit shunt sample #define INA219_CONFIG_SADCRES_12BIT_1S_532US (0x0018) // 1 x 12-bit shunt sample #define INA219_CONFIG_SADCRES_12BIT_2S_1060US (0x0048) // 2 x 12-bit shunt samples averaged together #define INA219_CONFIG_SADCRES_12BIT_4S_2130US (0x0050) // 4 x 12-bit shunt samples averaged together #define INA219_CONFIG_SADCRES_12BIT_8S_4260US (0x0058) // 8 x 12-bit shunt samples averaged together #define INA219_CONFIG_SADCRES_12BIT_16S_8510US (0x0060) // 16 x 12-bit shunt samples averaged together #define INA219_CONFIG_SADCRES_12BIT_32S_17MS (0x0068) // 32 x 12-bit shunt samples averaged together #define INA219_CONFIG_SADCRES_12BIT_64S_34MS (0x0070) // 64 x 12-bit shunt samples averaged together #define INA219_CONFIG_SADCRES_12BIT_128S_69MS (0x0078) // 128 x 12-bit shunt samples averaged together #define INA219_CONFIG_MODE_MASK (0x0007) // Operating Mode Mask #define INA219_CONFIG_MODE_POWERDOWN (0x0000) #define INA219_CONFIG_MODE_SVOLT_TRIGGERED (0x0001) #define INA219_CONFIG_MODE_BVOLT_TRIGGERED (0x0002) #define INA219_CONFIG_MODE_SANDBVOLT_TRIGGERED (0x0003) #define INA219_CONFIG_MODE_ADCOFF (0x0004) #define INA219_CONFIG_MODE_SVOLT_CONTINUOUS (0x0005) #define INA219_CONFIG_MODE_BVOLT_CONTINUOUS (0x0006) #define INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS (0x0007)Помогите поправить скетч для работы с этим датчиком INA219, по описанию до 3.2 ампера, в реальных измерениях на этом скетче упёрся в 800 попугаев, дальнейшее наращивание тока до 1 ампера упирается в эту цифру
#include <Wire.h> #include "ina219.h" INA219 monitor; void setup() { Serial.begin(9600); monitor.begin(64); // i2c address 64=0x40 monitor.configure(0, 1, 3, 3, 7); /* конфигурируем режим датчика тока INA219 * 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) * mode = 7 (continuous conversion) */ monitor.calibrate(0.100, 0.075, 16, 3); //R_шунта, напряж_шунта, макc_напряж, макс_ток } void loop() { for (int i=1; i<16; i++){ delay(300); Serial.print(monitor.busVoltage()); Serial.println(" - v"); Serial.print(monitor.shuntCurrent() * 1000,0);Serial.print(" - "); } Serial.println(); }Изменил строку калибровки установив напряжение шунта 320 милливольт, ничего не поменялось, упираюсь в 800 попугаев
Это в порту
Если на клетке с буйволом написано тигр - не верь глазам своим...
Заработало, когда поправил инициализацию как у DIMAX
#include <Wire.h> #include "ina219.h" INA219 monitor; void setup() { Serial.begin(9600); monitor.begin(64); // i2c address 64=0x40 monitor.configure(0, 2, 11, 11, 7); /* конфигурируем режим датчика тока INA219 * 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) * mode = 7 (continuous conversion) */ monitor.calibrate(0.100, 0.32, 16, 3); //R_шунта, напряж_шунта, макc_напряж, макс_ток } void loop() { for (int i=1; i<16; i++){ delay(300); int j = monitor.shuntCurrent() * 1000; Serial.print(j);Serial.print(" - "); // Serial.print(monitor.shuntCurrent() * 1000,2);Serial.print(" - "); Serial.print(monitor.busVoltage()); Serial.println(" - v"); } Serial.println(); }lcd.begin(16, 2); // initialize the lcd monitor.begin(64); // i2c address 64=0x40 // monitor.configure(0, 2, 10, 10, 7); // 4S -2.13ms // monitor.configure(0, 2, 11, 11, 7); // 8S -4.26ms monitor.configure(0, 2, 12, 12, 7); // 16S -8.51ms // monitor.configure(0, 2, 13, 13, 7); // 32S -17.02ms // monitor.configure(0, 2, 14, 14, 7); // 64S -34.05ms // monitor.configure(0, 2, 15, 15, 7); // 128S - 68.10ms // monitor.configure(0, 2, 8, 8, 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.100, 0.32, 16, 3.2); // R_шунта, напряж_шунта, макcнапряж, максток /Да, режимы от 1 до 7 я не использую ввиду особенностей конструкции, в даташите смотрите страницу 20
https://github.com/jarzebski/Arduino-INA219 в копилку библиотек, думаю тут будет всё куда понятнее.
/* INA219 Zero-Drift, Bi-directional Current/Power Monitor. Simple Example. Read more: http://www.jarzebski.pl/arduino/czujniki-i-sensory/cyfrowy-czujnik-pradu... GIT: https://github.com/jarzebski/Arduino-INA219 Web: http://www.jarzebski.pl (c) 2014 by Korneliusz Jarzebski */ #include <Wire.h> #include <INA219.h> INA219 ina; void checkConfig() { Serial.print("Mode: "); switch (ina.getMode()) { case INA219_MODE_POWER_DOWN: Serial.println("Power-Down"); break; case INA219_MODE_SHUNT_TRIG: Serial.println("Shunt Voltage, Triggered"); break; case INA219_MODE_BUS_TRIG: Serial.println("Bus Voltage, Triggered"); break; case INA219_MODE_SHUNT_BUS_TRIG: Serial.println("Shunt and Bus, Triggered"); break; case INA219_MODE_ADC_OFF: Serial.println("ADC Off"); break; case INA219_MODE_SHUNT_CONT: Serial.println("Shunt Voltage, Continuous"); break; case INA219_MODE_BUS_CONT: Serial.println("Bus Voltage, Continuous"); break; case INA219_MODE_SHUNT_BUS_CONT: Serial.println("Shunt and Bus, Continuous"); break; default: Serial.println("unknown"); } Serial.print("Range: "); switch (ina.getRange()) { case INA219_RANGE_16V: Serial.println("16V"); break; case INA219_RANGE_32V: Serial.println("32V"); break; default: Serial.println("unknown"); } Serial.print("Gain: "); switch (ina.getGain()) { case INA219_GAIN_40MV: Serial.println("+/- 40mV"); break; case INA219_GAIN_80MV: Serial.println("+/- 80mV"); break; case INA219_GAIN_160MV: Serial.println("+/- 160mV"); break; case INA219_GAIN_320MV: Serial.println("+/- 320mV"); break; default: Serial.println("unknown"); } Serial.print("Bus resolution: "); switch (ina.getBusRes()) { case INA219_BUS_RES_9BIT: Serial.println("9-bit"); break; case INA219_BUS_RES_10BIT: Serial.println("10-bit"); break; case INA219_BUS_RES_11BIT: Serial.println("11-bit"); break; case INA219_BUS_RES_12BIT: Serial.println("12-bit"); break; default: Serial.println("unknown"); } Serial.print("Shunt resolution: "); switch (ina.getShuntRes()) { case INA219_SHUNT_RES_9BIT_1S: Serial.println("9-bit / 1 sample"); break; case INA219_SHUNT_RES_10BIT_1S: Serial.println("10-bit / 1 sample"); break; case INA219_SHUNT_RES_11BIT_1S: Serial.println("11-bit / 1 sample"); break; case INA219_SHUNT_RES_12BIT_1S: Serial.println("12-bit / 1 sample"); break; case INA219_SHUNT_RES_12BIT_2S: Serial.println("12-bit / 2 samples"); break; case INA219_SHUNT_RES_12BIT_4S: Serial.println("12-bit / 4 samples"); break; case INA219_SHUNT_RES_12BIT_8S: Serial.println("12-bit / 8 samples"); break; case INA219_SHUNT_RES_12BIT_16S: Serial.println("12-bit / 16 samples"); break; case INA219_SHUNT_RES_12BIT_32S: Serial.println("12-bit / 32 samples"); break; case INA219_SHUNT_RES_12BIT_64S: Serial.println("12-bit / 64 samples"); break; case INA219_SHUNT_RES_12BIT_128S: Serial.println("12-bit / 128 samples"); break; default: Serial.println("unknown"); } Serial.print("Max possible current: "); Serial.print(ina.getMaxPossibleCurrent()); Serial.println(" A"); Serial.print("Max current: "); Serial.print(ina.getMaxCurrent()); Serial.println(" A"); Serial.print("Max shunt voltage: "); Serial.print(ina.getMaxShuntVoltage()); Serial.println(" V"); Serial.print("Max power: "); Serial.print(ina.getMaxPower()); Serial.println(" W"); } void setup() { Serial.begin(115200); Serial.println("Initialize INA219"); Serial.println("-----------------------------------------------"); // Default INA219 address is 0x40 ina.begin(); // Configure INA219 ina.configure(INA219_RANGE_32V, INA219_GAIN_320MV, INA219_BUS_RES_12BIT, INA219_SHUNT_RES_12BIT_1S); // Calibrate INA219. Rshunt = 0.1 ohm, Max excepted current = 2A ina.calibrate(0.1, 2); // Display configuration checkConfig(); Serial.println("-----------------------------------------------"); } void loop() { Serial.print("Bus voltage: "); Serial.print(ina.readBusVoltage(), 5); Serial.println(" V"); Serial.print("Bus power: "); Serial.print(ina.readBusPower(), 5); Serial.println(" W"); Serial.print("Shunt voltage: "); Serial.print(ina.readShuntVoltage(), 5); Serial.println(" V"); Serial.print("Shunt current: "); Serial.print(ina.readShuntCurrent(), 5); Serial.println(" A"); Serial.println(""); delay(1000); }Здравствуйте. мне не удалось найти информации по максимальному току который может пройти через готтовый модуль на основе такой микросхемы.
хотел замерять зарядку автомобильного аккумулятора.
устройства на руках нет.
Dmitriyxz, нужно внимательнее читать материал. По ссылке из топика на готовые шилдики были все параметры. Максимальный ток стандартного модуля 3,2А. Для бОльшего тока нужно менять шунт.
Здравствуйте! Заказал у китайца Модуль на основе ina219 для одного проекта. Решил протестировать. Подключил к Ардуино, загнал тестовый скетч - не идут показания тока. Через монитор порта смотрю - напряжение на шунте есть, а тока нет. Может это указывать на на неисправность модуля? Опробовал обе библиотеки, ссылки на которые даны в начальном топике.
Здравствуйте! Заказал у китайца Модуль на основе ina219 для одного проекта. Решил протестировать. Подключил к Ардуино, загнал тестовый скетч - не идут показания тока. Через монитор порта смотрю - напряжение на шунте есть, а тока нет. Может это указывать на на неисправность модуля? Опробовал обе библиотеки, ссылки на которые даны в начальном топике.
вверху есть кусок рабочего скетча правильно выводящего значение тока в порт )))
#include <Wire.h> #include "ina219.h" INA219 monitor; void setup() { Serial.begin(9600); monitor.begin(64); // i2c address 64=0x40 monitor.configure(0, 2, 11, 11, 7); /* конфигурируем режим датчика тока INA219 * 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) * mode = 7 (continuous conversion) */ monitor.calibrate(0.100, 0.32, 16, 3); //R_шунта, напряж_шунта, макc_напряж, макс_ток } void loop() { for (int i=1; i<16; i++){ delay(300); int j = monitor.shuntCurrent() * 1000; Serial.print(j);Serial.print(" - "); // Serial.print(monitor.shuntCurrent() * 1000,2);Serial.print(" - "); Serial.print(monitor.busVoltage()); Serial.println(" - v"); } Serial.println(); }Здравствуйте! С этим скетчем значение тока в мониторе порта появляется, но оно не меняется. Напряжение меняю, но ток остается преждним
До этого китаец мне вместо INA219 прислал по ошибке INA226. Я его сейчас проверил - претензий к нему нет. Точно показывает и ток и напряжение.
А этот модуль на INА219, независимо от тока, в монитор порта выдает 40 мв (падение напряжения на шунте). Ещё заметил, что мощность подсчитывает правильно. Короче полурабочий он какой то.
еще раз внимательно посмотрите мой скетч!!!
monitor.calibrate(0.100, 0.32, 16, 3);20//R_шунта, напряж_шунта, макc_напряж, макс_токС чего вы решили, что напряжение шунта 40 милливольт?
В мониторе порта пишет ведь "Shunt voltage". Там постоянная цифра 40мв. И при изменении тока она не меняется.
Теперь спор открыл, но доказать трудно, что модуль неисправен.
В мониторе порта пишет ведь "Shunt voltage". Там постоянная цифра 40мв. И при изменении тока она не меняется.
Теперь спор открыл, но доказать трудно, что модуль неисправен.
Практически невозможно, вообще то брак по этим модулям - 30%, но обычно обрыв по цепи питания,
я бы поигрался с установками и посмотрел, что получается
yucan, на основании ваших сведений не сделать вывод. Нужно 1) схема включения. 2)фото подключения модуля с источником питания и нагрузкой в высоком разрешении. 3) фактический ток, измеренный включённым последовательно в цепь миллиамперметром. 3) фактические напряжения, измеренные вольтметром относительно Gnd и входов Vin- и Vin+ 5)фактическое напряжение на шунте, измеренное милливольтметром.
Спасибо, dimax. Сейчас фото не смогу, а схема - такая. На +Vin подаю от регулируемого источника напряжения. В качестве нагрузки - автомобильная лампочка на 12 вольт. Напряжение на шунте меняется при регулировке напряжения с блока питания. По подобной же схеме подключал модуль (шилд) на INA226, там всё нормально работает.
Спасибо, dimax. Сейчас фото не смогу, а схема - такая. На +Vin подаю от регулируемого источника напряжения. В качестве нагрузки - автомобильная лампочка на 12 вольт. Напряжение на шунте меняется при регулировке напряжения с блока питания. По подобной же схеме подключал модуль (шилд) на INA226, там всё нормально работает.
А дуину как запитал?
UNO напитывается от USB разъёма компа.
Вот по быстрому спаял схемку с индикатором из первого поста. И вот три показания индикатора при напряжении 2, 5 и 8 вольт. Напряжение на шунте меняется, а ток - нет. Заметил вот что. При плавном увеличении напряжения от нуля до примерно полтора вольта, показания тока меняются. Далее на отметке 15 ма показания застывают.
А перемычки на плате с адресом устройства замыкать "дядя" будет ??? )))
Перемычки на месте. Без них ардуино не видит модуль. Спор открыл, а пока думаю заказать пару шилдов у разных продавцов. Хотя всё равно остается вероятность попасть на брак
Там должна быть замкнута (припоем) либо A0 либо А1, в разомкнутом состоянии есть неопределённость, правда некоторые экземпляры работали и без перемычек, но из последней партии меряли абы что (по току) пришлось замкнуть )))
И зачем было городить городьбу с просволочкой??? )))
Закажите хотя бы 3 шт, при 30% браке есть надежда
Если говорим об этом коде - однозначно не заработает, шунты то разные )))
смотрим строка 16 инициализации INA, на этом датчике шунт 0.1 Ом и должна выглядеть как-то так:
monitor.calibrate(0.1, 0.320, 16, 2);#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"); }кусочек универсального кода настройки INA219
/************************** SETUP *************************/ void setup() { Serial.begin(9600); // digitalWrite(8, LOW); // myOLED.begin(); // rtc.begin(); monitor.begin(64); // i2c address 64=0x40 // monitor.configure(0, 2, 10, 10, 7); // 4S -2.13ms // monitor.configure(0, 2, 11, 11, 7); // 8S -4.26ms monitor.configure(0, 2, 12, 12, 7); // 16S -8.51ms // monitor.configure(0, 2, 13, 13, 7); // 32S -17.02ms // monitor.configure(0, 2, 14, 14, 7); // 64S -34.05ms // monitor.configure(0, 2, 15, 15, 7); // 128S - 68.10ms // monitor.configure(0, 2, 8, 8, 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.100, 0.32, 16, 3.2); // R_шунта, напряж_шунта, макcнапряж, макстокТам, где стоят надписи А0 и А1 присутствует 5 вольт. Адресные точки находятся слева. Для адреса 40H их нужно заземлить, что я и сделал. Вобщем заказал я модули.
Там, где стоят надписи А0 и А1 присутствует 5 вольт. Адресные точки находятся слева. Для адреса 40H их нужно заземлить, что я и сделал. Вобщем заказал я модули.
"Многие знания многие печали" - не надо ничего придумывать, замкни A0 и проверь сканером порта адрес устройства, поправь, ежели в скетче другой, второе, исправь строку инициализации как привёл выше и "картинко в студио"
"Так и не удалось заслушать начальника транспортного цеха"
Да))) Забил я на этот модуль. Нет смысла экспериментировать с браком. Итак много времени на него потрачено.
Да))) Забил я на этот модуль. Нет смысла экспериментировать с браком. Итак много времени на него потрачено.
не факт, совсем не факт!!!
Вчера получил оставшиеся 2 модуля на INA219. Оба рабочие. Замечено, что на всех рабочих модулях есть надписи на тыльной стороне. На том, который ток не показвает надписей нет.
Есть вопрос следующего плана:
В библиотеке INA219.H адрес устройства определён жёстко !
Каким образом изменить библиотеку, чтобы адрес устройства можно было определять в скетче?
ua6em, monitor.begin(адрес);
ua6em, monitor.begin(адрес);
я так и делал, но пока в ina219.h по дефолту не поставишь такой же - не работает
ЧУ Д ПРИ ТП )))
Если точно указание адреса в бегин не работает, то сделайте в INA219.h так:
void begin(uint8_t addr);
Вместо
void begin(uint8_t addr = D_I2C_ADDRESS);