To be fair, it’s not like [Joseph] has any ideas either. He thought it would be an interesting project, and figures now that he has the technology, maybe some application will come to him. They say that if you’ve got a hammer everything looks like a nail, so maybe the next project he sends our way will be a sinusoidal fish feeder.
[Joseph] says doing the software side of things with Pure Data wasn’t a problem, but getting it out of the computer proved to be tricky. It turns out that your average computer sound card isn’t equipped to handle frequencies down into the millihertz range (big surprise), so they need to be coaxed out with some extra hardware. Using a simple circuit not unlike an AM demodulator, he’s able to extract the low-frequency signal from a 16 kHz carrier.
The first time I was in school for electrical engineering (long story), I had a professor who had never worked in the industry. I was in her class and the topic of the day was measuring AC waveforms. We got to see some sine waves centered on zero volts and were taught that the peak voltage was the magnitude of the voltage above zero. The peak to peak was the voltage from–surprise–the top peak to the bottom peak, which was double the peak voltage. Then there was root-mean-square (RMS) voltage. For those nice sine waves, you took the peak voltage and divided by the square root of two, 1.414 or so.
You know that kid in the front of the class? They were in your class, too. Always raising their hand with some question. That kid raised his hand and asked the simple question: why do we care about RMS voltage? I was stunned when I heard the professor answer, “I think it is because it is so easy to divide by the square root of two.”
In this installment of Scope Noob I’m working with Direct Digital Synthesis using a microcontroller. I was pleasantly surprised by some of the quirks which I discovered during this process. Most notably, I had a chance to look at errant triggers solved by using holdoff and a few timing peculiarities introduced by my use of the microcontroller. Here’s a video synopsis but I’ll cover everything in-depth after the break.
One of the acronyms you may hear thrown around is DDS which stands for Direct Digital Synthesis. DDS can be as simple as taking a digital value — a collection of ones and zeroes — and processing it through a Digital to Analog Converter (DAC) circuit. For example, if the digital source is the output of a counter that counts up to a maximum value and resets then the output of the DAC would be a ramp (analog signal) that increases in voltage until it resets back to its starting voltage.
This concept can be very useful for creating signals for use in a project or as a poor-man’s version of a signal or function generator. With this in mind I set out here to demonstrate some basic waveforms using programmable logic for flexibility, and a small collection of resistors to act as a cheap DAC. In the end I will also demonstrate an off-the-shelf and inexpensive DDS chip that can be used with any of the popular micro-controller boards available that support SPI serial communication.
All of the topics covered in the video are also discussed further after the break.
No one is sitting around their workbench trying to come up with the next great oscilloscope or multimeter, but function generators still remain one of the pieces of test equipment anyone – even someone with an Arduino starter pack – can build at home. Most of these function generators aren’t very good; you’re lucky if you can get a sine wave above the audio spectrum. [Bruce Land] had the idea to play around with DMA channels on a PIC32 and ended up with a function generator that uses zero CPU cycles. It’s perfect for a homebrew function generator build, or even a very cool audio synthesizer.
The main obstacles to generating a good sine wave at high frequencies are a high sample rate and an accurate DAC. For homebrew function generators, it’s usually the sample rate that’s terrible; it’s hard pushing bits out a port that fast. By using the DMA channel on a PIC32, [Bruce] can shove arbitrary waveforms out of the chip without using any CPU cycles. By writing a sine wave, or any other wave for that matter, to memory, the PIC32 will just spit them out and leave the CPU to do more important work.
[Bruce] was able to generate a great-looking sine wave up to 200 kHz, and the highest amplitude of the harmonics was about 40db below the fundamental up to 100 kHz. That’s a spectacular sine wave, and the perfect basis for a DIY function generator build.
I became aware of harmonics and the sound of different shaped waveforms early in my electronics career (mid 1970’s) as I was an avid fan of [Emerson Lake and Palmer], [Pink Floyd], [Yes], and the list goes on. I knew every note of [Karn Evil 9] and could hear the sweeping filters and the fundamental wave shapes underneath it.
I remember coming to the understanding that a square wave, which is a collection of fundamental and (odd) harmonics frequencies, could then be used to give an indication of frequency response. If the high frequencies were missing the sharp edges of the square wave would round off. The opposite was then true, if the low frequencies were missing the square wave couldn’t “hold” its value and the top plateau would start to sag.