Project Report
Project Report
PAGE 1
ZMCT 118F Current Transformer:
Description:
A precision current transformer designed for AC current measurement. It converts the
current flowing through a conductor into a proportional voltage signal that the Arduino
can read.
PAGE 2
Features of a 16x2 LCD Shield:
LCD Display:
o Displays 16 characters per line, with 2 lines (16x2 format).
o Can show real-time values such as current, power, energy consumption, and
more.
Built-In Buttons (Optional Feature):
o Common buttons include SELECT, UP, DOWN, LEFT, and RIGHT.
o Useful for navigating menus or controlling settings.
Pre-Soldered Pins:
o Easily mounts on an Arduino board like the UNO or MEGA without additional
wiring.
o Standard pin configuration for effortless alignment.
Backlight Control:
o Includes functionality to adjust or turn off the backlight.
Uses an I2C or Parallel Interface:
o Some shields include an I2C module for easier communication using fewer
pins.
o Without I2C, it uses 6 digital pins from the Arduino (RS, E, D4, D5, D6, D7).
PAGE 3
Connecting Wires:
Description:
Essential for prototyping and assembling the circuit. The breadboard allows easy
connections without soldering.
PAGE 5
Arduino Code:
#include <LiquidCrystal.h>
int currentPin = A2; //Assign CT input
float burdenResistor = 56.
float turnsRatio = 1000.
float ADC_REF = 5.0.
int ADC_RES = 1024.
double kilos = 0.
int peakPower = 0.
LiquidCrystal lcd (8, 9, 4, 5, 6, 7); //Assign LCD screen pins
void setup ()
{
lcd. begin (16,2); // columns, rows. use 16,2 for a 16x2 LCD, etc.
lcd.print (" WELLCOME ").
delay (1500).
lcd. setCursor (0,0); // Displays all current data
lcd.print ("MNS UET MULTAN").
lcd. setCursor (0,1).
lcd.print ("ENERGY METER").
delay (1500).
lcd. setCursor (0,0); // Displays all current data
lcd.print("ZULQURNAN-ANJUM").
lcd. setCursor (0,1); // Displays all current data
lcd.print("2023-BT-ELECT-01").
delay (1500).
lcd. setCursor (0,0); // Displays all current data
lcd.print (" ZUBAIR ARSHAD ").
lcd. setCursor (0,1); // Displays all current data
lcd.print("2023-BT-ELECT-02").
delay (1500).
}
void loop ()
{
int current = 0.
int maxCurrent = 0.
int minCurrent = 6023.
for (int i=0; i<=200; i++) //Monitors and logs the current input for 200 cycles to determine
max and min current
{
current = analogRead(currentPin).
if (current >= maxCurrent)
maxCurrent = current.
PAGE 6
}
if (maxCurrent <= 517)
{
maxCurrent = 516.
}
double RmsCurrent = ((maxCurrent - 516) * 0.707 *0.3).
int RMSPower = 220*RmsCurrent.
if (RMSPower > peakPower)
{
peakPower = RMSPower.
}
kilos = kilos + (RMSPower * (2.05/3600000)).
delay (2000).
lcd. clear ().
lcd. setCursor (0,0).
lcd.print (RmsCurrent).
lcd.print("A").
lcd. setCursor (10,0).
lcd.print (RMSPower).
lcd.print("W").
lcd. setCursor (0,1).
lcd.print(kilos).
lcd.print("kWh").
lcd. setCursor (10,1).
lcd.print(peakPower).
lcd.print("W").
}
PAGE 7
Results:
PAGE 8
Conclusion:
The development of a smart energy meter using Arduino Uno and the ZMCT 118F current
transformer provides an efficient and cost-effective solution for monitoring electrical power
consumption. By integrating the ZMCT 118F with an appropriate burden resistor and a 16x2
LCD display, this system can measure real-time current, power, and energy consumption while
offering user-friendly visual output.
This project demonstrates the potential of microcontroller-based systems in creating affordable
and accurate energy monitoring tools. Although the ZMCT 118F is limited to currents below
20A, its precision within this range makes it suitable for residential or small-scale applications.
Calibration of the current transformer and correct configuration of the burden resistor ensure
reliable measurements. However, assuming a constant voltage (e.g., 230V) introduces minor
errors, which could be improved by incorporating a voltage sensing module in future designs.
PAGE 9