Что не так с датчиком ACS712?

У меня есть два датчика ACS712, один рассчитан на 5А, другой—на 20А.

Я хотел проверить, насколько они точны, и играл с разными устройствами (в моем случае со старыми кулерами ПК). Я скопировал исходный код отсюдаи изменил только значение Vref, как и ожидалось, так что я получаю измерение нуля при отсутствии тока. Я дважды проверил, что значение остается нулевым для обоих датчиков ACS712. Датчик (или мультиметр) подключается последовательно. Одновременно подключается только один датчик (или мультиметр).

Вот данные, которые я получаю. Значения в скобках соответствуют проценту значения по сравнению с тем, которое получено с помощью мультиметра.

Настройка Измеряется
мультиметром
Измеряется
ACS712 5A
Измеряется
ACS712 20A
Старый вентилятор процессора 87 мА 73 мА (84%) 49 мА (56%)
Вентилятор ИБП мощностью 1,9 Вт 174 мА 170 мА (97%) 97 мА (55%)
Два вентилятора вместе 0,25 А 244 мА (98%) 146 мА (55%)
Серверный вентилятор номинальной мощностью 0,6 А 0,49 А 463 мА (95%) 268 мА (55%)
Три серверных вентилятора 1.35 А 1,293 мА (96%) 683 мА (51%)

В то время как вариант 5A кажется немного выключенным (другая возможность заключается в том, что мультиметр выключен, а измерения ACS712 точны), для аналога с номинальной мощностью 20A все обстоит совсем иначе: его значения изначально неверны, а при более высоком токе они становятся все более неправильными.

Почему это так? Он сломан, или я что-то пропустил?

, 👍0

Обсуждение

в этом нет ничего плохого. Эти значения на самом деле выглядят очень последовательными, просто удвоьте их для большей точности. Помните, что ваш 20A можно воспринимать только до ближайшего значения 40ma (уровни 20A / 512), где нет никакой ошибки (0LSBs), поэтому они практически бесполезны для хобби-приложений., @dandavis


1 ответ


Лучший ответ:

4

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

Вы должны помнить,что датчик 20А должен соответствовать всему этому диапазону 0-20 А - это 0-20 000 мА в половине диапазона АЦП. Это не более 512 градаций на Arduino, и поскольку вы обычно можете рассчитывать на "±1 шум квантования LSB", вы действительно получаете только половину этого полезного значения. Таким образом, вы смотрите на разрешение около 40 мА в лучшем случае с точностью ±40 мА. Когда вы хотите измерить малые токи, они просто потеряются из-за отсутствия разрешения. При 100 мА вы все еще находитесь только в диапазоне "Где-то там может быть ток".

Для измерения тока вам необходимо соответствующим образом настроить размер датчика / шунта в соответствии с диапазоном измеряемых токов. Если вы работаете с небольшими вариациями большого постоянного тока, то требуется предварительная подготовка датчика для изменения смещения и усиления интересной части сигнала, чтобы сигнал не был заглушен базовым смещением. Если вы работаете с малыми токами, то вам нужен датчик / шунт, который дает вам соответствующий сигнал для этого диапазона токов.

Кроме того, различные варианты датчика имеют разную чувствительность: 185 мВ/А для модели 5А и 100 мВ/А для модели 20А. Код, который вы используете, не принимает это во внимание. Используя правильную чувствительность, последнее значение в вашей таблице, 683 мА, становится 1264 мА (683×185/100=1264). Это достаточно близко, если учесть точность ±40 мА.

,