Официальный сайт компании Arduino по адресу arduino.cc
Мини-обзор монитора тока INA219 с выходом I2C
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Давно хотелось использовать какое-то очень простое и при этом достаточно качественное решение для измерения тока, и вот выбор пал на микросхему от техаса 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"); }
Как раз такой модуль подключаю к проекту esp8266. Я написал код, а пользователь тестирует у себя. Пока не ясно почему, но ток не отображает..Напряжение выводиться отлично.
Основа кода для esp8266 - код adafruit, там все настройки находятся внутри библиотеки - вроде все ясно, есть описания настроек и несколько преднастроенных функций. Тут надо изучить хорошо даташит чтобы понять как работать с этим датчиком :)
Получилось ли запустить adafruit ?
MaksMS, если ток не отображает, то вероятно чип не получает данные в кофигурационный регистр? Впрочем я не силён пока в нюансах) Да, я и эдафрутовскую библиотеку немножко поизучал. Всё с ней работает, но просто неудобства конфигурирования вынудили сразу отказаться.. Там внутри спрятано три профиля, но ни один не понравился. Создал свой, но выяснилось что возможности усреднять результат измерения напряжения совсем не предусмотрено, хотя для тока это возможно. А во второй библиотеке всё вынесено, хотя тоже есть свои странности. Меня ещё очень заинтересовала программа для конфигурирования этого чипа, которую можно скачать с сайта. Только вопрос через чего его подключить к компу, в описании предлагается использовать специальный отладочный модуль, который в свою очередь подключается в юсб-порт компа. Но наверняка ведь можно какой-то переходник USB-I2C использовать т.к. судя по картинкам модуль определяется как обычное USB HID устройство.
Да вот пока не знаю где там косяк, буду рыть дальше. все же напряжение выводит.. а ток - ноль.
MaksMS, наверное всё таки что-то с калибровкой у вас, как раз для вывода напряжения она не нужна, а вот для тока -нужна. Напрашивается перед выводом тока прочесть регистр 0x05 (калибровка) , если там ноль -то логично что выводит 0.
Да, уже нашел ошибку в функции записи в регистр. Спасибо :)
MaksMS, попробывал вашу прошивку для esp8266, очень интересно, понравилось :) Появилось предложение по INA219, можно ли в веб-интерфейс вынести ещё настройку 2х байтов (конфигурации и калибровочного) т.к. настройки по умолчанию не всем подойдут..
PS заодно дополню свою тему, -вариант скетча без спец. библиотеки. Нужно по даташиту определиться с конфигурацией, и по программе (ссылка в сообщении#2) рассчитать калибровочную константу.
А не делал ли кто попытки доработки схемы для измерения напряжения более 26 В? Ну скажем до 40 В.
dimax, да, можно по идее реализовать, но надо больше вникать в эти калибровки модуля.
gena, ставите делитель из резисторов и умножаете принятые данные на число ,на которое делили напряжение..
У меня данной микросхемы нет и тестов сделать не могу.
PS К сожалению оповещение о теме тут не работает по этому отвечаю спустя полмесяца)
Не подскажете как реализовать делитель для измерения напряжения выше 26В?
Пробовал обычный резистивный делитель от +Vin и к земле. Тогда ток зашкаливает. В общем не то...
xxoma, по-моему никак. Есть более крутой собрат INA226 он до 36 вольт +имеется отдельный вход для измерения напряжения. + более высокая разрядность (кажется 15 бит) , и ещё какие-то вкусности.
xxoma, по-моему никак. Есть более крутой собрат INA226 он до 36 вольт +имеется отдельный вход для измерения напряжения. + более высокая разрядность (кажется 15 бит) , и ещё какие-то вкусности.
Понятно, просто есть у меня ina219(было две, одну уже сжег) и нужно измерять ток с шунта и напряжение до 60В а желательно до 100. А другие варианты типа ina226 нужно из за бугра заказывать((
Как это никак ? Ставим, например в самом простом варианте делитель 10к+10к на входе . А выдаваемые показания умножаем на два в данном случае..
Как это никак ? Ставим, например в самом простом варианте делитель 10к+10к на входе . А выдаваемые показания умножаем на два в данном случае..
Если не трудно накидайте схему и я протестирую. Так как по моему все таки и на самом деле никак.
Ну в интернете можно найти без проблем схему делителя на резисторах...
MaksMS, тогда уж нужно 2 делителя., ведь при измерении тока используется дифф режим. Тем не менее не видя полной принципиальной схемы входной части чипа ( не известно же какой обвес на входном ОУ) я бы побоялся предпологать, что можно просто делителями обойтись.
xxoma, вам нужно подобрать монитор тока с режимом LOW-SIDE что б включить его в цепь минуса, тогда напряжение по плюсу не будет иметь никакого значения. Кстати Ina226 как раз поддерживает и LOW и HIGH-SIDE :)
xxoma, в принципе INA219 считается HIGH-SIDE исключительно из-за того, что один вывод используется для измерения и напряжения и тока. Если вы откажитесь измерять напряжение инкой, то можете смело ставить её в разрыв общего провода, и измерять свои амперы на 100вольтах. ИТОГО: Плюс источника питания 100вольт соединить с плюсом нагрузки. Землю источника питания 100вольт подать на Vin- ногу , а землю нагрузки на Vin+ ногу. (шунт при этом обязательно должен стоять, иначе INA выпустит волшебный дым) И всё, никаких проблем! Напряжение можно измерять и встроенным ацп ардуины, пусть и несколько с меньшим качеством.
xxoma, в принципе INA219 считается HIGH-SIDE исключительно из-за того, что один вывод используется для измерения и напряжения и тока. Если вы откажитесь измерять напряжение инкой, то можете смело ставить её в разрыв общего провода, и измерять свои амперы на 100вольтах. ИТОГО: Плюс источника питания 100вольт соединить с плюсом нагрузки. Землю источника питания 100вольт подать на Vin- ногу , а землю нагрузки на Vin+ ногу. (шунт при этом обязательно должен стоять, иначе INA выпустит волшебный дым) И всё, никаких проблем! Напряжение можно измерять и встроенным ацп ардуины, пусть и несколько с меньшим качеством.
Спасибо! Вечером попробую! У меня сейчас напряжение измеряется ацп атмеги, точности хватает. А вот ток хотелось бы точнее измерять. Отпишусь о результатах.
Кстати, интересно ina219 переключает вход(в даташите указан условный переключатель) на измерение напряжение в любом случае или только когда идет обращение к регистру содержащем значение измеряемого напряжения? Хотя наверное что бы это проверить прийдется рискнуть еще одной ina а она у меня последняя осталась)
Кстати, интересно ina219 переключает вход(в даташите указан условный переключатель) на измерение напряжение в любом случае или только когда идет обращение к регистру содержащем значение измеряемого напряжения? Хотя наверное что бы это проверить прийдется риснуть еще одной ina а она у меня последняя осталась)
По умолчанию -непрерывные запросы на ток и напряжение поочереди . Это настраивается в конфиге, 27 страница даташита. Лучше перенастроить на только шунт-непрерывно.
Ребят, можно вопрос от новичка ?
а как схематично подключить этот модуль в автомобиле чтоб мерять напряжение и по возможности ток бортовой сети
у мня вот такой модуль пришел
не пойму где в разрыв в автомобиле брать точки
и надо ли шунт менять ?
все это будет использоваться для вывода данных через ардуино на планшет спомощью вот этой
замечательной проги :)
ну если еще поможете внедрить это в мой скетч буду очень признателен
вот мой скетч:
ток и стартера тоже?
вот и я тут не допонимаю .... конечно стартер мне мониторить ни к чему :)
переделывать силовую проводку в авто под эту платку -как-то нелепо выглядит
фиг знает - может я конечно где-то не допонимаю....
как я понимаю надо в разрыв аккумулятора подключать - это пипец если так
да хрен с ним с током ,главное напряжение видеть
ну чтоб генератор мониторить
для напряжения куча разных готовых, в том числе и с током. хотя если хочется именно самому собрать
для напряжения куча разных готовых, в том числе и с током. хотя если хочется именно самому собрать
это я знаю ,и на Али это я все видел ,цэ не то...
у мня карпс в машине на планшете ,и я показания разных датчиков вывожу на экран кое что уже
сделано ,вот хотел это еще прикрутить ,спрашиваю совета
я ссылки выше вроде приводил...
как бы топик стартеру в личку написать ,немогу понять как тут это сделать ?
Serg-Zmuh, я не знаю чем вам помочь. Куда включать модуль в вашем автомобиле, какие токи там текут, как выбрать шунт -это к специалистам по авто-электрике. На том-же pccar.ru этот вопрос было бы уместнее задать. А про програмнную часть подключения в верхних сообщения всё разжевано, ссылки на библиотеки даны.
Serg-Zmuh, я не знаю чем вам помочь. Куда включать модуль в вашем автомобиле, какие токи там текут, как выбрать шунт -это к специалистам по авто-электрике. На том-же pccar.ru этот вопрос было бы уместнее задать. А про програмнную часть подключения в верхних сообщения всё разжевано, ссылки на библиотеки даны.
да вроде как сам автоэлектрик немного ,автосигналками занимаюсь
а тут как-то в тупике .... как это реализовать
в идеале хотелось бы сделать мониторинг токов авто при заботающем двигателе
ну там фары ,генератор
это реально ,или лучше не заморачиваться?
конечно реально. другой вопрос сколько времени/денег уйдет. и на постоянную основу или для тестирования какого либо авто
как по мне самый простой способ это вместо предохранителей втыкается измеритель с предохранителем. но хз сколько датчиков надо будет))
конечно реально. другой вопрос сколько времени/денег уйдет. и на постоянную основу или для тестирования какого либо авто
как по мне самый простой способ это вместо предохранителей втыкается измеритель с предохранителем. но хз сколько датчиков надо будет))
да только себе с машину хочу ,и много датчиков мне не нужно ,просто видеть один общий параметр
я не понимаю другое - как к этому дакчику можно подать большие нагрузки ,например 40 ампер ??
даже если допустим брать силовой провод заходящий в салон ,его надо резать и пропускать через
датчик .... это же фигня получается ,я так думаю
авто какое?
а с чего ты взял 40А? больше думаешь не может быть? в форде например от 10 до 60А предохранители стоят
конечно у мну там гораздо больше :) ,это ятак по-скромничал
у меня паджеро 2 ,там 2 акума 80-ки стоят :) ,машина дизель 94 года ,естественно все аналоговое ,ни каких OBD там нету (
схему, в которой можно было бы понять какой провод резать, не нашел
да и шунт будет большой
вот шунт нашел
заказал уже ,теперь буду прикидывать куда эти 10 см воткнуть )
буду пробовать в подкапотную коробку установить
не понял всей настройки
на что влияют макс напряжение и ток в настройке, да инапряжение шунта. это напряжение на шунте при максимальном напряжении и токе?
jeka_tm, я уже детали стал подзабывать, но кажется макс. измеряемое напряжение действительно ни на что не влияет. Там 2 варианта допустимы 16 или 32. Ток и напряжение шунта -да, максимальные. Причём напряжение шунта ставятся не от балды, а выбирается из нескольких вариантов по даташиту.
понятно. пришел модуль просто. думал все проще
Получил шунт 200А 75мВ
Начал эксперименты ......
вопросы есть ,как правильно выставить параметры чтоб более-менее правильно считывало:
monitor.configure(0, 3, 11, 11, 7);
// (range, gain, bus_adc, shunt_adc, mode)
пока на планшет выводятся показания 3-х датчиков и напряжение борт. сети через делитель и с собственно с INA.
наблюдаю интересный момент ,пока мотор не запущен все показывает боле-менее правильно,стоит завестись показания тока
уходят в минус и почемуто и скачут в больших пределах ,напряжение норм показывает ,что может быть не так ?
Serg-Zmuh, у вас что, сопротивление шунта 0,15 Ом ? Оно бы на 200 амперах засветилось бы как лампочка.
да втом то и дело что я не знаю какое там сопротивление ,мультиметр показывает 0.01
точного мультиметра у меня нету
я в настройках выставлял 0.01- так показания еще больше загоняют
я в остальных настройках калибровки разобраться не могу ,что для чего
//R_шунта, напряж_шунта, макcнапряж, максток
первое понятно ,второе -как определить ?,третье- тут понятно,четвертое- тут что ,макс ток шунта или потребления?
monitor.configure(0, 2, 11, 11, 7); а тут вообще не понял что изменять
разжуй пожалуйста )
напримет такой шунт
R=Uш/Iш
Uш=0,075
Iш=15
например напряжение в сети автомобиля, возьмем макс напряжение 16В, и макс ток 15А. получается
monitor.configure(0.005, 0.075, 16, 15)
да втом то и дело что я не знаю какое там сопротивление ,мультиметр показывает 0.01 точного мультиметра у меня нету
Про закон Ома что нибудь слышали? Любой из трёх параметров (ток, сопротивление, напряжение) цепи можно вычислить имея два других. Надеюсь рассчитаете сами :-)
я в остальных настройках калибровки разобраться не могу ,что для чего
//R_шунта, напряж_шунта, макcнапряж, максток
первое понятно ,второе -как определить ?,третье- тут понятно,четвертое- тут что ,макс ток шунта или потребления?
Что определить? Всё определено -75 мВ. Четвёртое - максимальный ток в нагрузке.
monitor.configure(0, 2, 11, 11, 7); а тут вообще не понял что изменять разжуй пожалуйста )
Разжёвано в скетче из шапки топика. Вам нужно такие параметры: 1,1,15,15,7 что соответствует настройкам:
( до 32 вольт), (±80mV), (128 сэмплов),(128 сэмплов), (Shunt and Bus, Continuous)
Ну так не ставьте себе задачи неадекватные имеющемуся опыту. Учите язык, тренируйтесь на чём-то попроще.
ставил monitor.configure(0.005, 0.075, 16, 15)
да все что меньше чем R_shunt 0.1 ставлю начинает в разы врать
там ведь еще провода от шунта метра 2 до ины идут .... ,может в этом дело фиг знает
Serg-Zmuh, откуда эта цифра 0.005 ???? От балды? От балды вам измерение 15 ампер. Прочитайте наконец закон Ома и рассчитайте сопротивление.
Провода от шунта до входа INA - сантиметров 5 максимум, иначе наловите помех.
ставил monitor.configure(0.005, 0.075, 16, 15)
да все что меньше чем R_shunt 0.1 ставлю начинает в разы врать
там ведь еще провода от шунта метра 2 до ины идут .... ,может в этом дело фиг знает
это я написал для конкретного шунта, у тебя какой?
выше jeka_tm написал , я его показания поставил
шунт 200А 75мВ вот мой шунт
я понимаю если бтам погрешности не большие были ,но не на столько же ....
Serg-Zmuh, У меня уже нет сил комментировать это культурными словами. Поэтому пишу в последний раз. Посмотрите коммент #38 от jeka_tm внимательно. Он написал какой он использовал шунт, он написал ВАМ формулу по которой он рассчитывал. Так за каким извините хреном вы вставляете его полученное значение в свой скетч?
0,000375 0,075 16 200
Serg-Zmuh чукча не читатель, чукча писатель?
Serg-Zmuh, откуда эта цифра 0.005 ???? От балды? От балды вам измерение 15 ампер. Прочитайте наконец закон Ома и рассчитайте сопротивление.
Провода от шунта до входа INA - сантиметров 5 максимум, иначе наловите помех.
ууу.... тогда надо где-то под капотом ИНУ прятать и.... герметезировать ,вот этого я не знал (
а если экранированный провод кинуть ? или безтолку ?
Ладно больше доставать не буду (
буду ИНУ переносить ..... под капот
всем ОГРОМНОЕ спасибо !
0,000375 0,075 16 200
Serg-Zmuh чукча не читатель, чукча писатель?
да вот так получилось - извените )