Измерение переменного напряжения с помощью ZMPT101B и Arduino
В этой статье расскажу как безопасно измерить переменное напряжение бытовой сети 220 Вольт с помощью модуля ZMPT101B и Arduino UNO. Модуль ZMPT101B основан на маломощном трансформаторе, который гальванический развязывает силовую часть от слаботочной и делать безопасным с ним работу.
Технические параметры
► Измеряемое напряжение: 0 — 1000 В;
► Напряжение изоляции: 4000 В;
► Ток обмоток: 2 мА;
► Напряжение питания: 4 .. 12 В;
► Индикация питания: Светодиод;
► Габариты: 50 x 19 х 23 мм;
► Вес: 25 грам.
Общие сведенья
Основной и главный элемент модуля, это трансформатор ZMPT101B производства Qingxian Zeming Langxi Electronic. По сути, для изменения необходим только токоограничивающий резистор на первичной цепи и резистор на вторичной цепи. А вся остальная часть схемы сдвигает измеряемое напряжение в положительную сторону, чтобы не было отрицательного напряжения и усиливаем его, собранна данная схема на микросхеме LM385.
Назначение контактов:
► GND, VCC — Питание модуля 5 В;
► OUT — Аналоговый вывод.
Подключение датчика переменного напряжения ZMPT101B к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Датчик переменного напряжения ZMPT101B x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Описание:
В данном примере покажу схему подключения датчика ZMPT101B к Arduino UNO R3, так же, приведу небольшую программу для калибровки датчика. А в конце статьи попробуем сравнить показания с датчика ZMPT101B и мультиметра.
Подключение:
Первым делом, необходимо подключить аналоговый выход OUT с датчика ZMPT101B к Arduino UNO (выводу А0), затем подключаем питание GND и VCC к GND и +5V. Теперь можно подключается силовую часть, для этого вывода L и N подключаем к сети 220В.
Внимание:
При подключении к переменному напряжению 220 вольт, помните о техники безопасности.
Программа №1: Калибровка.
Первое, что необходимо сделать, это откалибровать модуль с помощью потенциометра, для этого загружаем ниже небольшой скетч.
1 2 3 4 5 6 7 8 9 10 |
void setup() { Serial.begin(9600); } void loop() { Serial.println(analogRead(A0)); delay(100); } |
Затем открываем «Инструменты» и жмем «Плоттер по последовательному соединению«.
Далее, крутим потенциометр и добиваемся идеальной синусоиды, в моем случаи получилось как на рисунке ниже.
Программа №2: Измерение переменного напряжения.
В основном скетче сначала находим максимальное измеренное значение (пиковое напряжение), а затем преобразуем его в среднеквадратичное значение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
double sensorValue1 = 0; double sensorValue2 = 0; int crosscount = 0; int climb_flag = 0; int val[100]; int max_v = 0; double VmaxD = 0; double VeffD = 0; double Veff = 0; void setup() { Serial.begin(9600); } void loop() { for ( int i = 0; i < 100; i++ ) { sensorValue1 = analogRead(A0); if (analogRead(A0) > 511) { val[i] = sensorValue1; } else { val[i] = 0; } delay(1); } max_v = 0; for ( int i = 0; i < 100; i++ ) { if ( val[i] > max_v ) { max_v = val[i]; } val[i] = 0; } if (max_v != 0) { VmaxD = max_v; VeffD = VmaxD / sqrt(2); Veff = (((VeffD - 420.76) / -90.24) * -210.2) + 210.2; } else { Veff = 0; } Serial.print("Voltage: "); Serial.println(Veff); VmaxD = 0; delay(100); } |
Открываем окно последовательного окна, где увидим показания.
Будут вопросы пишите.
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Комплект проводов DuPont, 2,54 мм, 20 см
Датчик переменного напряжения ZMPT101B
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Датчик переменного напряжения ZMPT101B
Опечатка в статье, используется ОУ LM358 (в статье LM385).
Спсибо, было полезно, прикрутил к ESP32
Подскажите, а что означает строка: Veff = (((VeffD — 420.76) / -90.24) * -210.2) + 210.2;
Добрый день! Немного непонятно, как произвести калибровку трансформатора…((