Датчик тока ACS712

sadman41
Онлайн
Зарегистрирован: 19.10.2016

ina219, ina226

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Doctor пишет:

Благодаря длинным новогодним каникулам доделал приборчик, в котором для измерения тока используется пара пятиамперных ACS712, включенных по дифференциальной схеме. И не только приборчик доделал, но и описание к нему написал, кратенькое, страниц на 10, но с картинками. Там же и скетч лежит. Если кому интересно, смотрите тут


А можно в ворде, у нас на сайте размещу, авторство сохраняется, ссылку скину здесь

pridecom
Offline
Зарегистрирован: 07.07.2017

А что подключено к PIN2 ?

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

pridecom пишет:

А что подключено к PIN2 ?

Там же написано по русски ОСЦИЛОГРАФ, ну если нет осцилографа то ничего. Судя по вопросам осилить ACS712  у вас врядли получиться. Для начала нужен блинк.

 

 

pridecom
Offline
Зарегистрирован: 07.07.2017

Проверив 5-6 вариантов, самый точный и близкий к истине для моего датчика 20A оказался такой код

 Raw = analogRead (A3) ;
  Voltage = (Raw/ 1024.0) * 5000 ;
  
  //вывод с округлением 
  lcd.print(ceil(Voltage * 10) / 10);
  
  //замерим силу тока 1
  //Amps = ((Voltage - 2500 ) / 100) ;
  //середина 2480
  //Amps = ((Voltage - 2480 ) / 100) ;
  //минус поправка
  Amps = ((Voltage - 2480 ) / (100 - 10)) ;
  
  if (Amps > 0.15) {
    lcd.print(Amps);
    }
   else {
    lcd.print("0"); 
   }

 

Doctor
Doctor аватар
Offline
Зарегистрирован: 11.01.2016

SVVV пишет:

Вопрос от новичка? А нельзя все проще сделать.

Задать масив. Потом в масив загнать измерения больше  чем за 20 мс (поймать хотябы один период).

С масива вытянуть максимальное значение. Умножить на коефициент и для действующего значения на 0.707

Судя по тому, что уважаемый SVVV собрался умножать на 0.707, тут речь идет об измерении действующего значения переменного тока (синусоиды). До сих пор в этой ветке тема переменного тока никак не затрагивалась, все предыдущие посты касались только постоянного. Однако, можно обсудить и переменный.

На мой взгляд в предложении SVVV есть два недостатка. Первое - у Ардуино оперативной памяти совсем мало - 2 килобайта всего, из них большая часть обычно занята переменными программы и всяких библиотек. Если у вас используются разные периферийные модули - АЦП, часы реального времени, LCD дисплей и прочие, то их библиотеки плюс ваш собственный код почти всю память и сожрут, на массив в лучшем случае останется байт 300-400, т.е. вы сможете сохранить в нем 150-200 двухбайтовых отсчетов. Для точного измерения этого маловато будет.

Второе - если уж вы загнали в массив достаточное количество отсчетов, то брать только один из них (максимальный), а остальные выкидывать - непростительное расточительство. Тем более, что этот единственный максимальный отсчет может вовсе не определять действующее значение сигнала, а быть каким-нибудь случайным кратковременным выбросом от импульсной помехи. Если уж у вас есть достаточное количество измеренных значений за период, то вы можете честно проинтегрировать их все и получить точное действующее значение, причем такой способ будет работать для сигнала любой формы, а не только для синусоиды. 

SVVV
Offline
Зарегистрирован: 26.01.2018

Спасибо за замечание. У меня задача проще была сделать мини АВР. При пропадениее напряжении поменять фазу (переключить реле). При превышении определенного тока отключить другие реле нагрузки (датчик тока соответственно в голове). Часы тоже подключены(была мысль время переключения ловить, но так и зависла). АВР работает +/- 0,5А ловит. Для моих целей хватило. Ипользванно Nano. Забито где-то 78%.

Вопрос, стало интересно, а как "честно проинтегрировать их все и получить точное действующее значение" не понимаю как это нормально реализовать. Хоть словесно структуру построения можно? С максимум то понятно и просто.

Doctor
Doctor аватар
Offline
Зарегистрирован: 11.01.2016

ua6em пишет:

Doctor пишет:

Благодаря длинным новогодним каникулам доделал приборчик, в котором для измерения тока используется пара пятиамперных ACS712, включенных по дифференциальной схеме. И не только приборчик доделал, но и описание к нему написал, кратенькое, страниц на 10, но с картинками. Там же и скетч лежит. Если кому интересно, смотрите тут


А можно в ворде, у нас на сайте размещу, авторство сохраняется, ссылку скину здесь

Можно и в ворде, только я не нашел, как тут можно в личку писать, похоже, ее тут и нет вовсе. Вы мне напишите на e-mail по адресу, который там в конце описания имеется, я вам перешлю все, что необходимо.

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

Doctor пишет:

SVVV пишет:

Вопрос от новичка? А нельзя все проще сделать.

Задать масив. Потом в масив загнать измерения больше  чем за 20 мс (поймать хотябы один период).

С масива вытянуть максимальное значение. Умножить на коефициент и для действующего значения на 0.707

Судя по тому, что уважаемый SVVV собрался умножать на 0.707, тут речь идет об измерении действующего значения переменного тока (синусоиды). До сих пор в этой ветке тема переменного тока никак не затрагивалась, все предыдущие посты касались только постоянного. Однако, можно обсудить и переменный. 

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

 

 

pridecom
Offline
Зарегистрирован: 07.07.2017

Дополнительно к #55 сделал вольтметр на основе резистивного делителя на 100 и 10 кОм. Все работало пару раз.

В один прекрасный момент при подключении нагрузки в 4А ардуинка крякнула. Она питалась от АКБ автомобильного через порт VIN.

Что сделать чтобы схема не выходила из строя? Использовать все-таки ina219, ina226 или достаточно питание ардуины сделать через понижающий преобразователь, а резистивный делитель не очень то опасен для ардуины?

Посоветуйте плиз.

SVVV
Offline
Зарегистрирован: 26.01.2018

oleg_kazakof пишет:

Doctor пишет:

SVVV пишет:

Вопрос от новичка? А нельзя все проще сделать.

Задать масив. Потом в масив загнать измерения больше  чем за 20 мс (поймать хотябы один период).

С масива вытянуть максимальное значение. Умножить на коефициент и для действующего значения на 0.707

Судя по тому, что уважаемый SVVV собрался умножать на 0.707, тут речь идет об измерении действующего значения переменного тока (синусоиды). До сих пор в этой ветке тема переменного тока никак не затрагивалась, все предыдущие посты касались только постоянного. Однако, можно обсудить и переменный. 

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

По измерению и получению максимального значения Ваш вариант однозначно лучше, а усреднение 8 значений реально что-то дает?

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

SVVV пишет:

oleg_kazakof пишет:

Doctor пишет:

SVVV пишет:

Вопрос от новичка? А нельзя все проще сделать.

Задать масив. Потом в масив загнать измерения больше  чем за 20 мс (поймать хотябы один период).

С масива вытянуть максимальное значение. Умножить на коефициент и для действующего значения на 0.707

Судя по тому, что уважаемый SVVV собрался умножать на 0.707, тут речь идет об измерении действующего значения переменного тока (синусоиды). До сих пор в этой ветке тема переменного тока никак не затрагивалась, все предыдущие посты касались только постоянного. Однако, можно обсудить и переменный. 

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

По измерению и получению максимального значения Ваш вариант однозначно лучше, а усреднение 8 значений реально что-то дает?

А что вам мешает это проверить и нам расказать.

 

SVVV
Offline
Зарегистрирован: 26.01.2018

oleg_kazakof пишет:

SVVV пишет:

oleg_kazakof пишет:

Doctor пишет:

SVVV пишет:

Вопрос от новичка? А нельзя все проще сделать.

Задать масив. Потом в масив загнать измерения больше  чем за 20 мс (поймать хотябы один период).

С масива вытянуть максимальное значение. Умножить на коефициент и для действующего значения на 0.707

Судя по тому, что уважаемый SVVV собрался умножать на 0.707, тут речь идет об измерении действующего значения переменного тока (синусоиды). До сих пор в этой ветке тема переменного тока никак не затрагивалась, все предыдущие посты касались только постоянного. Однако, можно обсудить и переменный. 

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

По измерению и получению максимального значения Ваш вариант однозначно лучше, а усреднение 8 значений реально что-то дает?

А что вам мешает это проверить и нам расказать.

Попробую как время будет, просто не совсем понимаю смысл усреднения всего. Если брать 8 последних значений и их усреднять то понятно, а с предыдущих измерений все тянуть?

SVVV
Offline
Зарегистрирован: 26.01.2018

SVVV пишет:

oleg_kazakof пишет:

SVVV пишет:

oleg_kazakof пишет:

Doctor пишет:

SVVV пишет:

Вопрос от новичка? А нельзя все проще сделать.

Задать масив. Потом в масив загнать измерения больше  чем за 20 мс (поймать хотябы один период).

С масива вытянуть максимальное значение. Умножить на коефициент и для действующего значения на 0.707

Судя по тому, что уважаемый SVVV собрался умножать на 0.707, тут речь идет об измерении действующего значения переменного тока (синусоиды). До сих пор в этой ветке тема переменного тока никак не затрагивалась, все предыдущие посты касались только постоянного. Однако, можно обсудить и переменный. 

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

По измерению и получению максимального значения Ваш вариант однозначно лучше, а усреднение 8 значений реально что-то дает?

А что вам мешает это проверить и нам расказать.

Попробую как время будет, просто не совсем понимаю смысл усреднения всего. Если брать 8 последних значений и их усреднять то понятно, а с предыдущих измерений все тянуть?

Понял не прав, не досмотрел. Циклиться все заново.

pridecom
Offline
Зарегистрирован: 07.07.2017

Дополнительно к #55 сделал вольтметр на основе резистивного делителя на 100 и 10 кОм. Все работало пару раз.

В один прекрасный момент при подключении нагрузки в 4А ардуинка крякнула. Она питалась от АКБ автомобильного через порт VIN.

Что сделать чтобы схема не выходила из строя? Использовать все-таки ina219, ina226 или достаточно питание ардуины сделать через понижающий преобразователь, а резистивный делитель не очень то опасен для ардуины?

Посоветуйте плиз.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

pridecom пишет:

Дополнительно к #55 сделал вольтметр на основе резистивного делителя на 100 и 10 кОм. Все работало пару раз.

В один прекрасный момент при подключении нагрузки в 4А ардуинка крякнула. Она питалась от АКБ автомобильного через порт VIN.

Что сделать чтобы схема не выходила из строя? Использовать все-таки ina219, ina226 или достаточно питание ардуины сделать через понижающий преобразователь, а резистивный делитель не очень то опасен для ардуины?

Посоветуйте плиз.


 

На INA219 сделали много устройств, отказов за год эксплуатации нет

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

pridecom пишет:

Дополнительно к #55 сделал вольтметр на основе резистивного делителя на 100 и 10 кОм. Все работало пару раз.

В один прекрасный момент при подключении нагрузки в 4А ардуинка крякнула. Она питалась от АКБ автомобильного через порт VIN.

Что сделать чтобы схема не выходила из строя? Использовать все-таки ina219, ina226 или достаточно питание ардуины сделать через понижающий преобразователь, а резистивный делитель не очень то опасен для ардуины?

Посоветуйте плиз.


 

На INA219 сделали много устройств, отказов за год эксплуатации нет

pridecom
Offline
Зарегистрирован: 07.07.2017

Спасибо. Заказал, жду.

Завладел резисторами советскими 16в 2,7ом и 16в 2ом по 5 штук.

Как их правильней соединить для организации нагрузки в ~3А у 12в акб с нименьшем нагревом каждого?

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

pridecom, 16в это что?  У резистора два основных параметра - сопротивление и мощность. В качестве нагрузки 12в. удобнее всего автолампочки.

pridecom
Offline
Зарегистрирован: 07.07.2017

Хочу без лампочек, нужна неприметная штучка. Надпись на резисторе С5-16В-10Вт 2Ом

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

pridecom, рассеивать нужно 36 ватт. Нужно было брать 4 шт по 12 Ом.  С вашими не наберёте нужного сопротивления если паралелить.

pridecom
Offline
Зарегистрирован: 07.07.2017

10 штук по 10 Вт и не подойдет, почему?

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

 

facset
Offline
Зарегистрирован: 10.08.2016

Хоть тема и не актуальна но может кому пригодится. 

использую 20А датчик, встал вопрос увеличения чувствительности датчика и смещения 0 точки (2,5в)  датчика к 0 вольтам, под руками оказалась микросхема ОУ AD8604, за неимением точного АЦП использую встроенный АЦП в ардуино Нано. За неделю борьбы с ОУ получилось обуздать ее по схеме дифферинциального ОУ:

резисторы R1 и R2 задают коэффицент усиления 6,66.....6 (какие под руку попались), резисторы R3 R4 R5 задают смещение нуль точки к 0 вольтам на выходе ОУ, R5 использую для точной подстройки (временно подключаю переменный резистор на 10к к входу А2 ОУ и настроив его на 2,5в, регулировкой R5 добиваюсь 0в на выходе А3 ОУ), А1 и А2 повторители сигнала на ОУ без них сигнал с датчика безнадежно смещается на резисторах R1 R2, т.к. у меня множитель 6,6.. то максимальный сигнал 5в деленый на множитель равен 0,75в с ACS712, что при моем датчике 20А (100мв/А) равно 7,5А максимально измеряемый ток (получаем 5/6,6...=0,75/0,1мв/А=7,5А), далее вычисляем К датчика, т.к. 7,5А = 5в входа АЦП то: 7,5 А/1024 АЦП = 0,00732421875 это в идеальных условиях без магнитных помех и других непритностей. Таким образом код сокращается до банального: 

Raw = analogRead (A3) ;
Tok = Raw * 0,0073242;

Для точности измерений необходимо подключать ACS712 и ОУ AD8604 и R3 к опорному напряжению 5в.

Fantomas
Offline
Зарегистрирован: 20.12.2015

Всем привет.

Кто что скажет по поводу того, что ток до 30 Ампер прокачивается через такие тонкие ножки микросхемы в корпусе SOP8? Как на счет нагрева? 

Сейчас у меня этот датчик работает в течении часа под нагрузкой 20 Ампер, на микросхему установил радиатор 10х10мм на термопасту и усилил выводы. Так вот после часа работы радиатор нагревается почти до 70 градусов, значит сама микросхема нагревается градусов до 85? Температура в комнате 27 градусов.

Хочу установить в блок питания, боюсь не перегреется ли? Все же 30 Ампер это большой ток, а микросхемка такая маааленькая.

Скриншот с тепловизора и фото прилагаю.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нада водяное охлаждение делать.  DS18B20+насосик помпочка+банка с антифризом+Arduina.  Без нее уже ни один проект не работает. 

А если серьезна, на таких токах лучше использовать трансформаторы тока 

Fantomas
Offline
Зарегистрирован: 20.12.2015

Понятно, спасибо. То есть этот датчик хоть и указан что на 30А но максимум лучше где то до 15А. Вообщ есть датчики например acs758lcb вот у него и выводы серьезные, внушают доверие. Наверное лучше использовать его. 

Трансформатор тока так же как и шунт, очень громоздко, в корпусе места мало совсем.

Fantomas
Offline
Зарегистрирован: 20.12.2015

Понятно, спасибо. То есть этот датчик хоть ииуказан что на 30А но максимум лучше где то 15А. Вообщ есть датчики например acs758lcb вот у него и выводы серьезные, внушают доверие. Наверное лучше использовать его.

 

Народ, как удалить этот пост? Проскочил как то два раза.

Админ, помоги.

b707
Offline
Зарегистрирован: 26.05.2017

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

Ну и учитывайте, что когда вы его запихнете в корпус. где "совсем мало места" - ситуация с охлаждением сильно ухудшится и все нафик погорит.

Doctor
Doctor аватар
Offline
Зарегистрирован: 11.01.2016

DetSimen пишет:

А если серьезна, на таких токах лучше использовать трансформаторы тока 

Особенно на постоянном токе они хороши.

 

Fantomas
Offline
Зарегистрирован: 20.12.2015

b707 пишет:

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

Ну и учитывайте, что когда вы его запихнете в корпус. где "совсем мало места" - ситуация с охлаждением сильно ухудшится и все нафик погорит.

 

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

 

Сейчас пока гоняю его на 20А. Сейча найду еще пару лампочек подниму ток до 28-30А, посмотрим. В корпусе БП предусмотрен вентилятор + радиатор на чипе, может нормально будет. К тому же ток 30А редко будет, скорее  импульсного характера.

 

Doctor пишет:

DetSimen пишет:

А если серьезна, на таких токах лучше использовать трансформаторы тока 

Особенно на постоянном токе они хороши.

Это точно. )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Doctor пишет:

Особенно на постоянном токе они хороши.

Да.

Bender
Bender аватар
Offline
Зарегистрирован: 05.04.2011

Doctor пишет:

Благодаря длинным новогодним каникулам доделал приборчик, в котором для измерения тока используется пара пятиамперных ACS712, включенных по дифференциальной схеме. И не только приборчик доделал, но и описание к нему написал, кратенькое, страниц на 10, но с картинками. Там же и скетч лежит. Если кому интересно, смотрите тут

Блеск! Если добавить bluetooth модуль, то могу написать приложение под Android с рисованием графика.

Doctor
Doctor аватар
Offline
Зарегистрирован: 11.01.2016

Bender пишет:

Блеск! Если добавить bluetooth модуль, то могу написать приложение под Android с рисованием графика.

Можно и bluetooth, конечно, только зачем? Стоит этот приборчик тихонечко около аккумулятора и не торопясь пишет себе на карточку токи заряда-разряда и напряжение на клеммах. По одной записи каждые 10 минут в файл добавляет. Неделю пишет, а то и месяц. Потом карточка из приборчика вынимается, втыкается в компьютер, где данные импортируются в могучий Excel, не только строящий всевозможные графики, но и обладающий развитым математическим аппаратом для любых вычислений, включая статистические, электротехнические и какие угодно еще. Для продвинутых есть MatLab, Statistica и море других продуктов. Будем с ними конкурировать своим приложением на Андроиде?

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

 

SVVV
Offline
Зарегистрирован: 26.01.2018

По датчику девайс тоже доделал уже месяца четыри работает нареканий нет

void Curent () {//усредняем показания сенсора
int maxU_sred = 0;
for ( int i = 0; i < 8; i++ ){
max_sensorA ();

maxU_sred =  maxU_sred + maxU;
}
maxU_sred =  maxU_sred / 8;
Ia=(maxU_sred * 2.5/512 * 6.6*2*0.9);// для 30А (66mV/A) - амплитудное
Id=(maxU_sred * 2.5/512 * 6.6 * 0.707*2*0.9);// для 30А (66mV/A) - действующее
}
 

На устройстве висит бойлер, стиралка, мултиварка, электрочайник, блендер (каждый на своем реле).

По приоритету при превышении тока начинает отключить контакты реле , для бытовых целей хватет

Doctor
Doctor аватар
Offline
Зарегистрирован: 11.01.2016

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

Аппаратно приборчик не изменился по сравнению с первой версией, а вот в скетч добавлено несколько полезных нововведений (см. пост #83 выше). Все эти изменения сделаны на основе опыта годичной эксплуатации прибора. 

Если у кого есть идеи, что еще можно в нем усовершенствовать - пишите. 

Oleg_D
Offline
Зарегистрирован: 13.06.2018

Возникла идея аппаратной реализации Вашей дифференциальной схемы подключения датчиков acs712. Смоделировал в протеусе  без нагрузки и с нагрузкой 5А.

В схеме питание ОУ от 12в, но возможно и от 5в(при использовании ОУ R-2-R). Главное опорное напряжение смещения чтобы было 2.5в. Схема собрана из 2 абсолютно одиниковых каскадов подключенных по инветирующей схеме и одного каскада по дифференциальной схеме. Верхний (по схеме) каскад выдает напряжение от 2.5В до 0В при изменении входного напряжения от 2.5 до 3.5В (у acs712 это равно 5А), нижний от 2.5 до 5В при изменении входного напряжение от 2.5В до 1.5В.( т.е. -5А). На выходе дифференциального каскада получаем изменение напряжения от 0 до 5В при изменении силы тока от 0 до 5А.  Это еще более уменьшит прыгание показаний.

b707
Offline
Зарегистрирован: 26.05.2017

Дифференциальная схема это здорово. но сам сенсор acs712, особенно в Алишной версии на 5А - скорее "показометр", чем измерительный прибор.Просто жалко тратить столько усилий непродуктивно. пытаясь получить от простенького модуля точность. которую модули чуть дороже выдают без всякого гемора. Возьмите монитор тока INA219 или INA226 с уже встроенным AЦП - и вы без всякой дифф сземы получите точность лучше, чем на двух acs712. И напряжение, кстати. эти модули тоже меряют.

 

vlad072
Offline
Зарегистрирован: 01.08.2017

Над чем тут голову ломать?? Без нагрузки посмотреть сколько попугаев на входе - принять за ноль (вычесть из абсолютного значения) и при токе N ампер (желлательно поближе к максимальному) посчитать сколько попугаев в одном ампере, характеристика то линейная. И из этого исходите, я например делал так. Вбив "идеальную" формулу точных результатов не получите никогда из за разбросов параметров компонентов, такие вещи надо калибровать на месте.

Oleg_D
Offline
Зарегистрирован: 13.06.2018

vlad072 пишет:

Над чем тут голову ломать??...


Над увеличением разрешения. Так-то у Вас разница составит 1В/5А. А приведя начальное смещение к 0 в дифференциальной схеме получите 5в/5а. Конечно же калибровку никто не отменял.
Я и сам не сторонник данного решения. Но в некоторых ситуациях это может быть выходом из положения. Считаю применение данного датчика целесообразным только в случае если надо изолировать измеряемый сигнал, а также в аналоговой электронике. В остальных же случаях конечно более рационально использовать готовые решения, вроде ina226.