A Precision DDS FeatherWing for the Discerning Analog Maker

It’s fair to say that the maker community doesn’t see many analog / signal chain projects. Scanning through the various project tags on places like Hackster and other sites will give a clear idea of the difference in project count!

Maybe it’s because you don’t get the bling factor that you get with a blinky LED matrix, or maybe it’s (more likely) to do with integration of the signal path- most discrete measurements are digitized at the point of measurement, and the signal chain represented digitally, with data often being transferred around the system using SPI or I2C, in a stream of binary data.

Many analog signals are cyclical in nature. Think of the ubiquitous sine wave of the mains voltage supply; a 50/60Hz repetitive wave. You want a funky chiptune player? Well, you’re likely to be frequency modulating a square wave.

With that in mind, we can see the application of a NCO, or numerically controlled oscillator, which is a device designed to output a (usually) fixed amplitude, variable frequency signal. It’s a DAC, with some extra logic to facilitate simple, numerical adjustment of the output signal.

If you extend that functionality, you’d end up at what is commonly referred to as a DDS circuit, which is similar to a NCO, except with some more bells and whistles to allow adjustment of not only the time base of the signal (frequency), but also the phase and amplitude, and even type of wave (square, saw and sine are common outputs). Think of it as a programmable function/waveform generator, all within a single IC!

Parts like the AD9833 integrate all of this functionality into a tiny 10-lead MSOP, requiring only a reference clock to do their magic.

However, it can be tricky to master the PCB layout of such devices — analog is a cruel mistress. Board stackup, signal routing, and even assembly methods (flux residue, for example) can be a pitfall of many a well-intentioned analog design.

So it’s with great relief that we can get straight to the fun of experimenting with a nicely designed FeatherWing from @CedarGroveStudios, based around the AD9833 — the AD9833_FeatherWing.

The AD9833 FeatherWIng, rendered in the lovely OSHPark livery.

Incorporating the AD9833, a 25MHz (+/- 100ppm) reference crystal, and a TLV2461 op amp with adjustable gain (to boost the 0.65 V full-scale output of the AD9833), this FeatherWing lets you get straight to work.

So where would we use such a signal? We touched on why NCOs are useful, but what are some real world applications? Audio, communications, interrogating sensors are all very common, practical uses for NCOs!

The AD9833_FeatherWing development is also a solid example of how a project might be approached. The GitHub page is laid out with detailed write-ups of project aims, defined deliverables, and lessons learned in the design of the the v01 PCB, such as the slightly limited gain-bandwidth product of the TLV2461 op amp part, which has a limiting factor on the high-end frequency output of the AD9833. But again, it’s refreshing to see a project that is critical of its goals, and ideas on how to improve going forward!

PCB files (KiCad), code (including a CircuitPython driver!), and supporting documentation can all be found for perusal on the GitHub repo.

@CedarGroveStudios has a good range of projects on their GitHub from which to lean on when looking to implement similar techniques in your own work!

Go to Source
Author: Tom Fleet

By admin

I'm awesome! What else would I say about myself.