BPSK31 has become a very popular digital communication mode among amateur radio operators due in no small part to its efficiency and narrow bandwidth. You can easily demodulate BPSK31 signals with readily available DSP software, or even using an Arduino.
Never the less, I thought it would be fun to build an analog BPSK31 demodulator that would output digital bits via simple two wire bus, and hit upon the idea of doing this relatively easily using amplitude demodulation.
Amplitude demodulating phase modulated data??
I know, I know, a proper PSK demodulator would implement a costas loop or similar phase detection circuit. This approach is a hack for sure, and won’t work as well as a proper phase demodulator, but has the advantage of being easily constructed with a hand full of “jellybean” components that are probably already sitting in your parts bin.
Comparators are quite handy devices that are often used to detect when a certain voltage threshold has been crossed. They are basically like an open-loop operational amplifier, but unlike op amps, are specifically designed for driving their output to “rail to rail”.
The simplest comparator just compares an input voltage to a reference voltage, setting its output high when the input voltage exceeds the reference voltage, and setting its output low when the input voltage falls below the reference voltage:
A basic comparator circuit
Note that the only additional components are the pull up resistor on the comparator’s output (the LM393 uses open collector outputs), and the resistor divider network to set the reference voltage. This works as expected, with the comparator’s output switching between its high and low states whenever the input signal crosses the 2.5V mark:
Comparator output (blue) vs input (yellow)
(Note that the input signal here is actually exceeding the maximum negative input voltage for the LM393 when run from a single supply, which likely accounts for the distorted waveform on the input pin; so yeah, don’t do that!)
However, noisy or slow-moving input signals can easily cause false triggering, resulting in many rapid pulses at the comparator’s output:
Noisy inputs cause false triggering
When working with op amps, it’s generally a bad idea to drive the op amp output “rail to rail”. Why? Because it takes longer for the op amp output to recover from saturation and begin linearly tracking the input signal again. The actual recovery time of an op amp, and how badly this recovery time will affect your circuit, depends of course on the op amp and your circuit.
Let’s consider a simple full-wave rectifier circuit:
A simple full-wave rectifier
My main bench multimeter is an HP3466A that I found at a hamfest a couple years ago. Mind you it’s older than I am, but it looked to be in good functional order, and $30 seemed like a fair price for a 4.5 digit bench meter, so I picked it up.
After a while though, I noticed that its DC voltage readings seemed to be low when probing circuits containing larger resistances; anything around 100K ohms caused a noticeable discrepancy in the expected voltage reading, and it worsened with larger resistances.