СОДЕРЖАНИЕ ►
ZMPT101B датчик переменного напряжения для Arduino – это модуль на основе понижающего трансформатора напряжения, который позволяет измерять напряжение переменного тока до 250 В. Для приведения показаний модуля в читаемый вид, используется операционный усилитель, установленный на модуле. Для работы нужно подключить к модулю питание 5 Вольт от Ардуино, подать переменное напряжение на трансформатор и подключить аналоговый выход к любому аналоговому пину.
ZMPT101B Ардуино характеристики, описание
При помощи датчика ZMPT101B можно измерять переменное напряжение в бытовой сети и безопасно передавать показания на вход микроконтроллера. Модуль основан на маломощном трансформаторе, при помощи которого показания не искажаются, а повторяют форму сигнала переменного напряжения. Датчик безопасен, так как имеет гальваническую развязку от высоковольтного входа. Для калибровки показаний, на модуле zmpt101b установлен подстроечный резистор (потенциометр).

Характеристики 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); }
Пояснения к коду:
- после загрузки программы откройте вкладку «Инструменты» в 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); }
Пояснения к коду:
- программа сначала находит максимальное напряжение (пиковое значение) и преобразует его в среднеквадратичное значение.

В следующем примере подключим к микроконтроллеру Ардуино светодиод к 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);} }
Пояснения к коду:
- использование библиотеки EmonLib.h значительно упрощает программу.
Заключение. Датчик переменного напряжения zmpt101b можно использовать в проектах Ардуино при измерении напряжения для умной розетки, автопереключение ИБП при падении и восстановлении номинального напряжения, для учета мощности потребления (в связке с модулем измерения потребления).










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