The AD9833 Precision Waveform Generator FeatherWing is an Adafruit Feather-compatible module. The Waveform Generator produces an op-amp buffered sine, triangle, or square wave output with a practical frequency range of 0.5Hz to 100KHz with 0.1Hz resolution.
- Frequency accuracy and stability is determined by the on-board 25MHz +/- 100ppm crystal oscillator (Abracon ASV-25.000MHZ-E-T).
- Waveform Generator control is via the Feather SPI bus; chip select is provided by the D6 GPIO pin.
- Output signal peak-to-peak amplitude is adjustable with a maximum unipolar output of slightly less than 3.3 volts.
- Output can optionally be connected to the A2 analog input pin via an on-board jumper for real-time output signal monitoring.
- The wing derives its power from the host Feather's 3.3V power.
The AD9833 Precision Waveform Generator FeatherWing was tested with a Feather M4 Express using CircuitPython version 4.1.0 rc-1. Example sweep generator code is provided in the repository (sweep example video: https://youtu.be/O1vMfLoCWzg).
OSH Park project: https://oshpark.com/shared_projects/al6aPN0u
Refer to the Analog Devices' AD9833 Waveform Generator data sheet for device control protocol details.
- Generate useful waveforms in the audio frequency range
a. Highly accurate and stable absolute frequency: ±0.5Hz, 1000ppm
b. Moderately accurate waveform shape: 8-bit minimum
c. Fixed 3.0 volt peak-to-peak output, centered at 1.5 volts - Implement with CircuitPython code
- Increase SPI communications knowledge
- Improve SMD soldering skills
- Improve conceptual knowledge
a. SPI communications
b. Swept frequency control
c. Digital signal generation
d. CircuitPython device drivers
e. ADSR envelope modulation (optional) - Fabricate physical equipment
a. Workbench fixed and swept signal generator
b. MIDI and CV controlled LFO and audio frequency Eurorack oscillator module
- Custom FeatherWing PCB, M4 Express pinout
- FeatherWing Implementation Chart
- CircuitPython device driver
- CircuitPython examples and test code
- KiCAD schematic and board layout with Gerber code
- OSH Park public shared project page
- GitHub public repository page
- Project description and report
- Workbench signal generator
- Eurorack module
- Solder paste stencil was essential for successful SOT-23 and MSOP-10 component soldering
- 10-bit waveform accuracy will be sufficient for most anticipated uses
- Waveform output amplitude was very stable from 0 to 250kHz
- Output buffer op-amp gain-bandwidth product limit contributes significantly to high frequency roll-off but also smooths the digital feedthrough components of the waveform
- The low peak of the waveform only reaches +150mV not 0V as anticipated
- Waveform generator DAC output filtering capacitance was listed incorrectly in the datasheet example; value used for manufacturer testing was correct
- Separate analog ground on the PCB helped to reduce analog output digital noise
- ADSR envelope generation will require additional circuitry (see https://github.com/CedarGroveStudios/AD9833_ADSR_FeatherWing for the full discussion of tests)
- Output frequency change throughput of the CircuitPython example code (using the cedargrove_AD9833 library) is approximately 450usec, allowing for frequency sweep steps and modulation rates of > 2k changes(steps) per sec
- CircuitPython driver code was simpler to create than anticipated
a. CircuitPython SPI communications techniques are well-documented
b. Command register protocol was thoroughly explained in the device datasheet
c. Non-typical clock polarity was the only issue to overcome
- Finish the ADSR envelope generation tests and incorporate additional components in the v02 PCB design
- Replace the existing op-amp with higher gain-bandwidth version
- Consider a FeatherWing-sized dual-output version
- Incorporate the knowledge and experience gained in this project with the design of an Arbitrary Waveform Generator FeatherWing