Home » 12V DC to 220 AC Power Converters » Arduino Pure Sine Wave Inverter Circuit with Full Program Code
Arduino Pure Sine Wave Inverter Circuit with Full Program Code

Arduino Pure Sine Wave Inverter Circuit with Full Program Code

This article explains a simple pure sine wave inverter circuit using Arduino, which could be upgraded to achieve any desired power output as per the user's preference

Circuit Operation

In the last article we learned how to generate sine wave pulse width modulation or SPWM though Arduino, we are going to use the same Arduino board to make the proposed simple pure sine wave inverter circuit.The design is actually extremely straightforward, as shown in the following figure.

You just have to program the arduino board with the SPWM code as explained in the previous article, and hook it up with some of the external devices.



Arduino Pure Sine Wave Inverter Circuit

Pin#8 and pin#9 generate the SPWMs alternately and switch the relevant mosfets with the same SPWM pattern.

The mosfst in turn induce the transformer with high current SPWM waveform using the battery power, causing the secondary of the trafo to generate an identical waveform but at the mains AC level.

The proposed Arduino inverter circuit could be upgraded to any preferred higher wattage level, simply by upgrading the mosfets and the trafo rating accordingly, alternatively you can also convert this into a full bridge or an H-bridge sine wave inverter

Powering the Arduino Board

In the diagram the Arduino board could be seen supplied from a 7812 IC circuit, this could be built by wiring a standard 7812 IC in the following manner. The IC will ensure that the input to the Arduino never exceeds the 12V mark, although this might not be absolutely critical, unless the battery is rated over 18V.

If you have any questions regarding the above SPWM inverter circuit using a programmed Arduino, please feel free to ask them through your valuable comments.

Waveform Images for Arduino SPWM

Arduino Pure Sine Wave Inverter Circuit SPWM waveform

Image of SPWM waveform as obtained from the above Arduino inverter design (Tested and Submitted By Mr. Ainsworth Lynch)

For the Program Code please visit the following link:

Arduino SPWM Generator Circuit

UPDATE:

Using BJT Buffer Stage as Level Shifter

Since an Arduino board will produce a 5V output, it may not be an ideal value for driving mosfets directly.

Therefore an intermediate BJT level shifter stage may be required for raising the gate level to 12V so that the mosfets are able to operate correctly without causing unnecessary heating up of the devices,. The updated diagram (recommended) can be witnessed below:

simple Arduino sinewave inverter circuit using SPWM
The above design is the recommended one! (Just make sure to add the delay timer, as explained below!!)

Video Clip

Parts List

All resistors are 1/4 watt, 5% CFR

  • 10K = 4
  • 1K = 2
  • BC547 = 4nos
  • Mosfets IRF540 = 2nos
  • Arduino UNO = 1
  • Transformer = 9-0-9V/220V/120V current as per requirement.
  • Battery = 12V, Ah value as per requirement

Delay Effect

To ensure that the mosfet stage does not initiate during Arduino booting or start up, you may add the following delay generator and connect them at the base of the left side BC547 transistors. This will safeguard the mosfets and prevent them from burning during power switch ON Arduino booting.

Adding an Automatic Voltage Regulator

Just like any other inverter the output from this design can rise to unsafe limits when the battery is fully charged.

To control this an automatic voltage regulator could be employed as shown below.

The BC547 collectors should be connected to the bases of the left side BC547 pair, which are connected to the Arduino via 10K resistors.

Arduino sinewave output correction automatic

For an isolated version of voltage correction circuit we can modify the above circuit with a transformer, as shown below:

How to Setup

To set up the automatic voltage correction circuit, feed a stable 230V or 110V as per your inverter specs to the input side of the circuit.

Next, adjust the 10k preset carefully such that the red LEDs just light up. That's all, seal the preset and connect the circuit with the above Arduino board for implementing the intended automatic output voltage regulation.

Using CMOS Buffer

Another design for the above Arduino sinewave inverter circuit can be seen below, the CMOS IC is used as an aided buffer for the BJT stage

SPWM Arduino inverter

Important:

In order to avoid an accidental switch ON prior to Arduino booting, a simple delay ON timer circuit may be included in the above design, as shown below:

Arduino with switch ON delay

Video Clip

SHARING IS CARING!


About the Author

I am an electronic engineer (dipIETE ), hobbyist, inventor, schematic/PCB designer, manufacturer. I am also the founder of the website: https://www.homemade-circuits.com/, where I love sharing my innovative circuit ideas and tutorials. If you have any circuit related query, you may interact through comments, I'll be most happy to help!



262 thoughts on “Arduino Pure Sine Wave Inverter Circuit with Full Program Code”


  1. Howdy, Friend! Interested to Learn Circuit Designing? Let's Start Discussing below!
  2. I have made this inverter and it seems to be working fine. But when I connect a led blub to it, the bulb flickers. Any suggestion will be appreciated.

    Thanks for your time

      • I appreciate your time, I forgot to mention. I am using an UPS transformer, I have not connected the capacitor at the output (waiting for delivery). The bulbs are of Havel, Philips and EverReady etc, this only happens with 18 watts bulb or higher, lower wattage works fine. My whole purpose to make this inverter is to run my 3D printer with it (way too many power cuts in my area). I tired checking the output voltage with a multi-meter (cheap multi-meter) and it blew my meter, but the bulb were still glowing.

        If you need any help with 3D printing you can let me know, my email id is rahul.das2904@gmail.com

        • Can you tell me the voltage and current specifications of the transformer? If only higher watt LED bulbs are flickering it could be due to lack of power or current from the transformer!

          • I have changed the transformer and it fixed the issue, now I am using 12-0-12 5 Amp transformer. Bulbs are doing good, but when I checked a table fan, it barely moves. Could you please tell me how many watts does it produce.
            Appreciate the time.

            • To get a correct 240V output, a 9-0-9V transformer recommended. With 12V transformer the wattage will be less than 60 watts and the voltage may be less than 220V. Check the output voltage, if it’s dropping when the fan is connected then you may need a 10 amp transformer, or may be the present transformer is not a genuine 5 amps

      • Thanks for your time sir, I will check. I am not able to get a 9v transformer online. I have a few transformers with me, I will check with those and let you know. Thanks again for your time.

  3. Hi sir,
    I’m desiging an UPS and we have a DC boost converter (15A, max 37V output), 12V 12A battery, 15-0-15V transformer and lots of IRF3710 mosfets with BC547s for the inverter.
    I want to use your inverter design but I have some questions;
    Can we use IRF3710 instead of IRF540?
    What should be the input voltage of inverter for using 15 0 15V transformer for the 230V output?
    I didn’t design boost converter myself, bought as module. Realized that it has constant current output. Will it be a problem?

    • Hi Atakan,

      What is the purpose of the boost converter in your application?
      You can use the mentioned MOSFET instead of IRf540
      For 15-0-15V the RMS from the Arduino stage should be also 15V. Therefore you may have to use a 20V DC input supply voltage and adjust the Arduino L/H PWM output microseconds to get around 15V RMS.

      • Hi Mr. Swagatam,
        Thank you for your reply.
        I’m planning to use the DC-DC boost converter to get 20V DC input from battery, because my battery is 12V.
        Is there any other way to get 20V output from a 12V battery instead of a boost converter?

        • Hi Atakan, I don’t think that would be too beneficial. That would reduce the efficiency cost wise and with the output power also. Instead you can use the 12V battery with a 9-0-9 transformer. In that case the Arduino circuit can be directly implemented without any modifications in the code.

  4. Hi Swagatam, first of all I want to thank you for sharing this project with us. I need some help because I want to make a full-bridge inverter (H-bridge) to convert 12V DC to 6V AC. I will use arduino to control the MOSFET’s in order to obtain the AC signal but my question is how can I decrease the voltage from 12V to 6V and how to obtain a SIN PURE signal from the square wave which I will get as the result of H-bridge circuit ? Thanks in advance

      • I examine the link above and it was really helpful, thank you. So in my case (12V DC as input and 6V AC as output) can I use the same components over there (I mean the MOSFETs types etc.) on condition to change the dimensions of SPWN only ? Is it possible to obtain the signal which is required by behaving as I mentioned above ?

      • Hi Swagatam, I couldn’t find any resource related with calculating the dimension of SPWM produced by Arduino in order to have a 6V AC signal (using 4 n-channel MOSFET, H-bridge inverter), could you help me please? Another point I would like to make is that I supply my H-bridge inverter with 12V DC, I also used your arduino code to produce SPWM but I have a 0.5V Pure Sine Wave in the output (without using a transformer, I used a RC filter only). I think that obtained output is too low, isn’t it ? Do you have any advice ?

        • Hi Omer, please refer to the conversation between Mr. Serd and me below, you will be able to learn how to adjust the HIGH microsecond timing in the code to get 6V RMS or an average 6v at the output of an Hbridge.

          I am not sure what an RC filter result maybe but If you measure the RMS at the collector of the BC547 with 12V as the input then it should show 8.4V.

    • Hello Nik, you will have to adjust the “microseconds” on each channel such that they add up to give 0.00005 seconds on each channel.

  5. Hello Swagatam,

    I realise that this is a lot to ask, but can you please help me troubleshoot my circuit?

    What I’m basically trying to do is shown by this circuit below:
    https://drive.google.com/open?id=1Gn6HU8BsW_9DnAlsc72Wo1VqynnC18rl

    However, since I’m using my laptop to power up the arduino, few changes has been made to the circuit as below:
    https://drive.google.com/open?id=14E2pTDyYGi4bvW-Y5h8MuSi4tathpzso

    The signals measured are as below:
    Arduino – https://drive.google.com/open?id=1sTQ4Jj0mZyl_bhtqHUtIiANN2sEJjHJK
    Transistor – https://drive.google.com/open?id=1MHrwUHCjRse1RBysXNS1wbehh_f-jB04
    MOSFET – https://drive.google.com/open?id=1ghb5ARqfiFTMA1cAA72aJjHrN48Uynng
    Transformer – https://drive.google.com/open?id=1p4cRx6Ovbqk0dIgXArTDV8Yuwt28v6lm

    The signals from the arduino and transistor seems to be right. The signal starts to be unreadable after the MOSFET. I’m not sure what is the problem as I have checked the circuit several times. Please do recommend any solution to make the circuit working. Thank you in advance

    • Hi Nick,

      May I know why you used a single BJT buffer? It should two BJTs as indicated in the above article. For single BJT buffer you will have to invert the entire Arduino code, meaning swap all the LOW and HIGH with each other.

  6. Hi Sawagatm, I have made this circuit on PCB it works 100% correctly. The output of the circuit is 230V and fixed 50 Hz and pure sine wave. Thanks for your sharing, now i want to change the frequency of the circuit from 25 to 75 Hz simply making a VFD. Can this code be modified by using the analog read pin of arduino and a variable. The circuit should be pure sinewave like this. I will be very thankful for your guidance.

    • Hi Muhammad, I am glad you could make it successfully, however I have no idea how to use the analogue read pin to get an adjustable frequency. I hope one of the visitors here would be able to throw some light on this and help you out with the details.

      • Thanks for your reply, please share this issue on your wall or mention that visitor. This idea will lead this circuit to a pure sine wave variable frequency drive.

        • sure, I will, however I think the best place would be to put this question in Arduino.cc forums, one of the experts there would be able to provide some hints….

  7. good evening Sir, please I will need you to help with, a circuit diagram, function and working operation of a “WEBSERVER BASED INTERACTIVE PURE SINE WAVE INVERTER “

    • Hi Abraham, I don’t think I know about this inverter concept, so would be difficult for me to suggest much on this topic?

  8. Hello Swagatam!
    I like your idea, I will use it for my same project, which I started few years ago, but never finished it. I`m a little bit confused about choosing the perfect transformer ratio. I`m trying to calculate the RMS value of that signal that you posted. With voltage of 12V, I calculated two values: uRMS= 10,03Vrms and uRMS= 7,09Vrms.
    >Data of signal: t1= 10ms, t2= 10ms, T= 20ms. The signal in ON for 7000us= 7ms and OFF for 3000us= 3ms on positive side of signal, the same data is for negative side of signal too.
    >First of all duty cycle: D= t1/T= 10ms/20ms= 0,35= 35%
    >Positive side of signal: Upeak1^2= Vp^2×t1/T= 12^2×0,01/0,02= 50,4 – the negative side of signal is the same as positive signal, so the value is also 50,4
    >Finally uRMS value: 1. uRMS= sqrt(50,4+50,4)= 10,03Vrms
    OR 2. uRMS= sqrt(50,4)= 7,09Vrms (I think that one is correct – choosing just one value, because signal is the same, at positive and negative side)
    >Am I thinking right? Which one is correct? Thanks for your response.
    Greetings to you. Engineer Serđ.

    • Thank you Serd,

      I am glad you liked the idea. If you have carefully calculated them they should be right, due to lack of of time I won’t be able to confirm them at the moment. In my free time I may check them and let you know.

      • Thank you for you quick reply. Please check them for me and let me know, I think the correct value is 7,09Vrms. I`m very interested in that thing, it`s great project.
        Greetings to you. Serđ.

        • Hi Serd,
          according to me the total ON time of one PWM cycle is 14mS, so duty cycle should be 14/20 = 0.7 or 70%, and 70% of the 12V will be the RMS, that’s 8.4V

          Let me know if I am right?

          • Hi Swagatam,
            I see, that you calculated the whole period, so 20ms. Pulses are ON 7ms on positive side and 7ms on negative side, together 14ms.
            >Then duty cycle is: D= t/T= 14/20= 0,7= 70%
            >70% of 12V is RMS value: Vrms= 12V×0,7= 8,4V
            >That seems to be ok. If I choose classic equation for sinusoidal waveform at home outlet it is: Vrms= Vp/sqrt(2)= 325V/sqrt(2)= 230V.
            So in that case for inverter: Vrms= Vp/sqrt(2)= 12/sqrt(2)= 8,5V
            I think that you are right. The best transformer ratio in that case would be 9-0-9V.
            I used equations for different timing in positive and negative side of signal. That could be a problem…
            There are big voltage differences too, about 17% – when the battery is empty, voltage is about 10,8V and when it`s full about 13V. If the battery charges there is around 14-15V with smart acu charger. There are also some voltage loses on MOSFETS. I still think that 9-0-9V transformer is the best choice in that case.
            I didn`t make the circuit yet to measure that values, can you measure it to prove our theory of 8,5V RMS on primary of transformer?
            Greetings, Serđ.

            • Hi Serd, you are right with your assessments.

              I confirmed it through the Arduino output by connecting 1N4148 diodes across the two outputs and then connecting the common end of the diodes with the DC voltmeter, and it read 3.2V which is close to the actual average value 3.5V for 5V. Because 70% of 5V is 3.5V. The 0.3V drop is probably due to the diode fwd voltage drop.

              Here’s the image: https://www.homemade-circuits.com/wp-content/uploads/2019/03/PWM-RMS.jpg

              Yes the battery voltage may vary a lot, and that’s why I have added the opamp voltage regulator circuit. So at full charge you may except an over voltage of 280V which will be regulated at 220V by this circuit, until the battery actually drops to a 220V equivalent value

          • I checked all variants of sketches for that circuit and I think, that circuit using IC4093 driver and H-bridge is the best. I also looked for ICL7667 dual power MOSFET driver but it`s mean to run 2 N-channel MOSFETS directly, or if you replace P- channel with N-channel in circuit and connect two N- channels together to ICL7667 driver pin and vice versa. Let me know, if I`m right. In case of H-bridge you don`t need center tapped transformer. It`s really hard to get high power center tapped transformers (I looked for 9-0-9V 100W and above. I just found one 150W but it`s expensive as devil :D) and there is problem, that there are two coils which could not be the same (trasformer is in saturation). I`m little confused with 1 coil transformer for H-bridge. Our calculations were 8,4V rms, so in that case you could use 9V/230V – 1 coil transformer right?

            Greetings, Serđ.

    • Bipolar is not so familiar to me, however I think the above design could be transformed into bipolar through external NOT gates

  9. Hi Swagatam,
    From your previous answers, I understood that using a battery lower than 12V will not make the circuit work. Can you please explain why? Also, how to solve this problem if I’m using a 7V 5.4 A battery?

  10. Hello Sir, i have tried troubleshooting my design but one mosfet over heats. I would like to ask if i use 3 similar BJTs and one different can it have an effect on the output?

    • Hello Cracker, Please specify which BJTs have you used, I’ll let you know whether they are suitable or not.

      You can try the mosfets with other form of inverters like with IC 4047 or with transistors, and check whether still the mosfets heat up or not. This will confirm if the problem is with the mosfet or something else. Alternatively you can change the particular mosfet to verify the same!

        • They look OK to me. If you want to avoid transistors you can use a single IC 4093 or IC 4049 and connect the mosfets directly with their output configurations.

          • Thank you sir, i have the following questions….
            1. what is the maximum power in watts can i achieve using a 12v Battery?
            2. Which transfomer setup is the best for this inverter, iron core or the ferrite core transformers
            3. Is there a way to increase efficiency of this setup?

            • Hi Cracker,

              The Ah rating provides us the maximum breakdown tolerable discharge/charge rate of the battery. it depends how much you care about your battery. Operating the battery at the full Ah level will very soon kill the battery. The commercial UPSs probably shows the maximum power of the inverter but it may not be recommended to use 7Ah battery for getting the mentioned power output. The recommended charge/discharge rate for a lead acid battery is 1/10th of its Ah rating. The higher the rate the quicker the battery will deteriorate and vice versa.

            • Thank you sir for the detailed info you offered, after i am done designing how do i tell the exact wattage my circuit outputs?
              – is it wrong to mix different Mosfets in parrallel
              – the output at the mosfet drain is around 6V is there a way to raise it to 12V so that I can use a 12-0-12 transformer?

            • Thanks Cracker,

              Your transformer wattage rating will be the maximum wattage capacity of your inverter. You will have to use a battery that will complement this wattage level.
              It is OK to use different mosfets as long as their ratings and specifications are well within the required range.
              The 6V is probably the average voltage due to its frequency. The peak should be 12V only. You can use an oscilloscope to confirm this.

            • Hello sir,
              I started the project and now looking at upgrading it to a more powerful one. I have ordered 20 HY4008W MOSFETS hope they are good for a 1.5KW power inverter. My problem is the transformer, my current demo inputs between 5.5V & 6.0V to the transformer and am wondering which is the best transformer to use between 6V-0-6V & 9V-0-9V.
              with arduino we can virtually incorporate any inverter features with a wide range of sensor available but my Question is What are the best features can i add

            • Hello Cracker, the best features of an inverter are probably a sinewave output and an over voltage control, both are presently included. Among other features can be to have an automatic overcharge/low battery cut off and overload shut down. However adding all the features from a single Arduino can be difficult?

            • Thanks Sir,
              Since am good at arduino manipulation i will use two of them with serial communication.

              Kindly advice on the transformer to use as i had requested previously. 6-0-6 or 9-0-9

  11. hello guys noticed an issue I built the design but the MOSFETs are heating up even on no load I don’t know if any one has a solution to that

    • Hello, please allow the Arduino to boot first and then connect the transformer center tap with the battery. Please see the second last diagram for the warning message and please do accordingly.

    • Hi Adez, the CMOS stage is actually not needed, you can effectively use the second design with 4 BJTs and 2 mosfets.

      But please take care of the booting issue in Arduino by including the delay timer stage in the mentioned design

  12. Good day my precious Boss, kudos to you on the good work on electronics. I want to ask some questions related to the circuit you recommended sir.
    1. I want to use 6 mosfets will i use six 1K or that two will take care of it.
    2. i want to add LCD to it using thesame arduino, hope it wont affect the PWM signal. or i should use different arduino for that.

    • Apex, for increasing capacity you can increase the number of mosfets, no need of adding extra resistors, you can connect all the gates together and join them with the collector of the transistor.

      You can use an LCD if you have the code, I am not sure how it would impact the inverter PWM, most probably it shouldn’t

  13. Sir, I have simulated the Circuit in Proteus 8.1 got PWM output exactly as u shown in ur website,also tested the mosfets switching state by connecting the leds across two channels working fine. When i connected 12v bulb at the output it is not glowing constantly fraction of secs it is glowing high & again dim just like blinking,to fix that i also used 0.22uf capacitance at the transformer output. I m trying to build pure sine wave inverter 12v dc (from batteries )to 120vAc . Can u help me out to get pure sinewave ? Also can u tell me software for simulation other than proteus?

  14. i Think this is most easiest inverter to build. its possible to connect solar charger Battery terminal to this circuit to charge the battery?

  15. Thank you for your topic

    I would like to ask a question is it possible control the phase angle and the voltage amplitude from the code.

    • Phase angle can be precisely adjusted by suitably altering the pulse widths and the number of pulses in each block. However this will need to be also complimented by suitably adjusting the capacitor value at the output of the transformer.

    • Hi Uthaya, it is a 10 watt bulb because the transformer is 1 amp rated. A 1 amp transformer with a 12V battery will produce 12 watts only, and with a PWM this may be reduced to 6 watts

  16. Could you please tell me what code should i use? because i used both arduino codes on SPWM and didnt work as expected.

  17. hi sir,
    i followed exact circuit below your video but still cant get 240V. im get 170v and not producing sinewave after transformer. i havent build the hardware, im doing in protues 8.1
    simulation software.

    • Hi Uthaya,

      I would recommend you to build the set up practically using a small 1 amp transformer, and a 12V 7 Ah battery, and then measure the waveform using an oscilloscope to confirm the actual results

  18. Hi Mr Swagatam
    I have finally constructed the circuit and test it on various transformers , and under different load , eg , 675 Watt Drill together with some Let Light, The Circuit is working 100 % , and I thank you a lot for that , I have designed a an Eagle PCB Layout for it , and also made few changes as integrating a Solar Charger to it , Will mail the Layout for others to try out ,Thanks a million, keep up with this good work

    • That’s wonderful vhafuwi, I am glad it is serving your purpose.

      However there are a few modifications that needs to be done in the circuit, you will be able find the updated designs soon which might help you and other viewers to further improve the outcome of the inverter

  19. What is the specification of the transformer?
    I am using 6-0-6/230V , 50Hz transformer.
    But we are generating higher frequency SPWM which cant be fed to 50 Hz transformer.
    So what should be the rating of the transformer?
    And where to connect filter (at the primary / secondary side)?
    Thanks

    • transformer rating is OK, just make sure the transistors are oscillating and delivering the current to the transformer winding. You can initially replace the transformer winding with 6V bulbs, and check whether they are illuminating dimly or not? If not then the transistors may not be conducting due to some issue

  20. Thanks a lot for the circuit.
    I am getting SPWM signals at the two MOSFETS.
    But when I connect 12-0-12 / 230 V transformer to it, I am not getting 230V ac sine wave , instead I am getting very distorted sine wave in mV.
    I want a low power(i.e very low current) and a pure 230 V AC sine wave output.
    Do I have to connect resistor between MOSFET and transformer?
    Is there anything which I made wrong on the circuit?

    Thanks

    • The functioning is very straightforward and it should start working immediately, actually for low current application, mosfets are not required.

      You can make the first circuit, and replace the mosfets with TIP122 transistors, and connect then directly wit the transformer, it should immediately start working with an output of around 250V

  21. What is the filter circuit to be used at the output of the transformer for pure AC sine wave?
    My application is for low current and 230V

  22. Where to connect the GND of arduino in the circuit ? And do we have to connect any load to test the citcuit? (Like LED etc)
    I rigged up the circuit and changed HIGH to LOW in SPWM code , but I’m not getting output.
    Once I got a sine wave but RMS voltage is in millivolts.
    I used 12 0 12 to 230V transformer.
    I gave 9v to arduino from different source (not from 12V battery)
    Thanks

    • Ground is already connected via the 7812 IC to the battery negative, if you are using an external source for Arduino make sure to connect the negative with the inverter battery negative otherwise you will get no output.

      by the way a 9V battery will not work, you must use at least a 12V 7 Ah battery and a 6-0-6V or 9-0-9V 2 amp transformer.

      • Thanks a lot for the answer sir.
        I am using Regulated DC power supply instead of a 12 V lead acid battery.
        Why we have to use 6-0-6 or 9-0-9 , 2A transformer instead of 12-0-12 transformer ?
        I don’t need very less current at the output , but I need a pure 230V sine wave control signal.
        And is it the positive terminal which should be connected to the center tap of the transformer?
        Please suggest me if have to add anything to the circuit .
        Thank you so much

        • You are welcome.

          You don’t have to connect anything else in the circuit, just make sure the negative of the external supply to the arduino is connected with the battery negative.

          The center tap of the trafo will go to the battery positive

          the output will be SPWM which will need some filtration to look like a pure sine.

  23. Hello Swagatam , I have replicated the design and it is working very nice, Just a small question , what changes do i have to make to use PC817 Optocoupler to isolate the circuit

  24. Hi
    Thanks again for such a wonderful circuit , what is the best way to test if gates are switching properly without oscilloscope

    Regards

    • glad you liked it….connect LEDs across the two channels with respect to ground and with 1K resistors with individual LEDs, increase the delay at seconds in Arduino code

      • Thanks for the prompt response, just a bit of clarity, I must connect LED accros the two channel , eg The Cathode of the LED go to the ground , 1k resistor to channel and the to Anode ,

        From Channell I Connect 1k Resistor then connect it to LED Anode then connect LED Cathode to the Ground , Am I right

  25. HI I wanna build an inverter of 1.5kva using arduino programming of atmeg328, so what I really need from you now is full function programming code of this ic which include all necessary activity of inverter function, that’s all I need from you sir. Here is my email olayinka06@live.com

  26. Hi Swag! Did you tested this circuit with inductive loads? I want to use it on a grundfos water pump.

    Thank you for sharing this project!

    • Hi elektroman, I did not test it but it was verified by others readers, moreover the concept is a standard concept which is implemented in all conventional inverters

    • forget proteus, build it practically and you will find it works flawlessly…all sinewave inverters circuits work with the same principle…

      Or if you know a valid reason why it won’t work, you may point it out…. otherwise your statement does not make sense…

      • good day sir
        can the Bjt be used to drive multipe mosfets in parrallel, or is it better to drive more BJTs first before the mosfets

          • ok thanks for the speedy reply
            is there possibility of one of the mosfet drawing more current due to disparity in same manufacture-model, leading to thermal runaway and gradually affecting other mosfets, if this is possible how can it be prevented.

            i want to use build a 1kva inverter but with pulse width from an arduino, purposely for powering a fridge which run power is 70watts but starting watt unknown.

            my fear is if there will be current loss if not running at full amperage

            • mosfets are actually less vulnerable to thermal runaway than BJTs due to their positive temperature coefficient property, still to be on the safer side you can use common heatsinks for the mosfets on each channel, this will ensure equal heat distribution among the mosfets and therefore more efficient conduction.

              https://homemade-circuits.com/transistor-facts/

          • Good day, I trust you are doing great.
            will it be a good idea, to use voltage doubler circuits to incrementally get to 48 volts then use a 48/240 volts step up transformer.(what value mosfets do you advice on)
            This is to reduce current going through the primary winding of the transformer.

            my challenge being, getting a voltage doubler that can handler a 1000 watts. ,as well as getting a centre tap 48 volts transformer.
            finally do you think using this method we can increase to 120 volts , before using a 2:1 ratio transformer to step up as this transformers are generally more reliable

            • using a boost converter will cause unnecessary wastage of power and increase inefficiency of the system, so I won’t recommend that, instead it would be a good idea to use batteries in series to get the required a 48V input.
              In case you totally want to avoid the center tap trafo, that may be possible using a ferrite trafo based inverter, first boost the battery voltage to the required mains level, turn it to DC and then again switch it back to a low frequency mains AC

  27. Sir
    Ineed a ckt for half bridge ivertor to convert 300v dc to 150v ac. So ineed to handlel high voltage on input side. I cant find any stepdown invertor ckt for handle 300v dc in input side in online. So pls suggest a ckt

  28. What the watt can I load on this circuit?
    And how can I calculate the watt of my laptop charger it’s input 100-240v 1.6a and output 19.5v 3.33a

    • Hi Miebaka, you can use any Arduino as long as it accepts and generates the indicated PWM and waveform…PWM pins are not required because here basically we are using the Arduino as an oscillator.

  29. Sir
    I nees 150v dc to 110v ac output invertor . No need to step down . So can i use the above ckt as iam mention after any change inthe ckt . If its not possible Pls reccoment any other idea
    Thanks

  30. Thanks a lot sir for your valuable rply.
    Sir need to ask u one more question that is , to adjust the spwm signal from Arduino can I use low pass filter just after pin 8 and pin 9 of Arduino from where we r getting output spwm signals .
    And I have chose 4.7 uf capacitor value with 1k potentiometer to adjust the frequency , is this right value

    • Manish, what is the purpose of this low pass filter? and what frequency are you trying to adjust, the Arduino frequency can be adjusted by altering the delays within the code, nothing can be done through external means.

    • Manish, With a 12V battery, the transformer voltage rating can be anywhere from 6-0-6V to 9-0-9V, the PWM from the Arduino will need to be adjusted accordingly depending on this voltage rating of the transformer.

      the transformer current specification will depend on the output wattage requirement, same for the batt AH rating.

  31. This indeed is another nice project since am familiar with Arduino I think doing this will really go in my favour, thanks a lot Swagatam Innovation. But before I try this project, I have two question.
    1. Will this inverter be able to power a fan without issues?
    2. Is there any kind of analog MOSFET that can create pulse instead of just turning on and off?
    Cos this can help create a better PWM without harmonics.
    Thank again for you contribution to science.

    • Thanks Miebaka,
      According to me if a proper filter is added which can be simply a high value capacitor at the output of the inverter, then inductive loads can be expected to work without noise.

      You can achieve a harmonic less pure sine output by using an emitter follower BJT/IGBT, or a source follower mosfet topology, just as we find in power amplifiers.

      To be precise you can use a power amplifier and modify it into an inverter efficiently.

      However avoiding PWM and harmonics would mean inviting heat and lots of heat on the mosfets:)

      you can refer to this article to know more:

      https://homemade-circuits.com/2012/02/making-sine-wave-inverter-from-audio.html

  32. It has to be sorted out by you…the concept is crystal clear in front of you, and there’s nothing mysterious about it….the Arduino output would be generating 5V peaks for the PWMs….5V is enough to trigger any BJT…but may be not enough for the mosfets, still it should work.

    you can confirm the output with LEDs by increasing the delay time to may be 1/2 second…..the code even has a small dead time to ensure that the mosfets never turn ON together.

  33. sir,
    I want to design 12VDC to 230VDC ,100W(MAX) ,pure sine wave inverter for solar system.
    I don’t want to use any Micro controller .
    can you post any relevant circuit for my requirement .

    • Muhib, you can try an ordinary high voltage generator circuit, the above sophisticated Arduino based design is not required

  34. i require a driver circuit for
    mosfet which enhance the 5V output of arduino to 12V to feed mosfet,
    * suggest me a driver circuit.
    * i am making circiuit for 240V , 350 watts output,
    * which mosfet i should use ? irf3205???
    *can i use more mosfets parallel to overcome heat issue of mosfets,
    * what transformer should i use,,,,,, i am using 7ah 12V battery,
    required output 230V, 350watt, guide me rating of transformer?

    • you can use a 4093 IC and use its gates like NOT gates by shorting its inputs and then it would effectively raise the 5V input to 12V.

      IRF3205 will do

      you can try as many mosfets as you want, in parallel

      12V 7ah battery will be too small, and not produce more than 60 watts, you will require a 100AH, 12V for getting anything near 300 watts

  35. Ainsworth, yes a resistor should be across gate to source to drain electrons from the metal oxide semiconductor gate to the source. 100K to 1 Meg ohm. An unconnected insulated gate voltage can float to a positive voltage and turn on the N channel mosfet make a short connection from drain to source. Ie proper operation of n channel mosfet. 2nd verify electrical ground connection from arduino circuits to your smps power circuit mosfets. If not connected. Then circuits Can float with low output 0.7V from arduino can be 4.3V measure on mosfet gate to source. Effectively turning on n channel mosfet. Battery ground, arduino ground, n channel mosfet ground all tied together. Good luck on debugging circuits. Thanks for arduino sine wave code and circut. Bless you and thanks for Sharing. Fred WB7ODY

  36. that clearly indicates your FETs are not good, because connecting the gate with source should keep the fets completely shut off, if still it is conducting then surely the fets have some fault

    You can try using BJTs like TIP122 or TIP142 instead of the mosfet and check the response.

  37. If u have some parts I would want you to test the circuit with a transformer, I think it may require a optocopler.

    • you have already tested the waveform which simply needs to applied to the gates of the mosfets, there's nothing complex in the design at all, since you have already started with the project it would be easier from your side to finish it,

      you should change the doubtful fets and replace them with BJTs, and confirm the results.

      I think it is just a matter a minutes to identify the exact location of the fault, by doing some basic tests as already suggested by me in the previous comments.

  38. Fuses cannot be a crucial thing in any circuit while testing, unless the circuit involves dangerous parameters and unpredictable results, here the inverter is supposed to work without any fuse…if you are forced to use a fuse that means your inverter has a serious fault which cannot be solved by replacing fuses rather it should be done by checking and rectifying the fault

    As I mentioned before you should check the response of the FEts without connecting the gate supply, and by keeping the gates grounded..if still the FETs conduct would indicate faulty fets.

    puling high current without load is a fault and as good as a short circuit.

    By the way there's no point in working with faulty, doubtful, devices…if you have slightest doubt regrading the parts either you must replace them or quit the project until correct parts are bought.

  39. …you can also try a small good readymade trafo (1 amp) and test the response, that will give you clear idea regarding the proceedings.

  40. you are saying your trafo is good, your fets are good, there's no chance of any short circuit, and yet your fuses are blowing, how can that be possible?

    from here I can say your FETs are bad for sure or may be there's something that's causing a a short circuit which you must diagnose and rectify. without a short circuit or overload a fuse can never even a new hobbyist will know that!

    if I would be in your place I would have first tried BJTs instead of mosfet for testing purpose, because BJTs are more manageable thn mosfets
    mosfets gate resistor should always be low, in fact higher resistance might cause heating up of a mosfet and damage.

    alternatively you can remove the Arduino and check with a 4047 IC, to see the difference, there are actually many methods through which you can check the fault.

    another method is to connect car bulbs in series with the mosfet drains, and remove the gate supply, if the bulbs keep glowing even without gate supply would quickly indicate a faulty fet.

  41. Q1.is there any way to start single phase 3hp induction motor on home 5kva inverter ? because starting current is very high may be more than 30 amp but running at full load max current is 15 amp . Q2. is running above mentioned motor, possible on pwm based pure sine wave inverters?

    • It may be possible and tackled comfortably by adding an external battery bank with the existing battery. once the motor is initiated, the external battery bank can be removed, or disconnected with a help of a switch.

    • i have question. inverter is only 5kva ratings.
      than how adding a battery to it increases​ its output power ?

    • it should be able to produce the extra power for a few seconds.

      but if you are concerned about it, then the best option would be to change the inverter with a 1 kva rating

    • sir thanqew for ur valuable reply.
      can you please suggest components for above systematic to bulid 6kva inverter and approx prize estimation for it?

    • You are welcome,

      for making a 6kva inverter you can use the same Arduino board and its code.

      for increasing mosfet power you can add more of them them in parallel, each mosfet should have it's own gate resistor and diode.

      the transformer will also need to be rated as per the mentioned specification.

      the battery voltage should be selected as high as possible, may be at 84V would be great and this will allow the transformer to be relatively smaller and the associated wiring to be manageable.

    • for rating of mosfet …
      if i have two mosfet each one rating 50watt and one for possitive cycle and another for negetive cycle .does it means i have inverter of 100watt or only 50watt??

    • Gurmel, both the mosfets will need to be of the same polarity as shown in the diagram that N-channel.

      the mosfets do not decide the power output, it's the battery AH rating and the trafo wattage rating which determines the output delivery, the mosfets simply needs to be rated adequately so that it is able to handle the power pushed by these elements.
      the power power will depend on the trafo Voltage x current value and only if the battery has the capacity to deliver the amount of current which trafo is rated at

  42. Sounds Good. Can you please post the link here as I am unable to use search box in my android. may be some css issue.

  43. adding to my previous question. do you have any kind of pure sine wave inverter schematic that can power on a 1 to 1.5 ton Air Conditioner. Actually I bought a land for fish farming and wanting to power up things in my sitting area there with inverter because of lack of electricity there.

    • Great. one more thing Can this be used with batteries? because I wanted to run this in night as well. Also solar panel isn't possible for me due to low space around sitting area and placing panels to any other area isn't affordable for me. what is the idea behind is that I will use two sets of battery banks one online and one offline on charging stat. inverter should be smart enough to detect low battery and switch input to secondary battery bank and start charging the first one while should run at least 1 ton Air Conditioner thats why I was thinking of 5kva inverter. if there any possibility then please write an article on this as soon as you can. I can buy this from market but you better know what we ask, we don't get. better to make it ourselves as per our requirements and have fun of electronics.

    • Solar panel is actually not compulsory, you can use any suitable DC source with the suggested circuits, just make sure the voltage and the current specifications are correctly matched with the inverter and the load.

      most of the ideas are already published in this website, you just have to search it using the search box.

      I have a 5KVA inverter circuit included in this website, I also have an automatic twin battery charger circuit which you can use for automatically detecting, and selecting the charged battery when one of them gets discharged.

      However all these circuits are strictly for the experts who know all the basics of electronics and have the required practical experience in the field, it's not for the newcomers, so please make sure you have an expert with you while you try the proposed designs.

  44. Hi Swagatam,

    I need to build 48vDC to 220vAC 5000KVA Pure Sine wave Inverter. Can you please share schematic and number of power transistors or mosfets and transformer specifications. I also need to know battaries specifications. thanks

  45. Hello sir , can one achieve a pure sine wave if it he uses pins 8 and 9 of the arduino but this time with an l293d IC instead of MOSFET, 12-0-12 transformer, 12v battery?

  46. Hello sir niceone… Can one use an l293d motor driver IC instead of the MOSFETs, with a 12-0-12 transformer and a 12v battery?

  47. But it will be less weight. what is your opinion if we used dc booster in Pure sine wave inverter. we will be thank full if you have any Diagram.
    Secondly in pure sine wave 3K Inverter which one will be very effective to give us pure sine wave Arduino or IC 4047 with 555.

    • that looks perfect, and quite similar should appear at the trafo output, which should get transformed into a perfect sinusoidal waveform with the addition of a capacitor (0.33uF/400V) and possibly an inductor, as shown in this example circuit

      4.bp.blogspot.com/-khKat0UA8Jw/UITpCnNd7yI/AAAAAAAAA_A/8x-KAD2aHLE/s1600/simplest60+Hz+Inverter+circuit+diagram.jpg

    • it's the 6 pillars on each cycle which might be confusing the scope…you can add a capacitor at the trafo output and see the difference…

  48. Hi sir i am planing to make an inverter of 48v to 240v pure sine wave. I try to search here and i didnt find a pure sine wave 48 v circuit.. My inv transformer is 48v – 0v 12amps & secondary is 240v.. Sir please help me.. My mail id is vineethhari@ymail.com

      • Felicitaciones que gran trabajo….Una pregunta estoy usando batería de 24V y el transformador es de 220VAC, debo hacer algún cambio al código de Arduino o no es necesario? y que capacitor debo usar a la salida del transformador para obtener la onda seno pura?..Gracias por tus aportes.

        • Me complace que le haya gustado el artículo, no tendrá que cambiar nada para la batería de 24V, solo asegúrese de usar un 7812 IC para el Arduino. El condensador de salida debe probarse aleatoriamente. Inicialmente puede probar con 0.22uF / 400V y luego verificar gradualmente la respuesta aumentando este valor.

          • Mil gracias por su pronta respuesta, olvide comentar que en mi país trabajamos con 60hz, todo sigue igual o debo hacer modificaciones en Arduino o en alguna etapa del circuito?,otra consulta,deseo implementar el temporizador de retardo para evitar problemas en el encendido pero a 24V y en tu diagrama está a 12V,debo hacer cambios? GRACIAS POR TU VALIOSO APORTE A NUESTRA HERMOSA PROFESIÓN…

            • You are most welcome Mekatronik, yes for getting 60Hz the code will need to be changed a bit.

              As you can see the total delayMicroseconds on each channel of the code adds up to 10000 that’s 10 mS…you will have to adjust and reduce the values proportionately so that the total adds up to 8333 microseconds or 8.33 mS

            • hola el cambio que me sugieres de 8.33mS para 60hz lo debo hacer a estos valores?

              const int sPWMArray[] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500};

              O en esta sección del código?
              estoy un poco confundido,gracias por tus aportes.

              // Loop for pin 1
              for(int i(0); i != sPWMArrayValues; i++)
              {
              if(sPWMpin1Status)
              {
              digitalWrite(sPWMpin1, HIGH);
              delayMicroseconds(sPWMArray[i]);
              sPWMpin1Status = false;
              }
              else
              {
              digitalWrite(sPWMpin1, LOW);
              delayMicroseconds(sPWMArray[i]);
              sPWMpin1Status = true;
              }
              }

  49. I asked that question time after time but never actually got a reply. So let me get it straight just this once.

    If my battery source on an inverter is 12v that means the transformer should be 6-0-6v and if it's a 24v battery source then the transformer will have to be 12-0-12v ect.

    And that's the case for all your inverters? If any exception could you send me the link to the exception and im not refering to something like your cascade design.

    • Please show me where you have asked this question, and did not get the reply?

      when you use PWM it cuts off a portion of the actual waveform and this results in a reduced average voltage or the RMS value of the waveform, to compensate this the transformer needs to be lower with its primary V specs, so that the reduced PWM waveform matches the reduced value of the trafo.

      for example if the PWM waveform average value is 7V for a 12V peak, then the trafo should be 6V/220V which will yield approximately 230V.

      instead if we applied 7V PWM waveform to a 12V trafo that would proportionately reduce the output to:

      7/12 = x/220

      12x = 7 x 220

      x = 128V at the output

    • In this case it's a spwm so it's applicable here. So my battery is 12v so I need to use a 6-0-6v transformer then

    • I checked the video which you sent, I am afraid the results are not correct.

      the code of the Arduino cannot be wrong because it contains simple delays in the form of ON/OFF periods…and these ON/OFF periods must produce PWM kind of waveform in the oscilloscope, your scope waveform looks weird.

      secondly, if you add all the delay periods in the code, it comes to 10000 microseconds that's equal to 10ms…so 10ms on each cycle gives 20ms on the two channels…dividing 1 second with 20ms, gives 50 Hz, and that should eb the frequency…how can it be 600Hz??

  50. I tried a 12v transformer, I was getting 57v, I used irfz44n and they burnt up 2 times, while running they weren't hot, I think they burnt up because of of constantly adjust alegator clips on battery terminals to get a better connection.

    But since the voltage was that low and the frequency is so high I was wondering if you tested this circuit.

    • mosfets can burn due to many reasons, and definitely not due to frequency issues because mosfets are designed to handle very high frequencies.

      it's a Pwm circuit and the transformer cannot be 12V for a 12V supply, it has to be 6-0-6V or some other value as pert the calculations, I think this issue has been discussed countless number of times in this website…

      the above design is a an obvious circuit and will work without fail.

      I have tested it with LEDs with a slow delay effect and it behaved perfectly as per my brain simulation.

      once this was confirmed, I simply reduced the delays so that the sequence corresponded a 50 Hz frequency across the two channels with 7 varying SPWM pillars for each cycle,

      anybody can easily interpret this.

      you can verify the pattern on an oscilloscope if you have doubts.

    • thanks alex, you can achieve that by using 600 watt mosfets and a 600watt trafo….and a 24V 150AH battery

  51. Hi Swagatam,
    I want to make an inverter to drive some gauges that require approximately 2 amps at 115v AC @400Hz, using a 28v DC imput. The Arduino seems like the right tool. Would you be kind enough to make up a circuit diagram?
    Regards,

    Mark

    • Hi Mark,

      you can try the same design which is published in the above article….just assemble it, and start using it for your specific need.

      the transformer will need to be a 24-0-24V 10amps/120V for your mentioned application

  52. Hi Swagatam,
    I have tried PWM charge controller using arduino and it is successful. Iam using it in my home generating 80 watts of power from 200 watts panel. I know its very poor.
    BTW, I admire your works and I keep looking at your blogs very often.
    I came across this very interesting circuit and I want to try this inverter.
    Just to be sure, I have few 4905 PNP mosfets lying around from previous project, Can i use the same in your circuit? Source of mosfet connecting to Battery -ve and Drain of mosfet to transformer?
    2. Transformer rating: secondary 12v-0-12v/15A, primary 220V. What will be my output power? is it 12×15=180 Watts? So if i increase the transformer rating to 30A can i get 360 watts of power? ofcourse with some 10-15% losses…

    • Hi Sham, if you are using an Arduino based controller and getting 80 watts from 200watts, then it's not worth using…or may be you haven't built it correctly, a linear IC circuit would give much better results than this.

      as for the above Arduino sinewave inverter, yes it's indeed an interesting and handy little inverter which will give you pure sinewave just by hooking up a couple of fets and a trafo.

      Pchannel mosftes might not work correctly here since the design is meant for N channel mosfets, so you will have to replace your p channels with N channels and then test the results.

    • Sham, I checked the link you sent, but I could not go through the diagrams since it everything quite elaborate….

      one thing i can say, if PWM is used without a buck or boost converter then it's meaningless…it will simply block the excess power from the panel and indirectly waste power. In that case its' better to use a LM338 based circuit, or simply use a panel having a nearby specs to that of battery.

      When you are using Arduino based design the outcome should be highly advanced and efficient, otherwise it's pointless.

      if you need an MPPT circuit you can check out the first two articles from this website

    • Hi Swagatam, Appreciate your quick response. I am using Arduino for doing multiple tasks, like auto change over to AC/Battery, solar energy monitoring etc… as u said it looks like something is wrong.. My 100w x2 panels are generating appx 7-9 amps peak. But inside ckt it's getting down to 6.8 amps max. ��. I need your help in solving this. After reading ur article, am thinking of some issue in calculating the duty cycle fed to P channel MOSFET. Let me check that and update you.
      I will purchase 9-0-9v trafo, N channel MOSFET and try the ckt. Here I need to control the amount of power used and alert me when solar power generated is less than power consumed. I hope I will succeed in this.

    • Hi Sham, what kind of circuit are you using for the controller, is it a buck converter? also specify the V and I of the panel.

      duty cycle for the above circuit is 50% for the positive negative halves, and the individual phases are SPWMs with varying duty cycle.

    • Wow Swagatam.. xlent link. Thank you. I will to go through them one by one.
      Yes.. now I am realizing the necessity of Buck converter. In one of your article you had mentioned about both Buck and boost.. I had not understood at that time.. I will go thru again.
      Btw, to my understanding, I should use Buck converter with 10 amps rating for my work right? Bcos panel amp rating is 10 amps.

    • You are welcome Sham,

      if you wish to use a buck converter with a 10amp pnel, then it should be rated higher than 10amps, because when the panel voltage is reduced by the buck converter it is supposed to convert the unused voltage into current…therefore current would go above 10 amps.

      you can find it dividing the solar panel wattage by the battery voltage.

Leave a Comment

Do NOT follow this link or you will be banned from the site!