RTFM: ADCs And DACs

It’s tough to find a project these days that doesn’t use an analog-to-digital converter (ADC) or digital-to-analog converter (DAC) for something. Whether these converters come as built-in peripherals on a microcontroller, or as separate devices connected over SPI, I2C, or parallel buses, all these converters share some common attributes, and knowing how to read the specs on them can save you a lot of headaches when it comes to getting things working properly.

There are some key things to know about these devices, and the first time you try to navigate a datasheet on one, you may find yourself a bit confused. Let’s take a deep dive into the static (DC) properties of these converters — the AC performance is complex enough to warrant its own follow-up article.

Continue reading “RTFM: ADCs And DACs”

The Cutest Oscilloscope Ever Made

If you thought your handheld digital oscilloscope was the most transportable of your signal analyzing tools, then you’re in for a surprise. This oscilloscope made by [Mark Omo] measures only one square inch, with the majority of the space taken up by the OLED screen.

It folds out into an easier instrument to hold, and admittedly does require external inputs, so it’s not exactly a standalone tool. The oscilloscope runs on a PIC32MZ EF processor, achieving 20Msps and 1MHz of bandwidth. The former interleaves the processor’s internal ADCs in order to achieve its speed.

For the analog front-end the signals first enter a 1M ohm terminator that divide the signals by 10x in order to measure them outside the rails. They then get passed through a pair of diodes connected to the rails, clamping the voltage to prevent damage. The divider centers the incoming AC signal around 1.65V, halfway between AGND and +3.3V. As a further safety feature, a larger 909k Ohm resistor sits between the signals and the diodes in order to prevent a large current from passing through the diode in the event of a large voltage entering the system.

The next component is a variable gain stage, providing either 10x, 5x, or 1x gain corresponding to 1x, 0.5x, and 0.1x system gains. For the subsystem, a TLV3541 op-amp and ADG633 tripe SPDT analog switch are used to provide a power bandwidth around the system response due to driving concerns. Notably, the resistance of the switch is non-negligible, potentially varying with voltage. Luckily, the screen used in the oscilloscope needs 12V, so supplying 12V to the mux results in a lower voltage and thus a flatter response.

The ADC module, PIC32MZ1024EFH064, is a 12-bit successive approximation ADC. One advantage of his particular ADC is that extra bits of resolution only take constant time, so speed and accuracy can be traded off. The conversion starts with a sample and hold sequence, using stored voltage on the capacitor to calculate the voltage.

Several ADCs are used in parallel to sample at the same time, resulting in the interleaving improving the sample rate. Since there are 120 Megabits per second of data coming from the ADC module, the Direct Memory Access (DMA) peripheral on the PIC32MZ allows for the writing of the data directly onto the memory of the microcontroller without involving the processor.

The firmware is currently available on GitHub and the schematics are published on the project page.

Continue reading “The Cutest Oscilloscope Ever Made”

A Hard Rocking Arduino Visualization Shield

Over the summer [ElectroSmash] put the finishing touches on the Arduino Audio Meter, a shield for the Arduino Uno that visualizes various aspects of an incoming audio signal on a set of four 8×8 LED dot matrices. Obsentisibly it’s for use on a guitar pedalboard, but thanks to the incredible documentation and collection of example code provided by the team, the project promises to be an excellent platform for all sorts of audio experimentation.

Incoming audio is amplified with an MCP6002 and fed into the Uno’s Analog to Digital Converter, where it’s processed via whatever Sketch the user has uploaded. User input is provided by a digital encoder with push-button. A set of four MAX7219 chips control the entire 256-pixel matrix with just three pins on the Arduino. The resolution of the display allows the Arduino Audio Meter to show more than just a simple VU meter, it can even do text and basic graphics.

[ElectroSmash] provides various Sketches for use with the Arduino Audio Meter that provide the expected repertoire of audio visualizations, but they also provide a number of interesting Sketches to expand the capabilities of the device in unexpected ways. Some of them could be useful for a stage musician, such a tool to tune your guitar, whereas others are fun uses of the hardware such as a game of “Snake”.

With the entire project released as open source, users are free to run wild with the Arduino Audio Meter. Writing your own custom software is an obvious first step to making the project your own, but adding additional hardware features and functions certainly aren’t out of the question either.

Our very own [Lewin Day] once walked us through the effort involved in building boutique guitar pedals, and while the Audio Audio Meter’s capabilities are somewhat limited as it doesn’t have the ability to change the audio going through it, we’re still interested in seeing what the community will come up with once they have an easy way to bring their ideas to life.

Continue reading “A Hard Rocking Arduino Visualization Shield”

Your Arduino SAMD21 ADC Is Lying To You

One of the great things about the Arduino environment is that it covers a wide variety of hardware with a common interface. Importantly, this isn’t just about language, but also about abstracting away the gory details of the underlying silicon. The problem is, of course, that someone has to decode often cryptic datasheets to write that interface layer in the first place. In a recent blog post on omzlo.com, [Alain] explains how they found a bug in the Arduino SAMD21 analogRead() code which causes the output to be offset by between 25 mV and 57 mV. For a 12-bit ADC operating with a reference of 3.3 V, this represents a whopping error of up to 70 least-significant-bits!

Excerpt from the SAMD wiring_analog.c file in the Arduino Core repo.

While developing a shield that interfaces to 24 V systems, the development team noticed that the ADC readings on a SAMD21-based board were off by a consistent 35 mV; expanding their tests to a number of different analog pins and SAMD21 boards, they saw offsets between 25 mV and 57 mV. It seems like this offset was a known issue; Arduino actually provides code to calibrate the ADC on SAMD boards, which will “fix” the problem with software gain and offset factors, although this can reduce the range of the ADC slightly. Still, having to correct for this level of error on a microcontroller ADC in 2019 — or even 2015 when the code was written — seems really wrong.

After writing their own ADC read routine that produced errors of only between 1 mV and 5 mV (1 to 6 LSB), the team turned their attention to the Arduino code. That code disables the ADC between measurements, and when it is re-enabled for each measurement, the first result needs to be discarded. It turns out that the Arduino code doesn’t wait for the first, garbage, result to finish before starting the next one. That is enough to cause the observed offset issue.

It seems odd to us that such a bug would go unnoticed for so long, but we’ve all seen stranger things happen. There are instructions on the blog page on how to quickly test this bug. We didn’t have a SAMD21-based Arduino available for testing before press time, but if you’ve got one handy and can replicate these experiments to verify the results, definitely let us know in the comments section below.

If you don’t have an Arduino board with a SAMD21 uC, you can find out more about them here.

Sound Card ADCs For Electrocardiograms

Every few years, or so we’re told, [Scott] revisits the idea of building an electrocardiogram machine. This is just a small box with three electrodes. Attach them to your chest, and you get a neat readout of your heartbeat. This is a project that has been done to death, but [Scott]’s most recent implementation is fantastic. It’s cheap, relying on the almost absurd capability for analog to digital conversion found in every sound card, and the software is great. It’s the fit and finish that makes this project shine.

The hardware for this build is simply an AD8232, a chip designed to be the front end of any electrocardiogram. This is then simply connected to the microphone port of a sound card through a 1/8″ cable. For the exceptionally clever, there’s a version based on an op-amp. It’s an extraordinarily simple build, but as with all simple builds the real trick is in the software. That’s where this project really shines, with custom software with graphics, and enough information being displayed to actually tell you something.

We’ve seen a number of sound card ADCs being used for electrocardiograms in the past, including some from the Before Times; it makes sense, sound cards are the cheapest way to get a lot of analog data very quickly. You can check out [Scott]’s demo video out below.

Continue reading “Sound Card ADCs For Electrocardiograms”

Rebuilding The First Vocal Encryption System

Back in the early days of radio, it was quickly apparent that the technology would revolutionize warfare, but only if some way could be found to prevent enemies from hearing what was said. During World War II, the Allies put a considerable amount of effort into securing vocal transmissions, resulting in a system called SIGSALY – 50 tons of gear developed by Bell Laboratories with the help of Alan Turing that successfully secured communications between the likes of Churchill and Roosevelt during the war.

Now, a small piece of the SIGSALY system lives again, in the form of a period-faithful reproduction of the vocal quantizer used in the system. It’s the work of [Jon D. Paul], who undertook the build to better understand how the SIGSALY system worked. [Jon] also wanted to honor the original builders, who developed a surprisingly sophisticated system given the technology of the day.

SIGSALY was seriously Top Secret in the day, and most of the documentation was destroyed when the system was decommissioned. Working from scant information, [Jon] was able to recreate the quantizer from period parts, including five vintage VT-109/2051 thyratrons scrounged from eBay. The vacuum tubes are similar in operation to silicon-controlled rectifiers (SCRs) and form the core of the ADC, along with a resistor divider ladder network. Almost every component is period correct, and everything is housed in a nice acrylic case. It’s a beautiful piece of work and a great homage to a nearly forgotten piece of cryptographic history.

Interestingly, Bell Labs had a bit of a head start on the technology that went into SIGSALY, by virtue of their work on the first voice synthesizer in the 1930s.

Continue reading “Rebuilding The First Vocal Encryption System”

Brushless Motor Thrust Stand Provides Useful Data

When designing model aircraft of any shape or size, it’s useful to know the performance you can expect from the components chosen. For motors and propellers, this can be difficult. It’s always best to test them in combination. However, with the numbers of propeller and motor combinations possible, such data can be tough to come by. [Nikus] decided it would be easier to just do the testing in-house, and built a rig to do so.

The key component in this build is the strain gauge, which comes already laced up with an Arduino-compatible analog-digital converter module. Sourced for under $10 from Banggood, we can’t help but think that we’ve got it easy in 2018. A sturdy frame secures motor and propeller combination to the strain gauge assembly. An ATMEGA328 handles sending commands to the motor controller, reading the strain gauge results, and spitting out data to the LCD.

It’s a cheap and effective build that solves a tricky problem and would be a useful addition to the workshop for any serious modeler. We’ve seen other approaches in this area too, for those eager to graph their motor performance data. Video after the break.

[Thanks to Baldpower for the tip!]

Continue reading “Brushless Motor Thrust Stand Provides Useful Data”