Arduino Inverter Circuit

Inverter circuits are very helpful to produce AC supply when we need and it uses minimum level of DC bias from battery source.

Here the simple and reliable inverter circuit designed with Arduino board, and we can program Arduino to obtain stepped AC output, modified sinewave AC output or Pure sinewave output, and also we can program Arduino board to bring different range of frequency output.

Circuit Diagram

Construction & Working

This inverter circuit have three stages and a 12V 5.0Ah SLA battery as a DC bias, to show this circuit simple and neat I have removed battery charger circuit.

The first stage of this circuit is Arduino Micro controller board and it is programmed to give SPWM (Sinusoidal Pulse Width Modulation) or you can modify the code to produce different output from Arduino pins.

Second stage is switching and driver stage, output pulse from the Arduinio digital pins are fed into switching transistor SL100 npn and then power mosfet IRF540.

Third stage is a output stage which is constructed by using center tapped transformer (230 VAC primary / 12-0-12 VAC secondary) and it is connected reversely with  driver circuit that is secondary stage (12-0-12 VAC) is connected to the power mosfet and primary side of transformer let to give output supply.

When the battery connected with this circuit voltage regulator 7812 powers up the Arduino board and it starts producing output pulses depends on sketch, the pulses are drives the transistor SL100 and power mosfet IRF540 and transformer secondary winding connected with the mosfet get discrete energy and mutually induce the large number of primary winding, as we know due to large numbers of winding and changing magnetic field, it produce high voltage AC output.

Arduino Inverter Code

This code to produce SPWM at pin D9 and D10 of arduino uno board, you can modify and comment your better arduino code.


const int SpwmArry[] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // Array of SPWM values.
const int SpwmArryValues = 13; //Put length of an Array depends on SpwmArray numbers. 
// Declare the output pins and choose PWM pins only
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// enabling bool status of Spwm pins
bool sPWMpin1Status = true;
bool sPWMpin2Status = true;

void setup()
 pinMode(sPWMpin1, OUTPUT);
 pinMode(sPWMpin2, OUTPUT);

void loop()
 // Loop for Spwm pin 1
 for(int i(0); i != SpwmArryValues; i++)
   digitalWrite(sPWMpin1, HIGH);
   sPWMpin1Status = false;
   digitalWrite(sPWMpin1, LOW);
   sPWMpin1Status = true;
 // Loop for Spwm pin 2 
 for(int i(0); i != SpwmArryValues; i++)
   digitalWrite(sPWMpin2, HIGH);
   sPWMpin2Status = false;
   digitalWrite(sPWMpin2, LOW);
   sPWMpin2Status = true;




High Voltage and Current output Circuit. Handle with Care and Safety measures



  1. Rashaka Lufuno November 13, 2017 Reply
    • Selva February 22, 2018 Reply
  2. Jannie December 30, 2017 Reply
  3. Mangara January 7, 2018 Reply
  4. mahesh February 15, 2018 Reply
  5. John Sunday February 23, 2018 Reply
  6. Tejaswini March 13, 2018 Reply
    • Donp July 11, 2018 Reply
  7. Donp July 11, 2018 Reply
  8. sweety February 3, 2019 Reply
    • Jalakam Kiran July 31, 2019 Reply
  9. sweety February 3, 2019 Reply
  10. jacques BONTEMPS February 5, 2019 Reply
    • Ghufran Ghufi June 13, 2019 Reply
  11. siva July 19, 2019 Reply
  12. Siva Kumar July 20, 2019 Reply
  13. joao September 18, 2019 Reply
  14. THOTA VENKATA SUBBAIAH April 18, 2022 Reply

Add a Comment

Your email address will not be published. Required fields are marked *