Arduino Based AC Current Sensing Circuit Using LM358 and Current Transformer
In this project, we’ll design an Arduino based AC current sensing circuit using the LM358 operational amplifier and a current transformer. This Arduino based AC current sensing circuit helps measure the flow of alternating current in electrical loads accurately. With this Arduino based AC current sensing circuit, you can monitor current variations, analyze consumption, and ensure safety in various electronic projects.
The Arduino based AC current sensing circuit uses LM358 for signal amplification and a current transformer for sensing AC. By following this Arduino based AC current sensing circuit guide, you’ll understand the working, code, and practical setup. Learn to assemble and test the Arduino based AC current sensing circuit easily at home or in your lab. This project is ideal for students, hobbyists, and engineers exploring Arduino based AC current sensing circuit techniques.
Introduction
Measuring AC current is one of the most essential tasks in electrical monitoring and automation systems. With the help of a current transformer (CT) and an operational amplifier (LM358), we can easily sense AC current and feed the data to an Arduino, which then processes and displays it.
In this guide, we’ll build an Arduino based AC current sensing circuit capable of detecting current flow through an electrical load and displaying the results through serial output.
This type of circuit is extremely useful for:
Power monitoring systems
Energy management projects
Overload protection circuits
Smart home automation systems
Let’s get started with the components you’ll need.
Materials for the Project
S.No | Component Name | Quantity | Description | Buy Link |
---|---|---|---|---|
1 | Arduino UNO | 1 | Main microcontroller board | Buy Arduino UNO |
2 | LM358 IC | 1 | Dual operational amplifier | Buy LM358 IC |
3 | Current Transformer (CT) 5A/5mA | 1 | For AC current sensing | Buy CT Sensor |
4 | Resistor 10kΩ | 1 | Used for signal conditioning | Buy 10k Resistor Pack |
5 | Resistor 100Ω | 1 | Burden resistor for CT | Buy 100Ω Resistor Pack |
6 | Breadboard | 1 | For circuit prototyping | Buy Breadboard |
7 | Jumper Wires | As required | For circuit connections | Buy Jumper Wires |
8 | Laptop/PC | 1 | For Arduino programming | — |
Useful Tools
Tool | Quantity | Purpose / Notes | Click & Buy |
---|---|---|---|
Soldering Iron Kit | 1 | For making permanent connections | Click & Buy |
Solder Wire (60/40, 0.8mm) | 1 | Electrical soldering | Click & Buy |
Wire Stripper & Cutter | 1 | Stripping jumper wires | Click & Buy |
Mini Screwdriver Set | 1 | For module and relay terminal screws | Click & Buy |
Multimeter | 1 | Testing voltages and continuity | Click & Buy |
Hot Glue Gun (optional) | 1 | Securing components in place | Click & Buy |
Small Pliers | 1 | Holding and bending wires | Click & Buy |
Heat Shrink Tubing Set | 1 | Insulating exposed wires | Click & Buy |
Circuit Diagram Explanation
The Arduino based AC current sensing circuit consists of three main sections:
Current Transformer (CT) Sensor
The CT sensor detects the alternating current flowing through a load. It outputs a small AC voltage proportional to the current.
Example: A CT rated at 5A/5mA means that when 5A current flows through the primary, it outputs 5mA on the secondary.Signal Conditioning with LM358
The CT’s output is small and oscillates around 0V (AC signal). Since Arduino cannot read negative voltages, we use the LM358 op-amp to amplify and offset the signal to a readable range (0–5V).
The LM358 is powered from the Arduino’s 5V supply and is configured as a non-inverting amplifier.Arduino Interface
The amplified output from the LM358 is fed into Arduino’s analog input pin (A0). Arduino reads the voltage signal and converts it into a digital value using its 10-bit ADC.
Then, it calculates the RMS current based on the signal amplitude.
Download Circuit Diagram

Working Principle
AC Current Detection:
The CT senses the AC current from the load and produces a corresponding small AC voltage.Signal Amplification:
The LM358 amplifies this small voltage so Arduino can read it effectively.Analog Reading:
The Arduino samples the analog signal repeatedly to find the peak voltage value.Current Calculation:
Using a calibration factor, the Arduino converts the peak voltage to RMS current.IAC=Vout×CalibrationFactorI_{AC} = V_{out} \times CalibrationFactor
Data Display:
The result is displayed via the Serial Monitor.
Arduino Code Explanation
analogRead(A0)
reads the amplified signal.The loop collects multiple readings to find the maximum voltage.
The maximum voltage is then converted into current using a scaling factor.
Finally, the measured current is printed to the Serial Monitor.
Step-by-Step Build Guide
Step 1: Connect Arduino
Place your Arduino UNO on the breadboard or workspace.
Connect it to your computer via USB for power and programming.
Step 2: Connect the LM358 IC
Insert the LM358 IC on the breadboard.
Pin 8 → Connect to 5V from Arduino.
Pin 4 → Connect to GND of Arduino.
Step 3: Connect the Current Transformer
Connect one side of the CT coil to the load wire (e.g., AC line).
The secondary output wires of the CT go to a burden resistor (100Ω).
Step 4: Connect the LM358 Input
The voltage across the burden resistor is fed to pin 3 (non-inverting) of LM358.
Pin 2 (inverting) connects through a resistor network to ground for stability.
Step 5: Connect LM358 Output to Arduino
Pin 1 (output) of LM358 connects to A0 of Arduino.
Step 6: Upload the Code
Copy and paste the above Arduino code into the IDE.
Select your board (Arduino UNO) and COM port.
Click Upload.
Step 7: Open Serial Monitor
Open the Serial Monitor (Ctrl+Shift+M).
Set baud rate to 9600.
Observe current readings as you vary the load.
Applications
Power consumption measurement
Load monitoring systems
Overload protection circuits
Smart home energy management
Industrial current monitoring
Precautions
Do not directly connect high-voltage AC lines to the Arduino. Always use a CT sensor for isolation.
Double-check connections before powering the circuit.
Use proper insulation and avoid touching live AC wires.
Advantages
Simple and low-cost design
Safe current measurement using CT isolation
Compatible with Arduino for digital monitoring
Easy calibration and coding
Limitations
Cannot measure DC current
Accuracy depends on CT specifications and calibration
Noise in AC lines can slightly affect readings
Conclusion
This Arduino based AC current sensing circuit is an excellent starting point for anyone interested in current monitoring and measurement. With just a few components — Arduino, LM358, and a CT sensor — you can build a reliable system to read and analyze AC current safely.
By fine-tuning the calibration factor and applying filtering, the accuracy of this Arduino based AC current sensing circuit can be further improved. It’s a simple, affordable, and educational project for both beginners and engineers.
Frequently Asked Questions (FAQs)
Q1. Can this circuit measure DC current?
No, it’s designed for AC current only because the CT sensor works on electromagnetic induction, which requires a changing current.
Q2. How can I increase measurement accuracy?
Use a precision burden resistor, shielded wires, and calibrate using a known load.
Q3. Can I display current on an LCD instead of Serial Monitor?
Yes, you can easily connect a 16×2 LCD or OLED display to show the measured current.
Q4. Is LM358 mandatory, or can I use another op-amp?
LM358 is preferred due to its single-supply operation, but other single-supply op-amps can work with proper biasing.
Q5. What is the purpose of the burden resistor?
It converts the CT’s current output into a measurable voltage that can be amplified and read by the Arduino.