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
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • 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
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum GPIO produce sine wave
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 9 replies
  • Answers 3 answers
  • Subscribers 671 subscribers
  • Views 4016 views
  • Users 0 members are here
  • sine
  • pwm
  • raspberry_pi
  • wave
  • pyhton
Related

GPIO produce sine wave

Former Member
Former Member over 11 years ago

Hi

I need the Pi to generate a pulsing sine wave signal. I managed to generate wave signal from the GPIO pin but only square wave with High-Low waveform. So I am wondering if the GPIO can generate the sine wave signal that I need?

Also I have been using the function GPIO.PWM(pin,frequency) i was using it to generate 20kHz signal but when I check the output on oscilloscope it was only 862 Hz is this the maximum frequency of the PWM function or is there something wrong with my pi.

 

I read somewhere the using python Rpi.GPIO library I can output up to around 40 kHz, and I was able to actually output 50 kHz from it but don't know why the it wouldn't output 20 kHz using the GPIO.PWM ().

Can anyone tell me why or suggest another method that I could use?

 

Thank you!

  • Sign in to reply
  • Cancel
  • michaelkellett
    0 michaelkellett over 11 years ago

    The Pi is very limited as a sine wave generator. What frequency of sinewave do you want to generate and what kind of pulsing. How much noise and distortion is acceptable. Depending on the answers it may be possible to generate the signal without extra hardware ot it may not.

     

    MK

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

    I need to generate pulsing 20 kHz signal. Is it possible?  I never thought about the noise and distortion .

    one solution that  I was thinking was to convert the square wave to sine wave outside of the pi with integrator, someone told me about this. Thanks for replying!

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

    You still haven't defined the signal well enough to make a good suggestion.

    How long are the pulses, what rise/fall time, must the pulse be synchronous with the carrier (the 20kHz) ?

     

    You can't turn a square wave into a sine wave with an integrator - you can with a low pass or bandpass filter but the modulation would need to be applied after the filter otherwise you will get very slow rise and fall times. This is going to be tricky with an RPi without extra hardware. You can buy very cheap little DDS synthesisers on ebay (like New AD9850 DDS Signal Generator Module 0-40MHz Test Equipment | eBay ) - this could generate the 20kHz OK, you could use a second one to generate the modulation signal.

     

    One way you could do it with a Pi is to add a DAC to an  I2S ouput and genrate suitable signals in software - this will need a  kernel driver which you may have to write yourself.

     

    If you could expalin what the signal is for and how much you want to spend I could be  abit more helpful.

     

    MK

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

    On a similar note (to the I2S suggestion), the raspberry pi has an audio output. If it can reach 20kHz I don't know. (chances are of course that it'll do 48kHz, meaning that you have only just over two samples per period, which is similar to the square wave. On the other hand, the analog filtering will probably make it look more sine-wave-ish than a gpio port you toggle at 20kHz.

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

    If you are able to generate square wave . If you use a capacitor in parallel , then you will get a sine wave because it will filter out all the high frequency components.

     

    Regards,

    Ali

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

    an RC-filter (Resistor in seriers, capacitor to ground) will fiter out the higher frequencies. The square wave will look more like a sine wave, provided you chose the R and C appropriately. But it won't be a perfect sine wave.

     

    We've asked the Thread-Starter to be more specific as to what he needs. The RC might give an  accurate enough sine wave. Or maybe not.....

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

    GPIO.PWM calls the wiringPi library, where the PWM functionality is done in software, i.e. implemented with threads, loops and timers, and therefore this has some limitations. It's really designed to run in the low 100's of Hz, for example setting the brightness of a light or controlling motor speed.  At high frequencies (over 10kHz) the timers are performed with a tight loop, which means the CPU will be at 100% utilization. I don't think you'll get much precision in this situation.

     

    For high frequencies, I think I would be tempted to use a dedicated chip, like the AD9833. This chip has a SPI interface, so should be pretty simple to use with Pi, as it exposes the SDA/SCL pins on the GPIO interface (pins 3,5). This would offload all the hard work from the Pi CPU.

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

    How exposing the I2C signals on the GPIO header helps with interfacing with an SPI chip, I don't understand.... :-)

     

    But the SPI signals are there too. They are on five pins from of the 20-26 group.

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

    what ever method you choose you need to realize that in order to get a decent output waveform with minimal external circuitry you will need to output to a DAC or PWM controller at between 5-10* the frequency you want as output so if your looking to output 20Khz. At a minimum and with assistance with output filters you should follow the Nyquist rate which would specify 2* but that wont give a very clean output.

     

    btw, a simple RC low pass filter will not give a sine wave it will be more like this

    image

    this may be good enough but far from Sine

     

    this is more like what you need

    image

     

    details can be found here http://www.wenzel.com/documents/waveform.html

    but beware this has a resonant frequency and will not work for a wide range of frequencies without varying the values.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject 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