Audio Playback Toy For DSP Adventures

The declining costs of single-board computers has made serious computing power available for even the most trivial of tasks. It’s easy enough to slap a Raspberry Pi onto almost anything for nearly the same cost as a powerful 32-bit microcontroller platform, but this takes some of the fun out of projects for a few of us. Looking to get into the weeds can be a challenge as well, as [Michal Zalewski] demonstrates in this audio playback device he built from a simple 8-bit microcontroller.

The small toy takes audio input from a microphone through an op-amp and feeds this signal to an ADC within the AVR128DA28 microcontroller. The data is then stored on a separate memory chip ready to be played back through another op-amp paired with a speaker. This is where being familiar with the inner workings of the microcontroller comes in handy. By manipulating the interrupt routines in specific ways, the audio stored in memory can be played back at various speeds.

[Michal] intended this build to be a toy for one of his younger relatives, and for the price of a few ICs and buttons it does a pretty good job of turning a regular voice into a chipmunk voice like some commercial children’s toys some of us might remember. If the design aesthetics of this gadget look familiar, you may be thinking of his minimalist gaming device which we recently featured.

A Straightforward Old-Fashioned DAC

With modern microcontrollers, the process of interfacing with the analogue world is easy. Simply enable the on-board DAC or ADC, and talk to the world. If you’ve ever done this with a slightly older microprocessor, you might have encountered the DAC and ADC as chips in their own right, but how about the earliest generation of microprocessors? In those days, if an analogue component was needed, the circuit which would later be integrated on chip would have to be made from scratch. So it is that [Florian Wilhelm Dirnberger] has built a very old-style 6-bit DAC, using a circuit that would have been familiar back in the early 1970s.

At its heart are a pair of 4007 triple CMOS inverters, which form the six bits driving a resistor ladder DAC. This is simply a chair of R… 2R resistors, relying on Ohm’s law for its operation. Each successive bit contributes twice the current to the output of its predecessor, and the 4007 simply provides a buffered supply for the bits.

It’s the simplest of DACs, if not the most capable. Back in the day a typical ADC might also use this circuit, feeding a comparator alongside the input voltage. The microprocessor would count through the digital values until the comparator output bit flipped, at which point it would take the counter value as the analogue measure. You may never need to build one when your microcontroller has one built in, but it’s useful to know how simple DACs and ADCs work.

If the subject interests you, we’ve had a look at DACs including resistor ladders used in audio.

A Pi Pico Oscilloscope

At the budget end of the oscilloscope range lie the so-called pocket ‘scopes. About the size of a deck of cards, they combine a microcontroller and an LCD screen to make an instrument with a bandwidth in the tens of kilohertz and a not-too-sparkling performance. They’re something of a toy, but then again, if all that’s needed is a simple ‘scope for audio frequencies, they make a passable choice in a small package. Now [jgpeiro] has made one which is light years ahead of the toy kits, using a Raspberry Pi Pico, a 100 MHz ADC, and an effort to design a better input circuit.

At its simplest this could be a straightforward op-amp and ADC circuit feeding the Pico, but instead it has multiple stages carefully designed to offer the full bandwidth, and with gain, offset, and trigger settings being set by a series of DAC chips under software control. This and the decent bandwidth make this a much more viable oscilloscope, and one we’d like to see further developed.

By comparison, we took a look at the best of the competition a few years ago.

Bare-Metal STM32: Adding An Analog Touch With ADCs

An Analogue to Digital Converter (ADC) is at its core a straight-forward device: by measuring an analog voltage within a set range and converting the measured level to a digital value we can use this measurement value in our code. Through the use of embedded ADCs in microcontrollers we can address many essential use cases, ranging from measuring the setting on a potentiometer, to reading an analog output line on sensors, including the MCU’s internal temperature and voltage sensors.

The ADCs found in STM32 MCUs have a resolution between 12 to 16 bits, with the former being the most common type. An ADC can be configured to reduce this resolution, set a specific sampling speed, and set up a multi-mode configuration depending on the exact ADC peripheral. STM32 MCUs feature at least a single ADC peripheral, while some have multiple. In this article we will take a look at how to configure and use the basic features of the ADCs in STM32 MCUs, specifically the ADCs found in F0 and the ADC5_V1_1 type as found in most F3-family MCUs.

Continue reading “Bare-Metal STM32: Adding An Analog Touch With ADCs”

Retrotechtacular: The Forgotten Vacuum Tube A/D Converters Of 1965

In any era, the story of electronics has very much been about figuring out how to make something happen with what’s available at the time. And as is often the case, the most interesting developments come from occasions when needs exceed what’s available. That’s when real innovation takes place, even if circumstances conspire to keep the innovation from ever taking hold in the marketplace.

This gem of a video from the Antique Wireless Association has a perfect example of this: the long-lost analog-to-digital converter vacuum tube. Like almost every mid-20th-century innovation in electronics, this one traces its roots back to the Bell Laboratories, which was keenly interested in improving bandwidth on its massive network of copper lines and microwave links. As early as 1947, one Dr. Frank Gray, a physicist at Bell Labs, had been working on a vacuum tube that could directly convert an analog signal into a digital representation. His solution was a cathode ray tube similar to the CRT in an oscilloscope. A beam of electrons would shine down the length of the tube onto a shadow mask containing holes arranged in a “reflected binary code,” which would later be known as a Gray code. The analog signal to be digitized was applied to a pair of vertical deflector plates, which moved the beam into a position along the plate corresponding to the voltage. A pair of horizontal deflector plates would then scan the beam across the shadow mask; where electrons fell on a hole, they would pass through to an output plate to be registered as a bit to be set.

Continue reading “Retrotechtacular: The Forgotten Vacuum Tube A/D Converters Of 1965”

Processing Audio With The RP2040

The Raspberry Pi, although first intended as an inexpensive single-board computer for use in education, is now ubiquitous in electronics communities. Its low price as well as Linux platform and accessible GPIO make it useful in many places outside the classroom. But, if you want to abandon the ease-of-use in favor of an even lower price, the Raspberry Pi foundation makes that possible as well with the RP2040 chip, commonly found on the Pico. [Jason] shows us one way to make use of this powerful chip by putting one in an audio digital signal processing board.

While development boards are available for this chip, [Jason] has opted instead for a custom PCB which he designed himself and includes an integrated headphone amplifier and 3.5 mm audio jacks. To do the actual DSP work, the RP2040 chip uses three 12-bit ADC channels and 16 controllable PWM channels. The platform is also equipped with the TLV320AIC3254 codec from Texas Instruments. With all of this put together, he has a functioning open-source platform he calls the DS-Pi.

[Jason] has built this as a platform for guitar effects and as a customizable guitar amp modeler, but with a platform that is Arduino-compatible and fairly easy to program it could be put to use for anything involving other types of music or audio processing, like this specialized MIDI-compatible guitar effects platform which is built around the same processor.

Our Favorite Things: Binary Search

You might not think that it would be possible to have a favorite optimization algorithm, but I do. And if you’re well-versed in the mathematical art of hill climbing, you might be surprised that my choice doesn’t even involve taking any derivatives. That’s not to say that I don’t love Newton’s method, because I do, but it’s just not as widely applicable as the good old binary search. And this is definitely a tool you should have in your toolbox, too.

Those of you out there who slept through calculus class probably already have drooping eyelids, so I’ll give you a real-world binary search example. Suppose you’re cropping an image for publication on Hackaday. To find the best width for the particular image, you start off with a crop that’s too thin and one that’s too wide. Start with an initial guess that’s halfway between the edges. If this first guess is too wide, you split the difference again between the current guess and the thinnest width. Updated to this new guess, you split the differences again.

But let’s make this even more concrete: an image that’s 1200 pixels wide. It can’t get wider than 1200 or thinner than 0. So our first guess is 600. That’s too thin, so we guess 900 — halfway between 600 and the upper limit of 1200. That ends up too wide, so we next guess 750, halfway between 600 and 900. A couple more iterations get us to 675, then 638, and then finally 619. In this case, we got down to the pixel level pretty darn fast, and we’re done. In general, you can stop when you’re happy, or have reached any precision goal.

[Ed note: I messed up the math when writing this, which is silly. But also brought out the point that I usually round the 50% mark when doing the math in my head, and as long as you’re close, it’s good enough.]

What’s fantastic about binary search is how little it demands of you. Unlike fancier optimization methods, you don’t need any derivatives. Heck, you don’t even really need to evaluate the function any more precisely than “too little, too much”, and that’s really helpful for the kind of Goldilocks-y photograph cropping example above, but it’s also extremely useful in the digital world as well. Comparators make exactly these kinds of decisions in the analog voltage world, and you’ve probably noticed the word “binary” in binary search. But binary search isn’t just useful inside silicon. Continue reading “Our Favorite Things: Binary Search”