Датчик ZMPT101B Arduino

ZMPT101B датчик переменного напряжения для Arduino – это модуль на основе понижающего трансформатора напряжения, который позволяет измерять напряжение переменного тока до 250 В. Для приведения показаний модуля в читаемый вид, используется операционный усилитель, установленный на модуле. Для работы нужно подключить к модулю питание 5 Вольт от Ардуино, подать переменное напряжение на трансформатор и подключить аналоговый выход к любому аналоговому пину.

ZMPT101B Ардуино характеристики, описание

При помощи датчика ZMPT101B можно измерять переменное напряжение в бытовой сети и безопасно передавать показания на вход микроконтроллера. Модуль основан на маломощном трансформаторе, при помощи которого показания не искажаются, а повторяют форму сигнала переменного напряжения. Датчик безопасен, так как имеет гальваническую развязку от высоковольтного входа. Для калибровки показаний, на модуле zmpt101b установлен подстроечный резистор (потенциометр).

ZMPT101B Ардуино datasheet, pinout
ZMPT101B Ардуино характеристики (datasheet, pinout)

Характеристики ZMPT101B (даташит, схема)

  • Вес: 20 g
  • Габариты: 51 × 21 × 21 mm
  • Модель трансформатора: ZMPT101B
  • Напряжение питания: 5 Вольт
  • Номинальный ток: 2 мА
  • Диапазон измеряемого напряжения: 195-250 В
  • Рабочий диапазон температур: от -40 °C до +70 °C

Основной элемент модуля — трансформатор ZMPT101B производства Qingxian Zeming Langxi Electronic. По сути, для изменения переменного напряжения необходим ограничивающий резистор на первичной цепи и резистор на вторичной цепи. Остальная часть схемы модуля усиливает и сдвигает измеряемое напряжение в положительную сторону, чтобы не было отрицательного напряжения. Осторожно, высокое напряжение! Соблюдайте технику безопасности при работе с датчиком!

Подключение датчика ZMPT101B к Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • датчик напряжения ZMPT101B;
  • провода «папа-мама»;
  • библиотека EmonLib.h
Подключение датчика переменного напряжения к Ардуино
Подключение датчика переменного напряжения к Ардуино

При подключении модуля переменного напряжения ZMPT101B к Ардуино необходимо подключить аналоговый выход OUT датчика к аналоговому пину A1 Arduino, затем подключить питание — выводы GND и VCC к пинам микроконтроллера GND и +5V. После этого можно подключить силовую часть, для этого выводы L и N модуля подключаем к сети 220 Вольт. Смотри схему подключение на картинке выше. После сборки схемы загрузите следующую программу в плату Ардуино.

Программа для калибровки датчика переменного напряжения

void setup() {
Serial.begin(9600);
}
 
void loop() {
Serial.println(analogRead(A1));
delay(100);
}

Пояснения к коду:

  1. после загрузки программы откройте вкладку «Инструменты» в Arduino IDE и нажмите «Плоттер по последовательному соединению»;
  2. крутите потенциометр на модуле, чтобы добиться максимально идеальной синусоиды, как на рисунке ниже.



Плоттер по последовательному соединению
Плоттер по последовательному соединению Arduino IDE

Скетч. Подключение zmpt101b к Ардуино без библиотеки

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);
  pinMode(A1, INPUT);
}

void loop() {

  for (int i=0; i<100; i++) {
    sensorValue1 = analogRead(A1);
    if (analogRead(A1) > 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);
}

Пояснения к коду:

  1. программа сначала находит максимальное напряжение (пиковое значение) и преобразует его в среднеквадратичное значение.
Подключение zmpt101b с библиотекой EmonLib.h
Подключение датчика zmpt101b с библиотекой EmonLib.h

В следующем примере подключим к микроконтроллеру Ардуино светодиод к 10 пину и будем использовать библиотеку EmonLib.h в программе. Библиотеку можно скачать на нашем сайте, ссылка на скачивание размещена выше. После сборки схемы загрузите следующий код в плату. Возможно, потребуется изменить условия в операторе if, чтобы происходило включение / выключение светодиода.

Скетч. Подключение zmpt101b с библиотекой EmonLib.h

#include "EmonLib.h"
EnergyMonitor emon1;

void setup() {  
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  emon1.current(A1, 111.1); // input pin, calibration
}

void loop() {
  double Irms = emon1.calcIrms(1480);
  
  Serial.print(Irms*230.0);
  Serial.print(" ");
  Serial.println(Irms);
  
  if (Irms*230.0 < 230) {gigitalWrite (10, HIGH);}
  else {digitalWrite (10, LOW);}
}

Пояснения к коду:

  1. использование библиотеки EmonLib.h значительно упрощает программу.

Заключение. Датчик переменного напряжения zmpt101b можно использовать в проектах Ардуино при измерении напряжения для умной розетки, автопереключение ИБП при падении и восстановлении номинального напряжения, для учета мощности потребления (в связке с модулем измерения потребления).



One Reply to “Подключение датчика ZMPT101B к Arduino”

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

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.