Данный модуль планируется использовать в интеллектуальном реле-регуляторе автомобильного генератора на базе микропроцессора. Про само ИРР напишу как нибудь позже, а вот про ввод в микропроцессор показаний амперметра напишу по горячим следам.
Итак, имеем датчик тока на базе ACS712 5А.

Бывают ещё датчики на 20 и 30 ампер. Самый чувствительный датчик был приобретён с целью минимизации тОка через сам датчик и его провода — штатные силовые кабели выполняют роль шунта, а через датчик будет течь ток, пропорциональный сопротивлению проводов. Подбором толщины и длины проводов датчика можно добиться требуемого соотношения — датчик замеряет протекающий через него ток, а мы манипулируем значением в нашем случае в 20 раз большим.
При построении схемы и изучении документации выявилась забавная деталь — 20-ти и 30-ти амперные версии датчиков имеют предсказуемые напряжения на выходе — от минимума до максимума напряжения питания при изменении тОка от максимума до… до другого максимума:

А вот 5-ти амперная версия имеет совершенно другой график зависимости напряжения на выходе от протекающего тОка:

У неё напряжение меняется относительно середины всего на 1вольт, что довольно странно. И неудобно. Ведь при оцифровке микропроцессором сильно пострадает точность и она будет не сильно отличаться от точности показаний 20-ти амперного датчика в диапазоне +-5 ампер… Бред…
Проведя на графике линию ВАХ за пределы ограничений по тОку, я получил график, соответствующий 10-ти амперной(несуществующей) версии ACS712…

Ток у 5-ти амперной версии в 4 раза меньше, чем у 20-ти амперной, а чувствительность выше всего в 1.85 раз. Даже если просто пересчитать по передаточным числам вольт\амперной характеристики — то получается 10.8 ампер.
Вероятно 10-ти амперные чипы после начала производства массово не выдерживали положенных 10 ампер и их тупо стали маркировать как 5-и амперные. Хотя судя по графику(как много артефактов в документации?) 5-ти амперные чипы вполне должны тянуть 7 ампер(иначе почему в документации у 5-ти амперной версии график до 7-ми ампер?), хоть это нигде явно не оговорено.
Мне от такой хитрожопости производителя не легче. Если бессовестно гонять модуль как 10-ти амперный, то можно однажды получить под капотом пых, а если довольствоваться гарантированными пятью амперами — то точность измерения 10-ти битным АЦП без выкрутасов не получить в моём случае выше +-0,5 ампера, что несколько грубовато на фоне сотых долей вольта у вольтметра того же микропроцессора.
Объясню почему получается такая низкая точность оцифровки "в лоб":
Микропроцессор имеет 1024 уровней АЦП в диапазоне от "земли" до опорного напряжения. Сигнал от 5-ти амперного датчика тОка ACS712 изменяется всего на 1 вольт — от 2.5 вольт(половины напряжения питания) при отсутствии тока до 1.5 вольт(или 3.5 вольт) при максимальном токе 5 ампер. Если оцифровывать "как есть" — то на диапазон сигнала датчика тОка придется всего около 200 уровней АЦП МК. Около 800(80%) уровней АЦП МК просто пропадут за зря.
Если в качестве опорного использовать 2.56 вольт(более высокое напряжение игнорируется) — то пропадут только 600(60%), но и в этом случае потери точности колоссальные. Нужно сигнал с датчика тока дополнительно ещё и усилить в 2.5 раза — чтобы при максимальном токе напряжение на АЦП МК приближалось бы к нулю. Тогда диапазон АЦП будет задействован полностью на 100%. Как то так:

Дифференциальный усилитель на ОУ усиливает сигнал с датчика тока в 2.5 раза и тем смещает его к "земле". Опорное напряжение микропроцессора берётся с того же делителя напряжения, относительно которого и происходит усиление сигнала. Потому разрядность АЦП микропроцессора задействуется по максимуму.
Только не забывайте, что лишь операционные усилители Rail-to-rail могут выдавать на выходе напряжение близкое к земле и напряжению питания. Обычные старые распространённые ОУ в зависимости от модели — то к земле выходное напряжение притянуть не могут, то к питанию, а то и туда и туда одновременно.
Для более точного измерения тОка, протекающего через 5-ти амперный ACS712, лучше взять дифференциальный 12-битный АЦП типа ADS1015 или помудрить с 24-битным HX711, который вообще копейки стОит.
Если же не охота страдать фигнёй — ищите нормальные полностью цифровые датчики тока и напряжения типа INA219.
P.S.
Через пару недель после написания данного опуса попалась мне на просторах инэта такая схемка включения:

Она инвертирующая и усиливает напругу в три раза, чтобы довести датчик до ума. Так что не я один страдал этой проблемой.
Как оказалось данный костыль придумала сама фирма-разработчик. В документации, правда, схема заявлена для повышения чувствительности 5-ти амперного ACS712(казалось бы — зачем?!), но по факту с помощью этого довеска можно из кривоватого 5-ти амперного ACS712 получить путь и менее точный, но уже более подходящий для оцифровки 3-ёх амперный датчик. Я эту схему прозевал и потому изобрёл "велосипед".


Комментарии 13
Здравствуйте, тем более что разность правильно по схеме производителя заводить разностью на один вход, а не как у вас обратной связью на смещение.
Вы правы.
Лучше использовать цифровые датчики тока… Посмотрите в сторону INA219…
Понятно, что лучше. Только где ж их купить то было…
Да всё на той же кЯтайской барахолке…
Если бы я мог купить разное китайское барахло — я бы аруиной и не занялся бы никогда. Купил бы китайский вольтметр, китайский амперметр… Повешал бы на панель и ездил…
А в Казахстане есть с этим проблемы?
Вот так и рождаются легенды. Во всех PDF на всю линейку датчиков тока этой фирмы нарисована эта схема Appliсation 3. Так что прежде чем писать свои изыскания и отсебятину, а потом обвинять фирму в браке, надо не лениться изучать мануалы.
Хотя поумничать можно и таким способом :-)
Кстати, измерять бо'льшие токи, чем тянет датчик можно способом, разжеванным фирмой Allegro — производителем этих датчиков:
www.allegromicro.com/en/D…vider-Configurations.aspx
Чувствительность датчиков:
ACS712 30А: 66 мВ/А
ACS712 20А: 100 мВ/А
ACS712 5А: 185 мВ/А — а должна быть 400 мВ/А, если бы датчик изначально разрабатывался как 5-ти амперный.
Из той же линейки:
ACS713 20А: 185 мВ/А
ACS713 30А: 133 мВ/А
Чувствительность всех датчиков линейки определяется рабочим диапазоном выходного напряжения от 0,5 до 4,5 вольт, соответствующим рабочему току на входе. Единственный датчик, который непонятно почему и зачем выбивается из этой вполне осмысленной тенденции — это как раз 5-ти амперный ACS712.
Для чего с помощью Appliсation 3 предлагается повысить чувствительность до 610 мВ/А я теперь даже предполагать боюсь, чтобы ещё одну легенду не создать. Ведь тогда получается 3-ёх амперный ACS712 с костылём и выходной ВАХ, аналогичной всей линейке. О "мудрых" разработчиках не зря же говорят, что они не дураки. Были. Эти чота совсем перемудрили.
По ссылке я сходил, но тоже не совсем понял нафига козе баян. Я на своём авто прицепил ACS712 параллельно штатным силовым проводам и спокойно меряю 5-ти амперным датчиком токи до 100 ампер. Нужно будет — буду и до 1000 ампер мерять. В чём проблема?
Да нет никаких проблем. Есть датчики — выбор большой. Под конкретные задачи можно выбрать необходимый и не заморачиваться лишними исследованиями. А вот если в наличии есть только слаботочные — можно с ними и пошаманить — разогнать. Для этого разработчики и предлагают свои варианты.
Но зачем их обвинять в некомпетентности — я не понимаю. У каждого производителя есть свои задумки и косяки. Ну и что? От ворчания и умозаключений что-то изменится?
У датчиков аналоговый выход и разброс выходных напряжений в зависимости от тока бесит многих цифровиков — это понятно. Потому что все берут готовые библиотеки и не в состоянии их поправить под другой датчик. Вот и скупаются только ACS712, а потом ими пытаются измерять запредельные токи :-)
Я частенько делаю защиту с этими датчиками и использую компаратор. Чтоб не перегружать проц и оставлять возможность заменять датчики на другие типы без правки софта.
Саша здравствуй, случайно нашла тебя по интернету. Телефон у тебя изменился. Хотела тебе позвонить. Где ты сейчас. Что у тебя нового в жизни
Интересно.
добрый день, как сделать из него бесконтактный датчик постоянного тока, чтобы провод не разрезать