Differential scope probe

Similar projects worth following
PD150 is a compact 150MHz differential scope probe for engineers and advanced hobbyists on a budget. It sports advanced features such as automated DC offset voltage zeroing and low frequency common mode rejection tuning. It will also feature thorough documentation in the spirit older “boat anchor” test equipment, detailing how it works in addition to typical usage notes and specs.

If you’re new to differential scope probes, you can think of them as a tool for probing a voltage across any two points within a circuit, much like how you would use a multimeter. This is useful when you need to measure across a part that is not grounded at either end. Whereas, with a regular probe, you have to connect one end to the clip/ring which shorts that node to the scope’s chassis ground.

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:


Bandwidth, 3 dB
≥150 MHz
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


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.

  • Flexible probe interface: The probe inputs are simply 0.1-inch spaced sockets.  Their close spacing is good for measuring higher frequency or sensitive signals.  You can solder a header to the circuit to connect to.  For less critical work, you can attach jumper wires.
  • USB Power: PD150 is powered through a USB-C connector.  It needs 5V at 300 mA, which can be provided by a small adapter or many USB ports.
  • Scope compatibility: PD150 has a BNC signal cable and 50 Ω output impedance.  Thus you can connect it directly to a scope with a 50 Ω input, so long as its rated for at least 2.5 Vrms.  For scopes with only a high impedance input, you can use a 50 Ω inline attenuator...
Read more »

Adobe Portable Document Format - 808.35 kB - 07/25/2023 at 01:14


  • Putting PD150 to use - characterizing a bridge amplifier

    Craig D09/02/2023 at 14:48 0 comments

    I've been meaning to show a practical application for PD150 and an opportunity just arose!  I'm experimenting with a miniature CRT screen.  It uses two deflection coils to steer its electron beam.  One coil deflects the beam horizontally and the other vertically.  Unfortunately, the CRT's circuitry is pretty specialized for sweeping the beam in a raster pattern, and I want to generate vector graphics.  For this I'll need custom drivers for the coils which can output on the order of 20V peak to peak at a frequency of at least 10kHz or so.

    What's all this have to do with diff probes?  Well, one nice way of generating a large voltage swing is using a bridge driver.  And with a bridge driver, neither of the load's terminals are grounded.   So you can't just stick a regular probe across the terminals.  If doing so, you would need two regular probes, to apply a math function, and to contend with non-ideal imbalances that can get pretty nasty at higher frequencies.  This is where the diff probe comes in use.  You can just connect it right across the load's terminals without worry and get good test results.

    The bridge driver that I've been exploring is a TDA7377.  It's an older chip intended for audio amplifier use.  It has two 30W bridge outputs, which is perfect since I have two deflection coils to drive.  I just bought this one, but it looks like it's been sitting on Mouser's shelves for a couple decades.  It's happy to be free!

    The TDA7377 is a through-hole part, albeit with a strange package that the manufacturer calls MULTIWATT.   With a little wrangling, it fits into a solderless breadboard.  I have it set up here with an input signal source and the PD150 probe at the output.  The input comes through the coaxial cable at the left.  The PD150 monitors the output of the bridge on the right side of the breadboard.   It's pretty easy to use with a breadboard like this.  Just use a two pin header.  Place one end in the breadboard.  The other end fits right into PD150's input sockets. 

    Unfortunately the TDA7377's datasheet is pretty sparse.  It doesn't even provide a bandwidth. Presumably its response is pretty flat to 20 kHz, being an audio product, but best test it to be sure.  Also, I'll eventually need to see how its output performs under the deflection coil inductive loads. 

    To get started I set up a simple test to measure frequency response with a 10 ohm resistive load.   A function generator provides the input.  The input path is kept at 50 ohms to ensure meaningful results at higher frequencies.  I used the PD150 diff probe to monitor the bipolar voltage across the load.  The scope captures the input and output voltages.  Here's a diagram of the setup.

    Here's the setup on the bench:

    We'd expect the amplifier to behave pretty ideally at a comfortable 1 kHz, and it does.  Here's the scope screen with channel 1 showing the input voltage, and channel two showing the bridge output voltage from the PD150.  The gain is about 25 dB, which is the lower end of the spec shown in the data sheet.

    The response is surprisingly flat to 100 kHz and beyond!  Here's the scope output at 100 kHz:

    But eventually the amplifier's gain tails off.  I found the 3 dB point to be about 535 kHz.  Pretty good!  I recorded data at a bunch of frequencies and used it to generate a frequency response curve:

    Well that's it for now!  It's a good start.  With TDA7377's bandwidth being quite high, it was nice having a true diff probe.  Had I instead used two regular probes and the scope's math function, I may have run into issues measuring into the 100s of kilohertz.  Here both probes, amplifiers, and compensation would have had to be well matched to each other.  I was also happy with how the...

    Read more »

  • AC common mode rejection testing

    Craig D08/04/2023 at 19:04 0 comments


    This log describes common mode rejection tests that I performed on the probe.  I introduce the test setup and a test fixture, describe the results, and future plans.

    For reference, the probe's specs claim a common mode rejection ratio (CMRR) of at least 40 dB at 10 MHz, and at least 70 dB at 60Hz.  We'll check these numbers against the test results.

    Review of common mode signals and common mode rejection

    Applying a common mode signal just means placing the same voltage on both of the diff probe's terminals.  Since a diff probe responds to the difference in voltage across its inputs, its output should be zero volts.  This is never quite true in the lab.  Some common mode voltage leaks through due to imbalances in the probe's attenuator and amplifier.  

    Common mode rejection ratio (CMRR) describes how well the probe is doing in this regard.  It's the ratio of the probe's differential mode gain to its common mode gain.  Thus a larger value is better.  It's often expressed in decibels when dealing with diff probe specs.  

    Test fixture

    We'll first need a way to apply the same AC voltage across both probe inputs.  This is the so called common mode voltage input.  In addition It's good to connect the signal source's ground to the probe/scope ground.  This ensures that the DC common mode voltage does not drift or have additional AC noise during the test.  

    I made a simple test fixture for this purpose.  It's shown connected to the probe.  The fixture is made from a BNC connector, a two pin header, and a jumper wire.  The BNC connector's center pin is soldered to both of the header pins.  I also soldered a small jumper wire to the ground ring on the BNC connector.  This jumper provides the connection to the probe/scope ground.  The jumper connects to the probe's ground input, and the non soldered ends of the header to the probe input sockets.

     The fixture is shown connected into the middle of a BNC tee adapter.  This provides an easy way to connect a signal generator to the fixture, and also to connect a scope for viewing the input voltage.

    Connecting it all up

    With the fixture ready, we can connect the signal source and a scope to view the results.  In the photo below, the function generator connects to the bottom of the BNC tee.  The top of the tee connects to  scope channel 1.  Finally, the probe's output connects to scope channel 2. 

    Measuring CMRR at 10MHz

    To test at 10MHz, I set both scope channels to 50 ohm input impedance.  I also made sure to set channel 2's attenuation to 20X to account for the probe's attenuation in the measurements.  I then set the function generator up to output a 10MHz 2 V peak-to-peak sine wave.  To maximize effective vertical resolution and measurement accuracy, I set the scope to average 1024 measurements.

    The resulting scope traces are shown below.  You can see the 2 V peak-to-peak input in yellow, and the probe's much smaller output in green below it.   From the peak-to-peak voltage measurements at the bottom of the screen capture, we can compute common mode gain.  It is 2.0096 V / 13.2365 mV, or  1/151.8.  Since differential mode gain is almost exactly 1.0 referenced to the probe input, we can calculate CMRR as 1/(1/151.8) =  151.8.  In decibels, this works out to 43.6 dB, which is within the probe's spec of 40dB or greater.

    Measuring CMRR at 60 Hz

    I made a couple small changes to the setup for testing CMRR at 60 Hz.  At this frequency, we expect a much greater CMRR (of at least 3100:1), causing a correspondingly small signal at the probe's output.  In fact the probe pushes the limits of the scope's vertical resolution.  

    To mitigate this as much as possible, I set my signal generator's output to its maximum output voltage of...

    Read more »

  • Differential and common mode range at DC

    Craig D07/21/2023 at 20:45 0 comments

    This log explores recent differential and common mode range testing.  I put the probe to its limits and beyond, and captured a bunch of data in the process.

    DC differential voltage range testing 

    What exactly is a differential voltage?  I like to think of it as a  bipolar voltage supply centered at the oscilloscope's ground.  The positive output connects to the probe's "+" input, and the negative output to the "-" input.  If you apply such a voltage, the probe should output the same voltage, only scaled by 1/20. 

    To apply a 1.0 V differential voltage to the probe, you can do the following:  (1) Connect the voltage supply ground to the scope ground, (2) set the positive voltage to +0.5 V and apply it to the probe's "+" input, and (3) set the negative voltage to -0.5 V and apply it to the probe's "-" input.  The differential voltage across the probe inputs is then +0.5 V minus -0.5 V, which is the 1.0 V that we intended.

    This is essentially the test setup shown below.  The bipolar is built with two voltage sources in series, with each providing half of the full differential voltage.  They're both labelled 1/2 VinDM.  The probe output is set up to connect to a multimeter for accurate DC measurement.  I made sure to use a precision terminator built with a 0.1% tolerance resistor to get as accurate results as possible. 

    Okay, now to the testing!  I've got a dual 30V power supply which lets me generate up to +/- 60 V differential.  This is nice since I can see how the probe behaves well beyond its differential range spec of +/- 20 V.  I set the supply over several voltage points through this range and measured the differential input voltage and probe output voltage at each setting.

    After much very tedious work, I filled up the test spreadsheet at last!  Here's a plot showing the probe's output voltage as a function of the differential input voltage.  The output voltage on the vertical axis is multiplied by 20 to account for the probe’s 20:1 attenuation.

    The green section shows where the input voltage is within the probe's specified operating range.   In that area you can see that there's a 1:1 relationship +10V in, +10V out, etc.  So that looks pretty good.  The voltage errors in that region were under 2%.  

    The performance remains fine up to +/-30V.  In fact, you can often use the probe up to that extended range - at frequencies up to about 100 MHz.  Beyond 100 MHz, the probe's output voltage becomes limited by slew rate, hence the +/- 20V spec.

    Adding some common mode voltage

    The differential voltage response is all well and good, but what happens when you apply a common mode voltage too?  Well, in a perfect world, nothing would happen!  The probe would subtract the two inputs, eliminating any common mode voltage in the process.  

    Let's give it a try!  The test setup needs one slight modification.  An extra power supply will need to be connected between the bipolar supply's ground and the scope/probe ground.  The new setup looks like this:

    There's a massive combination of possible common mode and differential voltages I could test.  To confine things, I focused on the extremes of the probe's common mode voltage spec:  +30 V and -30 V.  To this end I grabbed one more power supply and wired as in the diagram.   I set its output to 30V and otherwise repeated the same exact testing, stepping the differential voltage from -60 V to +60 V.  Finally, I repeated this again with the common mode power supply's terminals reversed for the -30 V common mode measurement.

    After much more tedious work, I now had in my possession a spreadsheet with two more columns!  One column has the data for the +30V common mode voltage, and the other with -30 V.  Ideally the test data in these columns should be exactly...

    Read more »

  • Pulse response testing

    Craig D07/20/2023 at 00:59 0 comments


    I’ve been using pulse response testing in one form or another since the early probe prototypes – basically applying a pulse to the probe input and capturing the output on a scope.  It’s a quick way to estimate the probe’s bandwidth with a minimal test setup.  This log describes pulse response methods and recent testing with latest prototype.

    The simplest form of pulse testing goes like this:

    1. Apply a pulse to the probe input and capture the result on a scope
    2. Measure probe output rise time, from 10% to 90% amplitude
    3. Divide the probe output’s rise time by 0.35 to derive its bandwidth in Hz.

    This method ignores the scope's limited bandwidth and the source’s non-instant rise time.  Because of this, it will underestimate the probe’s bandwidth somewhat.  But there's an equation to compensate for this error, which I'll apply in the testing below.

    First steps - building and characterizing a pulser

    The probe's rise time is pretty fast.  Its design bandwidth of at least 150MHz implies a rise time of 2.33 ns or less.  So we'll need a fast pulse generator.  I didn't have one, but luckily high speed logic gates came to the rescue!  I used that approach to build a minimal pulser shown below. It's 74LVC1G14 Schmitt trigger inverter set up as a relaxation oscillator.  There's a resistor divider at the inverter's output to reduce loading and achieve an approximate 50 ohm source impedance.  The output is through an SMA connector at the top of the photo.  The connector sticking out the side is for the power supply.

    The setup below is aptly a miminal setup for characterizing the minimal pulser.  It's connected right to the scope's input, which is set to 50 ohm impedance.

    As you can see the pulse response is pretty flat.  The scope measured a rise time of about 804 ps.   Not too bad!  If we compensate for the scope's analog bandwidth, which is spec'd at 1GHz, the true rise time would a little better at 724 ps. 

    Applying the minimal pulser

    With the pulser characterized, the next step is hooking it up to the probe inputs.  That took a little careful soldering to adapt the pulser's SMA output to the probe's pin socket inputs.  To do so I soldered a pin header to an SMA connector.  I also added in a 50 ohm termination by soldering an 0603 resistor between the SMA connector's center pin and shell.

     Now we're ready to test!  Here's the full setup. There's not too much too - just the pulser, SMA adapter/termination, and probe with its output and power cables.

    Here's a scope screenshot showing the probe output and its rise time from 10% to 90% amplitude.

    The probe output's measured rise time is 2.12 ns.  Using the formula from the Intro section, the probe bandwidth estimate is 0.35 / 2.12 ns, which works out to 165 Mhz.  Great! It's within spec.

    But remember that this method ignores the scope's limited bandwidth and the source’s non-instant rise time.  We can compensate for those with the following formula and should find that the bandwidth is a bit higher than the 165 MHz estimate.

    Applying the formula shows that the probe rise time is actually 1.965 ns, which translates to a bandwidth of 178 MHz

View all 4 project logs

  • 1
    Operating Instructions

View all instructions

Enjoy this project?



Zixi-Fu wrote 10/23/2023 at 02:23 point

I'm really interested in the use of MCU. Will the PCB be open sourced?

  Are you sure? yes | no

Nicolas Tremblay wrote 10/06/2023 at 14:36 point

Take my money!
I seriously hope you'll at least do a small batch run.

  Are you sure? yes | no

Craig D wrote 10/07/2023 at 14:59 point

Thanks Nicolas!  I certainly hope to do a production run.  I'm planning to spend more time on it in the coming months and will post updates here.

  Are you sure? yes | no

Tim wrote 09/30/2023 at 22:50 point

I noticed a nice feature on your PDF schematic. Clicking on a component pops up details. The schematics look like KiCad, but my KiCad 7 PDFs don't have the pop up details. How did you do that? A new option that has to be enabled in eeschema?   Edit - I just updated to 7.0.8 and plotted to PDF, and it has the pop-up component details.

  Are you sure? yes | no

Craig D wrote 10/02/2023 at 02:08 point

That's interesting Tim!  I actually had not noticed that feature because it doesn't show up in the PDF viewers I've been using. Though I do see the data is embedded in the file.  Curious which PDF viewer you're using. 

  Are you sure? yes | no

Gregor wrote 09/29/2023 at 21:18 point

Looking for the “Buy now”-button

  Are you sure? yes | no

Craig D wrote 10/02/2023 at 01:35 point

Hopefully someday :-)

  Are you sure? yes | no

Craig D wrote 07/12/2023 at 12:53 point

Thanks Tim!  I do plan to open source the project and hope to post more details soon.

  Are you sure? yes | no

Tim Warren wrote 07/11/2023 at 20:54 point

Look forward to hearing more about this project. Will it be open sourced?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates