The story behind this project

Every now and then I would find the need for a differential probe. I’d end up using a high voltage diff probe, which you've probably seen lurking around most electronics labs – the ones housed in a large rectangular box with a pair of heavy leads dangling out one end. While great for high voltage work, they were a hassle for general purpose measurements. Those giant leads are not a good match for probing small components. Their high attenuation levels resulted in noisy measurements at lower voltages.  I was always left wondering if I could trust higher frequency measurements, with the leads dangling between the probe and device under test and flopping onto the PCB.

That got me thinking . . .  is there a decent smaller probe out there to add to my lab? Could you use something like it too?  It turns out that the big name test equipment companies have some really nice diff probes, many exceeding 100MHz bandwidth. However, the prices start in the thousands, and often have a brand-specific interface.

So, I figured, it can’t be that hard to build one and started reading up on how they work. Armed with modest goals and a little knowledge, I went about designing a simple 10 MHz-ish probe.  It seemed very doable . . . but then I thought, 100MHz bandwidth would be nice, or maybe a little more. Things got harder, but maybe still doable. It would also be nice to get rid of the potentiometers and other annoying adjustments that you need to get good common mode rejection and DC offset and so on. Oh, and it would be nice to have an insulated enclosure. Now the design was getting tricky and I got bogged down. A little more scope creep later, this project was born!

HACKADAY project goals

Many months and iterations later led to what you see in the project photos. It suits my diff probe needs for now, so what next? I figured I would get the design out there, so you could build it if you’d like. Or if there’s enough interest, iron out some of its rough edges and make a product of it.  I’m happy to hear your feedback, so feel free to comment.

Specs & features at glance

Okay, so that’s all well and good, but what can this thing do? I did my best to balance cost and complexity and came up with the following specs and features.  So without further ado, here they are:

Specs:

Bandwidth, 3 dB
≥150 MHz
Attenuation
20:1
Differential signal range±20 V
Common mode range
±30 V
DC offset voltage
≤ ± 10 mV, referenced to input, after zeroing
CMRR, 60 Hz≥ 70 dB, referenced to input
CMRR, 10 MHz≥ 40 dB, referenced to input
Input Resistance, between inputs1.08 MΩ between inputs, 540 kΩ from each input to ground
Input Capacitance at 10 kHz≤ 3 pF between inputs, ≤ 6 pF from each input to ground, typical
DC Attenuation Accuracy≤ ± 5%
Pulse Rise Time (10% to 90%)≤ 2.4 ns
Gain Flatness, 0-30 MHz≤ ± 0.5 dB , typical
Input Damage Threshold100 V

Features:


LED scope channel indicator:  This helps you keep track of what scope channel the probe is connected to, especially if you're using more than one diff probe for a test.  PD150's LED color can be set to any standard scope channel color.  Use the "C" button to cycle through colors.

Diff probes - why and when to use them

Alright, with all the specs and features out there, we can dive into the interesting part - the probe design. But hold on, if you're new to diff probes, you may want to read below for a summary of what diff probes are and when you need one.

It helps to first think about how you use a regular passive probe.  Its probe tip is high impedance, which is great since it won't short or load down a circuit node (within reason).  But the second terminal that you need to connect - the ring or clip - is not so friendly.  It connects to the scope chassis, and in turn to the clips on all the other probes, along with earth ground through the scope's receptacle.  Thus it can load things down and short parts of your circuit.  So you can't go connecting those clips willy-nilly!  

Despite their limitations, passive probes are usually fine.  But sometimes you can't find a suitable spot for those ground clips.  Perhaps you need to probe the voltage across an inductor in a buck converter, or test a differential interface.  This is where diff probes shine.  Both of their inputs are high impedance. Thus you can probe away across various points in a circuit without worrying about shorting various points together.

If you're interested in further learning on the topic, w2aew has a very helpful video: #74: Basics of Differential Probes for Oscilloscopes and their applications: a tutorial

Design goals

Aspirationally, I wanted to meet the performance (voltage and bandwidth) and convenience of a standard passive probe, but in differential form.   This would meet most of my testing needs, and hopefully for you too.  Here's what I came up with as a rough set of design goals. 

These goals are fully met by the current prototype:

These goals were partially met by the current prototype:

These goals were not met:

Theory of operation

This section describes generally how the probe works.  I'll refer to the block diagram below.  It's a birds eye view, showing all the probe's subsystems, but without much circuit detail.

The signal path:

This section describes how an input signal makes its way from the probe's inputs to the output.

It all starts out with the probe's positive and negative inputs shown at the top left of the block diagram.  The voltages applied to each input are attenuated by a factor of 20 (or gain of 1/20) by two identical voltage dividers.  This keeps the active components downstream within their allowable input voltage ranges. You'll note there are also some adjustable components following the voltage dividers.  We'll ignore those for now.

Next, the attenuated signals are input to a difference amplifier - the core of the differential probe.  It subtracts the two signals.  Its output is thus equal to the voltage difference being probed, scaled down by 1/20.  Any so called common mode voltage appearing at both inputs is eliminated. This is what makes the probe differential.

Finally, the signal is buffered so it can drive the scope's 50 ohm input.  The buffered signal goes through a 50 ohm resistor before exiting through the output connector.  This 50 ohm resistor terminates the source end of the coaxial cable.  The  opposite end of the cable will be terminated in 50 ohms by the oscilloscope's 50 ohm input.  In this scheme, the coaxial cable is terminated at both ends in 50 ohms.  This both minimizes signal reflections and ensures that the probe's buffer sees a consistent impedance (of 100 ohms) at its output through all frequencies.  Both help maintain a flat frequency response. These two 50 ohms resistors form a voltage divider, halving the voltage.  The buffer's gain of two cancels out this loss.

DC offset adjustment:

When you apply zero volts across the probe's inputs you'd expect the same at the probe's output.  However, the signal path described previously doesn't do a great job of it.  The reason is that most broadband amplifiers necessary for the probe's bandwidth have poor offset voltage specs.  Also, any DC error will be multiplied 20x by the oscilloscope to match the probe's attenuation.   For instance, a small error of 5 mV in the signal path would appear as 100 mV on the scope's screen!  Thus we need a way to reduce the DC error.

The PD150 cancels the DC offsets by injecting an offset of opposite polarity into the signal path.  It's activated by pressing the "0" button on the probe with the inputs disconnected.  This button is shown under the user interface section of the block diagram.

The DC offset correction voltage is applied to the broadband difference amplifier.  Look closely and you'll see it has a third input.  It is labelled ref (short for reference) and shifts the DC level of its output.  This is coupled to the microcontroller's DAC so that the adjustment can be automated.

 The microcontroller will need to monitor the probe's output voltage to know what correction voltage is needed.  The tricky thing here is that it'll need to detect when the output crosses zero volts to within 500 uV to meet the spec.  The reason for the stringent value is the 20x multiplication factor described above.  A zero-drift amplifier, shown on the right side of the block diagram, helps out here.  It has excellent DC performance and a lot of gain.  That way the microcontroller does not need to detect tiny voltages that could be skewed by ADC quantization and its own offset errors.  The zero-drift amplifier's output feeds into the microcontroller's ADC.


High frequency compensation:

At low frequencies, the probe's attenuator uses precision resistors to divide the input signals by 20, and this works quite well.  At higher frequencies, the signals take a different path through a capacitive divider, for reasons we'll get into in the detailed circuit description.  While resistors are readily available at 0.1% tolerance, precision capacitors aren't really a thing - a tight capacitor tolerance might be 5-10%!  Plus, at the low values we're dealing with, various parasitic capacitances on the PCB and probe connector are very significant anyhow.  So we certainly can't rely on capacitor values alone to get an accurate attenuation. 

To remedy this, the probe uses a pair of tuning capacitors to adjust the capacitive dividers.  They are shown in the block diagram to the right of the voltage dividers and labelled HF Comp (short for high frequency compensation).  These capacitors can be adjusted to achieve a good 20:1 attenuation at both inputs.   

You adjust them similarly to how you compensate a passive probe, by applying a square wave and turning the compensation capacitor till you get a proper response.  The probe even provides a square wave output on its compensation and adjustment output (bottom left side of the block diagram).  This output uses a digital output on the microcontroller to generate a fast rise time square wave.


Low frequency common mode rejection ratio adjustment

It's nice having very high common mode rejection at lower frequencies.  For instance, you might want to measure a small signal that's sitting on top of higher amplitude 60 Hz line noise.  If the 60 Hz noise is common to both points being measured, the probe cancels it out, revealing the small signal you're looking for.  Meeting the 70 dB CMRR (common mode rejection ratio) in the specs requires the attenuation of the two voltage dividers to be exceptionally well matched to each other.  Even better that the 0.1% precision resistors used in the circuit can guarantee.

Given this issue, we'll need an adjustment to better match the attenuators.  Most probes use a manual trimmer potentiometer to do so.  You'd carefully adjust this potentiometer with the probe hooked up to a signal source.  I wanted to avoid it all costs because it is a very tedious thing to adjust.  Instead, PD150 uses a digital potentiometer (aka digipot) for the tuning.  It's shown just in front of the difference amplifier's input in the block diagram.  

To automate the adjustment, we'll need to apply a common mode test signal to the probe inputs.  The probe's microcontroller has us covered here!  It'll generate such a signal on the compensation and adjustment output using a digital output.  It needs to be connected to both probe inputs using a jumper cable with three pins.

The microcontroller will also need to monitor the output voltage while adjusting the potentiometer.  It'll have to tweak the setting to minimize the probe's output voltage.  The hard thing here is that the microcontroller must be able to see some exceedingly small output voltage changes to make a good adjustment.  Here it gets help from the zero-drift difference amplifier connected to the probe's output.  It boosts the probe's output signal and passes it along to the microcontroller's ADC.

All of this is activated through the probe's user interface switches at the bottom left of the block diagram.  Putting it all together, the first step is for the user to connect the compensation and adjustment output to both probe inputs with a three pin jumper cable, then press the appropriate button combination to run the adjustment routing.  The microcontroller takes over from there.  It will measure the output voltage while adjusting the potentiometer and find the optimal setting.  It stores the setting in nonvolatile memory.

Performance testing

I've needed to do a ton of testing to verify the probe's performance.  This section summarizes some of the test results that I've gathered thus far.  I've posted more details on testing in the project logs.

Differential voltage range

This plot shows PD150's response to a DC differential input voltage ranging from -60V to +60V. Note the linear response when operating within its ±20V specification.  This region is highlighted in green.

Frequency response

The following plot shows PD150’s typical frequency response in a 50 ohm system.  I was measured using a vector network analyzer with a 50 ohm resistor placed across the probe's input. 

Differential Pulse Response

PD150’s response to a differential pulse is shown below. For this test, a high speed differential pulse with an amplitude of approximately 2V peak to peak was applied to the probe input.