Измерение напряжения сети 230 В переменного тока 50 Гц (ЕС) с помощью Arduino

Мне было интересно, могу ли я измерить напряжение сети переменного тока с помощью Arduino. В конструкции используется трансформатор для преобразования 230 В переменного тока в 12 В переменного тока. Затем напряжение понижается резисторами. Arduino измеряет напряжение на резисторе 10k.схема трансформатора

Я видел пару постов, в которых использовались диоды и конденсаторы для выпрямления переменного тока после его преобразования, но я видел еще один пост, в котором Arduino делал выборку в течение определенного периода времени и брал максимальное значение.

Какой способ лучше?

Когда я смотрю на график вывода Arduino в программе, я все еще вижу отрицательное напряжение (-350 мВ), переживет ли это аналоговый вывод?

Я тестирую устройство с пропускной способностью 230 В. Чтобы проверить подключение, я хотел измерить напряжение с выходного разъема на устройстве.

Я разработал схему ниже с помощью приведенного ниже ответа и этого сайта: https://learn.openenergymonitor.org/electricity-monitoring/voltage-sensing/measuring-voltage-with-an-acac-power-adapter?redirected= истинный

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

трансформатор со смещением

Как справедливо заметил Ferrybig, напряжение все еще слишком высокое/низкое для вывода Arduino, я неправильно ввел амплитуду в источнике напряжения. Я настроил сопротивления на 22k/22k/3k/6.8k с 22k/22k/12k/12k (не изображено).

Объясните, чего вы пытаетесь достичь: вы хотите определить, присутствует напряжение переменного тока или нет? Или вы хотите измерить фактическое значение сетевого напряжения (240 В, 241 В и т. д.)? Или вы хотите использовать 50/60 Гц от сетевого напряжения?
Я тестирую другое устройство с транзитным напряжением 230 В, я измеряю 230 В от соединений на нем, чтобы увидеть, есть ли соединение.
Я измеряю 230 В от соединений, которые я называю простым обнаружением наличия/отсутствия. Для этого нет необходимости измерять . Измерение означает: питание 239 В, или 241,4 В, или 247,9 В. Вам это не нужно. Вам нужно: есть сетевое напряжение или нет сетевого напряжения. Какую ценность это имеет: кого это волнует? Я бы использовал трансформатор или схему питания или емкостную капельницу, чтобы светодиод в оптроне загорелся (или нет). Тогда оптопара может легко сделать 1/0 для Arduino.
Посмотрите здесь: Learn.edwinrobotics.com/… То, что вам нужно, находится в разделе «Схемы цепей».
Обратите внимание, что ваша схема в «Edit 2» небезопасна для вашего Arduino. Сеть ЕС при 230 В среднеквадратичного значения +/-10%, поэтому 253 В среднеквадратичного значения в худшем случае. Это имеет свои пики до 357V. После трансформатора 230:12 это пики 19 В (13 В среднеквадратичного значения). После ваших резисторов есть пики от -3,8В до +3,8В. 2,5 В + 3,8 В больше, чем 5 В, что выходит за пределы максимального диапазона напряжения для Arduino, 2,5 В - 3,8 В меньше, чем 0 В, что также выходит за пределы минимального диапазона напряжения Arduino. Использование устройства за пределами его максимальной спецификации приводит к неопределенному поведению, оно может выйти из строя раньше, чем ожидалось, или диоды ES могут выйти из строя или замкнуть/разомкнуть
Вау, приятно поймать Ferrybig. Мое моделирование использовало амплитуду переменного тока. Я настроил резисторы на 22k/22k/3k/6.8k вместо 22k/22k/12k/12k.

Ответы (5)

Вместо «земли» подключите эту точку к 2,5 В (половина 5 В источника питания Arduino) и измерьте другую точку вокруг этого центрального значения (нет необходимости в диоде, нет отрицательных значений). Имейте в виду, что "форма волны" может быть... "не синусоидальной"...

Не перегружайте полную шкалу АЦП (0 -> 5 В), требуется «правильное» затухание!

Возьмите запас... До 300 Вскз.

введите описание изображения здесь

Возьмите образцы, например, каждую 1 мс (в ЕС), а затем рассчитайте среднеквадратичное значение вокруг «среднего» значения образцов (около ~ 2,5 В, измерьте его).

Будьте осторожны... я не люблю "сетевое питание"... и оно меня не любит...

Обратите внимание, что, хотя это действительно будет измерять сетевое напряжение, это означает довольно много работы и кода для Arduino, сокращая флэш-память и время обработки, доступное для других задач. И наоборот, если вы тратите слишком много времени на другую задачу, измерения пострадают, поэтому в коде необходимо соблюдать осторожность, чтобы гарантировать, что этого не произойдет (осторожное использование таймеров) или не вызовет проблемы (разумный тайм-аут перед предположением, что сеть отключена). упавший).
@ChrisH Я использовал этот способ измерения (через прерывание 1 мс), чтобы взять 20 образцов со стандартным Arduino, а затем вычислить среднее значение, фазу, среднеквадратичное значение и значения мощности (на 2 каналах U, I) ...
Он может это сделать, но если ему приходится иметь дело с пользователем, который нажимает кнопку так быстро, как может реагировать обработчик прерывания, или запускает подпрограмму для воспроизведения звука, он будет бороться. Прерывания по таймеру — это хорошо, но не единственный способ получить тайминги. Некоторые из моих проектов нуждаются в том, чтобы определенные части были как можно более детерминированными, и лучше отключить все прерывания. В этом случае вы должны сделать расчеты. Я бы возводил значения в квадрат по мере их чтения и сохранял их в CircularBuffer (я делаю это в одном проекте, для чего-то более быстрого, когда больше ничего не происходит), а затем усреднял бы это
Хорошо для кругового буфера и массивов и некоторых других советов, чтобы выиграть время :-) ... Мой проект заключался только в том, чтобы брать образцы, вычислять некоторые данные ... затем передавать/сохранять в файлы ... для последующего использования с более мощным софт...для статистики...

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

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

Взгляните на этот предыдущий вопрос: Оптопара переменного тока для обнаружения линии 230 В

Если «сквозной» потенциал может изменить сеть (например, если это ИБП с двойным преобразованием), вам, вероятно, следует измерить напряжение, чтобы убедиться, что оно не просто присутствует, а находится в пределах спецификации.

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

Нет, эта схема, по-видимому, не предназначена для измерения напряжения переменного тока, а скорее для генерации импульса высокого уровня при каждом цикле питания. Пиковое напряжение от 12 В переменного тока о 17,7 В постоянного тока, и ваш делитель напряжения делит его только примерно в 2 раза. Стабилитрон необходим, чтобы зафиксировать это напряжение и предотвратить его разрушение микроконтроллера, но это означает, что вы не можете использовать это напряжение с аналоговым входом, чтобы получить что-то пропорциональное напряжению сети переменного тока.

Правильный способ сделать это во многом зависит от того, почему вы пытаетесь выполнить измерение и что вы собираетесь делать с этим значением . Вы нам этого не сказали.

Извините, я тестирую устройство с проходным напряжением 230 В. Чтобы проверить соединения, я хочу измерить напряжение на разъеме.

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

Как насчет старого доброго реле на 230 В переменного тока и контакта Arduino на 5 В с другой стороны? Это самый безопасный способ, и вам не нужен трансформаторный выпрямитель и т. д.