If you have a modern function generator on your bench it is quite likely to contain a direct-digital synthesis circuit that creates arbitrary waveforms using a microprocessor controlled DAC. If you have a cheap function generator it’s likely to contain a one-chip solution that generates approximations to sine and triangle waveforms through modifying a square wave with a set of filters.
These methods both produce adequate waveforms for most of your function generator needs, but they are both far from perfect for the purist. Both methods introduce some distortion, and to address this [michal777] has produced a generator that takes the process back to basics with all stages implemented using building block ICs and transistors. The circuit follows the same square-wave-modifying path as the cheaper integrated devices, but with significant attention paid to the design to ensure that it does as good a job as possible. It also makes for a fascinating dive into function generator design.
The generator hardware has been neatly fitted onto a PCB with a riser for a set of front panel controls. He shares a few pictures of previous designs. We particularly like one that appears to have been fitted into a redundant cooking pot.
It’s probably not much of a stretch to say that many of us have taken on a project or two that were little more than thinly veiled excuses to add a new tool or piece of gear to our arsenal. There’s something to be said for a bench full of button-festooned test equipment blinking away, it’s like bling for nerds. But just like getting your name written out in diamonds, it can get expensive quick.
For those worrying that [Faransky] is relying on the PWM functionality of the Arduino Nano to generate waveforms, have no fear. At the heart of the device is a AD9833 waveform generator; with the Arduino, rotary encoder, and 16×2 LCD providing an interface to control it over SPI.
Unfortunately, the AD9833 doesn’t have a way to control amplitude, something which is pretty important in a function generator. So [Faransky] uses a X9C104P 100KOhm 8-bit digital potentiometer as a voltage divider on the chip’s output.
To wrap up the build, he added a 2000mAh 3.7V Li-Ion battery and TP4056 charger, with a DC-DC boost converter to get 5V for the Arduino. Though if you wanted to create a benchtop version of this device, you could delete those components in favor of a 5V AC/DC adapter.
I don’t have a signal generator, or more specifically I don’t have a low frequency signal generator or a function generator. Recently this fact collided with my innocent pleasure in buying cheap stuff of sometimes questionable quality. A quick search of your favourite e-commerce site and vendor of voice-controlled internet appliances turned up an FG-100 low frequency 1Hz to 500kHz DDS function generator for only £15 ($21), what was not to like? I was sold, so placed my order and eagerly awaited the instrument’s arrival.
The missing function generator is a gap in the array of electronic test instruments on my bench, and it’s one that maybe isn’t as common a device as it once might have been. My RF needs are served by a venerable Advance signal generator from the 1960s, a lucky find years ago in the back room of Stewart of Reading, but at the bottom end of the spectrum my capabilities are meagre. So why do I need another bench tool?
It’s worth explaining what these devices are, and what their capabilities should be. In simple terms they create a variety of waveforms at a frequency and amplitude defined by their user. In general something described as a signal generator will only produce one waveform such as a sine or a square wave, while a function generator will produce a variety such as sine, square, and sawtooth waves. More accomplished function generators will also allow the production of arbitrary waveforms defined by the user. It is important that these instruments have some level of calibration both in terms of their frequency and the amplitude of their output. It is normal for the output to range from a small fraction of a volt to several volts. How would the FG-100 meet these requirements? Onward to my review of this curiously inexpensive offering.
For those of us who like to wrangle electrons from time to time, there are some exceptional deals out there for low (or at least lower) cost imported test equipment. If you’re willing to part with a few hundred dollars US, you can get some serious hardware that a decade ago would have been effectively outside the reach of the hobbyist. Right now you can order a four channel oscilloscope for less than what a new Xbox costs; but which one you’ll rack up more hours staring at slack-jawed is up to you.
Of course, these “cheap” pieces of equipment aren’t always perfect. [Paul Lutus] was pretty happy with his relatively affordable Siglent SDG 1025 Arbitrary Function Generator, but found its accuracy to be a bit lacking. Fortunately, the function generator accepts an external clock which can be used to increase its accuracy, so he decided to build one.
[Paul] starts off by going over the different options he considered for this project, essentially boiling down to whether or not he wanted to jump through the extra hoops required for an oven-controlled crystal oscillator (OCXO). But the decision was effectively made for him when his first attempt at using a more simplistic temperature controlled oscillator failed due to an unfortunate misjudgment in terms of package size.
In the end, he decided to spring for the OCXO, and was able to use the USB port on the front panel of the SDG 1025 to provide the power necessary for the crystal to warm up and remain at operating temperature. After he got the oscillator powered, he just needed to put it in a suitable metal enclosure (to cut down external interference) and calibrate it. [Paul] cleverly used the NIST WWV broadcast and his ears to find when his frequency standard overlapped that of the source, therefore verifying it was at 10 MHz.
It’s easy to have a soft spot for “mini” yet perfectly functional versions of electronic workbench tools, like [David Johnson-Davies]’s Tiny Function Generator which uses an ATtiny85 to generate different waveforms at up to 5 kHz. It’s complete with a small OLED display to show the waveform and frequency selected. One of the reasons projects like this are great is not only because they tend to show off some software, but because they are great examples of the kind of fantastic possibilities that are open to anyone who wants to develop an idea. For example, it wasn’t all that long ago that OLEDs were exotic beasts. Today, they’re available off the shelf with simple interfaces and sample code.
The Tiny Function Generator uses a method called DDS (Direct Digital Synthesis) on an ATtiny85 microcontroller, which [David] wrote up in an earlier post of his about waveform generation on an ATtiny85. With a few extra components like a rotary encoder and OLED display, the Tiny Function Generator fits on a small breadboard. He goes into detail regarding the waveform generation as well as making big text on the small OLED and reading the rotary encoder reliably. His schematic and source code are both available from his site.
Small but functional microcontroller-based electronic equipment are nifty projects, and other examples include the xprotolab and the AVR-based Transistor Tester (which as a project has evolved into a general purpose part identifier.)
The PicBerry is a student final project by [Advitya], [Jeff], and [Danna] that takes a hybrid approach to creating a portable (and affordable) combination digital oscilloscope and function generator. It’s based on the Raspberry Pi, features an intuitive Python GUI, and can generate and measure simultaneously.
But wait! The Raspberry Pi is a capable little Linux machine, but meeting real-time deadlines isn’t its strong suit. That’s where the hybrid approach comes in. The Pi takes care of the user interface and other goodies, and a PIC32 over SPI is used for 1 MHz sampling and running a DAC at 500 kHz. The idea of combining them into PicBerry is to get the best of both worlds, with the Pi and PIC32 each doing what they are best at. The readings are sent in batches from the PIC32 to the Pi, where the plot is updated every 30 ms so that user does not perceive any visible lag.
The project documentation notes that improvements can be made, the speeds are a far cry from regular bench equipment, and the software lacks some typical features such as triggering, but overall not bad at all for under $50 of parts. In fact, there are hardly any components at all beyond the Raspberry Pi, the PIC32, and a MCP4822 digital-to-analog converter. A short demo video is embedded below.
If you are interested in electronics or engineering, you’ll have noticed a host of useful-sounding apps to help you in your design and build work. There are calculators, design aids, and somewhat intriguingly, apps that claim to offer an entire instrument on your phone. A few of them are produced to support external third-party USB instrument peripherals, but most of them claim to offer the functionality using just the hardware within the phone. Why buy an expensive oscilloscope, spectrum analyzer, or signal generator, when you can simply download one for free?
Those who celebrate Christmas somewhere with a British tradition are familiar with Christmas crackers and the oft-disappointing novelties they contain. Non-Brits are no doubt lost at this point… the crackers in question are a cardboard tube wrapped in shiny paper drawn tight over each end of it. The idea is that two people pull on the ends of the paper, and when it comes apart out drops a toy or novelty. It’s something like the prize in a Cracker Jack Box.
Engineering-oriented apps follow this cycle of hope and disappointment. But there are occasional exceptions. Let’s tour some of the good and the bad together, shall we?