Измерение переменного напряжения с помощью ZMPT101B и Arduino

Измерение переменного напряжения с помощью 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: Калибровка.
Первое, что необходимо сделать, это откалибровать модуль с помощью потенциометра, для этого загружаем ниже небольшой скетч.

void setup() {
Serial.begin(9600);
}
 
void loop() 
{
Serial.println(analogRead(A0));

delay(100);
}

Затем открываем «Инструменты» и жмем «Плоттер по последовательному соединению«.

Далее, крутим потенциометр и добиваемся идеальной синусоиды, в моем случаи получилось как на рисунке ниже.

Программа №2: Измерение переменного напряжения.
В основном скетче сначала находим максимальное измеренное значение (пиковое напряжение), а затем преобразуем его в среднеквадратичное значение. 

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);
}

Открываем окно последовательного окна, где увидим показания.

Будут вопросы пишите.

Измерение переменного напряжения с помощью ZMPT101B и Arduino

Купить на 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

О нас Сергей

Посмотреть также

Начало работы с STM32 в Arduino IDE — руководство для начинающих

Начало работы с STM32 в Arduino IDE — руководство для начинающих

В этой статье расскажу как начать программировать микроконтроллеры серии STM32 с помощью среды разработки Arduino …

4 комментария

  1. Valeriy Kononenko

    Опечатка в статье, используется ОУ LM358 (в статье LM385).
    Спсибо, было полезно, прикрутил к ESP32

  2. Подскажите, а что означает строка: Veff = (((VeffD — 420.76) / -90.24) * -210.2) + 210.2;

  3. Добрый день! Немного непонятно, как произвести калибровку трансформатора…((

  4. Дмитрий

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *