// Remove DC offset and convert to RMS float peakVoltage = (maxV - Vref) * (120.0 / 0.6); // Calibration factor voltageRMS = peakVoltage / 1.414;
In this post, I’ll walk you through why this library is essential, where to find it, and how to simulate a complete energy monitoring system step-by-step. Before we jump into simulation, let’s recap the hardware. The ZMPT101B is a PCB module built around a precision voltage transformer (ZMPT101B). It takes high AC voltage (up to 250V AC) and outputs a low AC signal (0-5V) proportional to the input. Most importantly, it provides galvanic isolation between the mains side and your microcontroller.
void loop() // Sample multiple times to find peak float maxV = 0; for(int i=0; i<200; i++) readValue = analogRead(A0); // 0-1023 float voltage = (readValue / 1023.0) * 5.0; // Convert to 0-5V if(voltage > maxV) maxV = voltage; delayMicroseconds(100);