Подключение нескольких датчиков тока YHDC SCT-013 к Ардуино

Всем доброго дня.
Нужно подключить 6 датчиков тока YHDC SCT-013 к Ардуино. По 2 датчика на фазу.
По стандартной схеме датчик подключается между аналоговым пином Ардуины и резисторным делителем напряжения.

Вопрос нужно ли мне делать делители напряжения на каждый канал или можно использовать один на все 6 каналов.

Можно один на все 6 каналов.

И конденсатор тоже.

и CD4051 тебе в помощь

Да чё так то? То мультиплексор, сё мультиплексор… Мне не понятно как ардуиной 6 каналов оцифровать с приемлимой точностью? Там же переменка идёт. Это надо как минимум 20 точек на период собрать, среднеквадратичное вычислить для каждого канала. Меньше блюпила вряд ли что то справится.

DetSimen Мне не совсем понятен смысл добавления мультиплексора.

nik182 Библиотека EmonLib.h выдает мне показания каждого датчика тока. Скорость обработки и вывода на экран меня устраивает. Использую Arduino Nano.
Что такое блюпил честно говоря не знаю

Какие проблемы? Это один килозамер в секунду. 328-ая с 16МГц вполне себе тянет 9,6 килозамеров, так что никаких проблем запустить шесть каналов и ещё время на обработку останется.

Другое дело, что зачем там 20 точек на период? Если доверять тому, что там именно синусоида, а не что-то другое, то для полного восстановления синусоиды достаточно трёх точек. Т.е., зная три точки, можно определить период, фазу и амплитуду (нам ведь именно амплитуда нужна, так?) А если ещё и доверять тому, что мы знаем частоту (50Гц), то тогда вообще достаточно двух точек для определения амплитуды. Например, для частоты 50 Гц делаем два замера: U1 и U2 в моменты времени t1 и t2. Имеем систему из двух уравнений (фаза нам нахрен не нужна, сразу полагаем, что 0):

где a – амплитуда, а d – постоянная составляющая.

Система несложно решается относительно a и d, получаем:

image

P.S. Виноват, мужики, там в формулах, везде, где 50, домножьте ещё на два ПИ. Это я второпях лопухнулся.

1 лайк

Не всё так шоколадно. Две точки надо взять точно в максимуме и минимуме,
что уже не очень тривиальная задача с учётом ошибок определения момента прохождения синусоиды через ноль, к тому же обычно это значение зависит от амплитуды. Тоже самое относится к любому моменту - их надо знать. К тому же в наших сетях ток давно уже не синусоида из за импульсных источников питания которые имеют пик потребления тока в максимумах напряжения. Да и 50 Гц плавает в течении дня существенно.
Оцифровав приблизительно период в посчитав серднеквадратичное значение получим честный RMS тока. Это если надо как можно точнее знать ток. А так можно и по двум точкам, заложившись на синус и 50 герц. И добавить датчик пересечения нуля в схему и косинуса фи.

Нет, нужны две ЛЮБЫЕ точки, лежащие на синусоиде. Просто посмотрите на уравнения. Абсолютно любые.

Привести примеры?

50Гц?
Если “да”, и делитель и конденсатор можно сделать общими.

А почему нет?
Период - 20 мс. 6 измерений - по 167 мкс на каждое. Из них 112 мкс на само измерение и 55 мкс - на обработку.

Ну, это уже разговор ни о чём, т.к. мы не знаем задачи и не знаем какая, на самом деле, нужна точность. Согласитесь. Могу предложить миллион практических приложений, когда такой точности, с какой там “синусоида и 50Гц” вполне хватит. А могу привести такой же миллион – где не хватит. Без знания задачи – пустопорожние умствования.

1 лайк

Вот так мне примерно и надо. Мне по хорошему даже значения тока не требуются, мне нужна примерная (± лапоть) разница между показаниями датчиков.

Ну, тогда берите мои формулы (не забудьте про мою приписку в конце) и делайте. В качестве t1 и t2 можно взять любые значения “времени” (например, показания millis). Только либо millis в секунды пересчитать, либо частоту на тысячу поделить, чтобы всё в одинаковых единицах было. Могу пример показать в протеусе, если надо.

Спасибо.
Я в принципе то свой вопрос еще во втором сообщении решил.
Но все остальное тоже интересно.

Нема за що.

1 лайк

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

Написал програмку, запустил. В режиме два измерения в подряд полная ерунда, В режиме с задержкой 10мс между измерениями сильно зависит от фазы. Чем ближе к 90 градусам - измерение в максимуме и минимуме, считает хорошо, особенно с синхронизацией по фазе, без синхронизации значения плывут сильно. Если не повезло и фаза первого измерения близка к нулю ошибка максимальна т.к. U1 и U2 практически равны.. С задержкой 20 мс- опять полная ерунда, т.к. U1 и U2 практически равны. Завтра с задержкой 5мс попробую.

Так именно с этого и надо было начинать:

  • подряд (задержка 0.1 мс) - одна и та же фаза - не показательно,
  • задержка 10 мс - противофаза, также не показательно,
  • задержка 20 мс - опять фаза,

Оптимальная задержка должна быть четверть периода, т.е. для 50 Гц - 5 мс.

Ну, понятно. Там, более того, если, например, измерения будут точно через период, то в знаменателе просто ноль получится (см. формулу-то для амплитуды).

Я же писал

Это не означает, что мы просто плюём на неё. Это означает, что первое измерение делаем при нулевой фазе, т.е. при прохождении через постоянную составляющую, которую мы знаем (2.5В).

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

полупериоду

Мне кажется что вначале надо сделать несколько измерений по 1мс найти 0 (2,5в. ) потом 1 измерение через 5мс и второе через 10 мс. Ловим пик пик. А отсюда уже можно математикой считать. При условии относительно чистого синуса. И 50 Гц.