Since I'm not an electrical engineer and they teach nothing about oscilloscopes in traffic engineering classes, I've been viewing lots of videos about using scopes on YouTube.  After seeing W2AEW's video, I thought I'd get an Arduino and make a "poor man's TDR" (as he calls it) by having the Arduino output pulses.

This is really quite simple.  Too simple.


So simple it didn't work.

Initially, it looked pretty good.  I don't know about the accuracy of the Arduino, but I imagine that it is good enough.  The problem, I'm guessing, is the current.  An Arduino is pretty limited (40 mA), so pushing it through a cable and expecting it to be able to act like the video might be pushing it.

Anyway, for the sake of showing, here's what I did...

The Arduino Sketch

The Circuit

It's pretty simple.  Plug the scope probe into pin #7 and ground the scope probe ground to the Arduino.

The Results

Without any coax or with a ~6 foot piece of RG-58 open at the other end, I can see the step from the pulse.  But when I connect a 50-ohm dummy load, the voltage drops.

Without a load:

With a load:

Note the difference in voltage between the two.  I had the scope set to DC for these to keep the baseline the same, and the voltage per division was 1V.

Back to the drawing board.


Category: Equipment

About the Author

Andrew is the owner of this blog and enjoys computer programming, building things, and photography. He's a pretty busy guy, which explains why updates to this blog are so infrequent.

6 Responses to Using an Arduino as a "Poor Man's TDR"

  1. Alan says:

    Two reasons why it likely didn't work (maybe three)... In typical 50ohm coax, signals travel about 8" per nanosecond. 6' of cable is 72 inches, so it will take the pulse 18ns to go round trip (2x the cable length). In order for this to work, the risetime of the pulse will need to be at least 5-10x faster than this. I doubt that the Arduino's output is this fast (problem 1). Plus, you've got a 20MHz scope there, whose inherent risetime is probably on the order of 20ns, so even if the pulse was fast enough, the scope isn't. You may want to try this on a large spool of cable, maybe some ethernet cable, etc. You'll probably be able to measure something that it 50' or longer, assuming the pulse edge speed is about 20ns (but I doubt it's that fast).

    • Andrew says:

      Thanks Alan! I was wondering if that cable was too short, but was too tired to do the math. I'll try it later this week on my antenna run out of the house (why I tried this in the first place). It's around 80-90 feet, so maybe this will work with that.

  2. WA5ZNU says:

    Is your scope dual-channel? If so, send the pulse down two pieces of coax of different lengths to the two different channels and see the phase shift between the two signals. Or if you just have X-Y, put two pieces of coax on the X and Y inputs and see the shape of the line.

    • Andrew says:

      I’m going to try it, but I wonder if the scope is fast enough with such a long pulse from an Arduino. Looking at, I’m not sure I’d be able to see a difference because the fastest that code above will run is 1 microsecond pulse (with 1 uS following), but it really needs to be in the 10 nanosecond range (the shortest delay you can get in an Arduino is 62.5 nS).

      • KF5IUY says:

        As I posted back on my blog, don't worry about the pulse length coming out of the arduino. Everything I did was with a 1 millisecond pulse. The key is to zoom in on the rise of the signal, that is where you will see the reflections.

  3. Gerry says:

    Hi, just happened by and seen your project. I used to do a lot of TDR testing with equipment made for this. The reason the 50 ohm load is less in amplitude is that it is being absorbed with the correct 50 ohm termination. You only test cables with either a short or an open to get a good reflection. A cable with good termination on each end has very little refection to read. With the parts we have these days, this looks like a very viable project!

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

%d bloggers like this:

This is the new server