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);
Simulating AC mains voltage safely is a nightmare for most hobbyists. One wrong probe, and your $50 USB oscilloscope is toast. Enter the ZMPT101B —a popular, isolated AC voltage sensor module. But how do you test your Arduino or ESP8266 code without frying real hardware?
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); float voltageRMS = 0; float readValue = 0; float Vref = 2.5; // Output offset of ZMPT101B (adjust based on simulation) zmpt101b voltage sensor library for proteus
void setup() lcd.begin(16, 2); lcd.print("AC Voltage:");
// Remove DC offset and convert to RMS float peakVoltage = (maxV - Vref) * (120.0 / 0.6); // Calibration factor voltageRMS = peakVoltage / 1.414; void loop() // Sample multiple times to find
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.
lcd.setCursor(0,1); lcd.print(" "); lcd.setCursor(0,1); lcd.print(voltageRMS); lcd.print(" V AC"); But how do you test your Arduino or
Have you used a different AC voltage sensor in Proteus? Let me know in the comments below!