Go Down

Topic: off-chip sine wave generation (Read 2977 times) previous topic - next topic


Hi all-

I'm looking for an IC to generate a sine wave, ideally with an SPI control so that it could interface with the Arduino easily. For example, the Arduino could send a command via SPI to tell the chip to produce a 1000Hz frequency and then the IC would just run on its own until it got another command.

I found this with a bit of Googling around, it looks perfect other than the fact that it was discontinued in 2000 and you can't buy one anymore.

Any suggestions? Thanks much.


A bit more digging around revealed the AD9833 which may work assuming I can find an easy way to get a SOIC format chip into a breadboard-able format.


Microchip has some DACs that may work for you, and they're available in DIP and SOIC.

The discontinued PCD3311 and 3312 would work, if you can find any.



If you only need frequencies above 1KHz take a look at the Linear Tech

For getting this on a breadboard just glue the chip upside down to a piece of vectorboard. Solder #30 wirewrap wire between the IC pins and vector board pins.

(* jcl *)


assuming I can find an easy way to get a SOIC format chip into a breadboard-able format.

Try this:-



If you want to set the frequency and then let the chip generate the signal, a DAC won't help.  You could make a clock circuit with a counter chip, and then synthesise a sine wave.  One way is to use "Walsh Functions" (there's a circuit in th Art of Electronics, by Horowitz and Hill):


Basically, you generate some square waves, and then combine them with different weightings to make a sine wave.  It's a bit like Fourier synthesis, except with square waves.


Ooops, yeah, a DAC would need constant attention to generate a sine wave.  Sorry, my mistake for not reading the original post closely enough.



Here's the best I was able to do with a DAC:


Note: that's doing direct digital synthesis into the DAC with a function that will synthesize an arbitrary wave.

Above is a pregenerated wave being played from an SD card


Thanks for the responses. As some of you guessed, I'm trying to avoid a DAC type solution because I want to launch a sine wave into something and use the Arduino's processing power analyzing the returned signal in real time.

I think that with a converter board like the one Grumpy_Mike posted, or one from epboard I should be able to use the 9833 chip for a pretty neat solution. The 9833 takes a command via SPI that sets the frequency and a clock signal and then proceeds to generate sine waves on its own until you tell it to do otherwise. The ATmega48 has an SPI port and there is supposed to be a way to replicate its internal clock on one of the digital I/O pins so it seems like a good match.

I'll let you know if it works!

Go Up