element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Sine PWM generation using Arduino UNO
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 7 replies
  • Subscribers 404 subscribers
  • Views 1904 views
  • Users 0 members are here
  • spwm
Related

Sine PWM generation using Arduino UNO

Former Member
Former Member over 11 years ago

Dear all

 

I am a University student and I have been assigned with a project of developing an Inverter circuit. Therefore, I need to generate a SPWM control signal for my switches.

In the past years I was involved with Arduino programming but never got into interrupts and timers. So I reached a dead end since I have no idea of how to program the Arduino to generate a sine PWM signal. I have been through several codes found on the internet and they worked perfectly. Thing is that I need to understand them cause I need to make some changes.

I would really appreciate your help.

 

Kind Regards

D.M.

 

P.S. I am attaching the code found on-line

Attachments:
spwm.ino.zip
  • Sign in to reply
  • Cancel
  • D_Hersey
    0 D_Hersey over 11 years ago

    Maybe you should look up Taylor series.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 11 years ago

    The code you posted just uses a look up table to make sines from phase angles and a DDS (google it) to make the phase angles. If you want to run your inverter at  a constant frequency you don't need to bother with the DDS, just make a table of pulse widths and step though it at  a constant rate. You should synchronize the PW changes with the PWM frequency  - it might be worth interpolating between sine values from a table to avoid steps in the PWM settings.  I don't use Arduinos so I'm not sure if you have the level of control you would get in C or Assembler.

    Is your project more concerned with hardware or software ?

    What hardware are you using for the inverter itself.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to michaelkellett

    Thank you for your quick response. I am doing both hardware and software, and now i am at a stage where i have developed my hardware part and i am experimenting with the software. i am using MOSFET switches along with opto-couplers and drivers.

    i would like to thank you again for your advice but I am looking for an explanatory guidance through the program itself, so i can find what is responsible for the output frequency, how I can invert the signal (without the use of logic gates) and guide it through a different output and how can i integrate a pwm algorithm independent from the control signal in order to control a couple of other switches! I know it may sound confusing but the general idea is to generate a SPWM signal for the H-bridge circuit, separate the positive from the negative half cycle. Along with that, I need another square pulse for additional purposes.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 11 years ago in reply to Former Member

    You're going to have to unpick the programme yourself to really understand it. Have you looked up DDS synthesiser yet (there's a lot on the web some of the stuff on Analog Devices' website is helpful).

    I doubt very much that the Arduino can generate complementary PWM outputs - you would need a much more modern micro with better timers - are you stuck with the Arduino  or could you use an ARM Cortex (the ST parts (and others)) have much more sophisticated timers with complementary outputs, dead time control, emergency stop etc.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago in reply to michaelkellett

    I was just reading about this capability with the TivaC Connected Launch pad last night, it has very sophisticated timers and has all the above features and quadrature Encoder input for speed and direction sensing as well. A very powerful chip and quite an extensive support library

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 10 years ago

    image

    Hi bro,

    nw i wna to make an inverter , generate spwm by aurdino

     

    check this site

     

    Lab3 - Laboratory for Experimental Computer Science

     

    pwm out put frm aurino fed into low pass filter ,

    in order to make invert pulses

    use comparator.

    output of filter fed into comparator (lm339)

    signal fed into  +ve terminal of 1st cmparator

    and -ve of 2nd comparator.

    the other terminal are connected to the potential dividor ,itz rail voltage is 3.3 v frm aurdino.

    nw u got 2 pulses

    in order to get dample with orginal pulses.

    use AND GATE logic

    OUTPUT frm 1st compartor is fed into 1st input of AND GATE ,other input is orginal spwm pulse frm aurdino..

     

    if u did nt get AND GATE use 2 NAND GATE for each pulse

     

    inw u got 2 pulses, if u wan to isolate use optocoupler, then fed into driver (ir2110) ic

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • clem57
    0 clem57 over 10 years ago in reply to Former Member

    I believe he was looking for a software solution if he is still looking from last year July.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube