Всем доброго дня.
Нужно подключить 6 датчиков тока YHDC SCT-013 к Ардуино. По 2 датчика на фазу.
По стандартной схеме датчик подключается между аналоговым пином Ардуины и резисторным делителем напряжения.
Да чё так то? То мультиплексор, сё мультиплексор… Мне не понятно как ардуиной 6 каналов оцифровать с приемлимой точностью? Там же переменка идёт. Это надо как минимум 20 точек на период собрать, среднеквадратичное вычислить для каждого канала. Меньше блюпила вряд ли что то справится.
DetSimen Мне не совсем понятен смысл добавления мультиплексора.
nik182 Библиотека EmonLib.h выдает мне показания каждого датчика тока. Скорость обработки и вывода на экран меня устраивает. Использую Arduino Nano.
Что такое блюпил честно говоря не знаю
Какие проблемы? Это один килозамер в секунду. 328-ая с 16МГц вполне себе тянет 9,6 килозамеров, так что никаких проблем запустить шесть каналов и ещё время на обработку останется.
Другое дело, что зачем там 20 точек на период? Если доверять тому, что там именно синусоида, а не что-то другое, то для полного восстановления синусоиды достаточно трёх точек. Т.е., зная три точки, можно определить период, фазу и амплитуду (нам ведь именно амплитуда нужна, так?) А если ещё и доверять тому, что мы знаем частоту (50Гц), то тогда вообще достаточно двух точек для определения амплитуды. Например, для частоты 50 Гц делаем два замера: U1 и U2 в моменты времени t1 и t2. Имеем систему из двух уравнений (фаза нам нахрен не нужна, сразу полагаем, что 0):
Не всё так шоколадно. Две точки надо взять точно в максимуме и минимуме,
что уже не очень тривиальная задача с учётом ошибок определения момента прохождения синусоиды через ноль, к тому же обычно это значение зависит от амплитуды. Тоже самое относится к любому моменту - их надо знать. К тому же в наших сетях ток давно уже не синусоида из за импульсных источников питания которые имеют пик потребления тока в максимумах напряжения. Да и 50 Гц плавает в течении дня существенно.
Оцифровав приблизительно период в посчитав серднеквадратичное значение получим честный RMS тока. Это если надо как можно точнее знать ток. А так можно и по двум точкам, заложившись на синус и 50 герц. И добавить датчик пересечения нуля в схему и косинуса фи.
Ну, это уже разговор ни о чём, т.к. мы не знаем задачи и не знаем какая, на самом деле, нужна точность. Согласитесь. Могу предложить миллион практических приложений, когда такой точности, с какой там “синусоида и 50Гц” вполне хватит. А могу привести такой же миллион – где не хватит. Без знания задачи – пустопорожние умствования.
Ну, тогда берите мои формулы (не забудьте про мою приписку в конце) и делайте. В качестве t1 и t2 можно взять любые значения “времени” (например, показания millis). Только либо millis в секунды пересчитать, либо частоту на тысячу поделить, чтобы всё в одинаковых единицах было. Могу пример показать в протеусе, если надо.
Посмотрел библиотеку. Получает значение тока как среднеквадратичное, RMS т.е.
Правильная библиотека.
Написал програмку, запустил. В режиме два измерения в подряд полная ерунда, В режиме с задержкой 10мс между измерениями сильно зависит от фазы. Чем ближе к 90 градусам - измерение в максимуме и минимуме, считает хорошо, особенно с синхронизацией по фазе, без синхронизации значения плывут сильно. Если не повезло и фаза первого измерения близка к нулю ошибка максимальна т.к. U1 и U2 практически равны.. С задержкой 20 мс- опять полная ерунда, т.к. U1 и U2 практически равны. Завтра с задержкой 5мс попробую.
Ну, понятно. Там, более того, если, например, измерения будут точно через период, то в знаменателе просто ноль получится (см. формулу-то для амплитуды).
Я же писал
Это не означает, что мы просто плюём на неё. Это означает, что первое измерение делаем при нулевой фазе, т.е. при прохождении через постоянную составляющую, которую мы знаем (2.5В).
По поводу задержек между измерениями - любые не кратные периоду, но всегда надо правильно пересчитывать их во время (или частоту приводить к ним), я про это тоже писал.
Мне кажется что вначале надо сделать несколько измерений по 1мс найти 0 (2,5в. ) потом 1 измерение через 5мс и второе через 10 мс. Ловим пик пик. А отсюда уже можно математикой считать. При условии относительно чистого синуса. И 50 Гц.