Yet Another Doppler Direction Finder w/ Teensy DSP

An update on WA2EBY's May/June 1999 QST Homebrew DDF/Radio Direction Finder

Similar projects worth following
Doppler radio direction finder using Teensy audio library DSP to replace switched capacitor filter and random logic. Use a Neopixel ring for a display.

Radio direction finding (RDF) or T-hunting or fox hunting has been a hobby in the ham radio world for a long time.  If you've ever seen a car equipped with a big, crazy looking antenna, a square antenna array or people running around with funny antennas and radios, they are probably T-Hunting.  If it's a weekend it's probably hams and a weekday someone looking for a transmitter for another reason.

T-hunting is still a thing with communities of hunters.  In San Francisco there is rdf-sf and there may be a club in your neighborhood.  The rdf-sf site is a great source of information and there's also

Do a Google search for Doppler Direction Finding for theory of operation.  The May and June 1999 QST issue with WA2EBY's article on  a radio direction finder is based on simulated Doppler.   For even more information find a copy of "Transmitter Hunting - Radio Direction Finding Simplified" - available in dead-tree form only.   The 1999 article is an update to WA4BVY's early 80's design.  It's been 20 years so a technology update is overdue. 

I'm using four antenna that are electronically switched to impart a Doppler tone FM modulated on the received signal.  The Doppler tone is isolated with a very narrow band-pass filter and the phase of the Doppler relative to the switched antenna is measured to determine direction.  The relative position of the signal source is derived from the difference.  

The WA2EBY DDF  is built with nine chips (74HC),  a couple of transistors, a voltage regulator and a bunch of passive parts.  I am using the same idea for the antenna switching but trying to do the instrumentation with many fewer parts.  WA2EBY's  used cheap 1n4148 because at the time PIN diodes could be over $10 and the design needs 8.  PIN diodes have become commodity parts and BAP64-03 PIN diodes I'm using are $0.09.  I am using a Teensy 3.2 ($20) for most all the logic and filtering.  I have just gotten started with the Teensy Audio Library.  I am using 16 Bi-Quad filters but have not gotten around to characterize performance yet.  The code is pretty simple and sloppy.  It mostly "rotates" the antenna and measures the zero crossing of the filter output.  

The design uses a 16 element Neopiixel display - the Neopixel is a nice update of the '80s ring of 16 plain old blinken' LEDs.  I am using a single white pixel to point direction and the rest of the array to display signal quality.

I am using a cheap 0.5 W FM transmitter module for my test signal.  I fired everything up and the display was crazy random.  I have come to learn that was to be expected.   I am testing in a small office with metal filing cabinets so there are lots of reflections.  Even my movement in the office makes a difference.  I did some testing on the major functions and everything looks right.   I'd like to test with a RF signal generator that somehow was synchronized to the antenna switching.  I tried putting together a gnuradio flowgraph but I've yet to find a PC fast enough to make it work.  I found a simple way to test the basic phase measurement by using another Teensy to delay the antenna switching pulse to a comparator output.  Just getting a stable delay out of the tester was a challenge.

I plan on testing outside to operate in an open area without so many reflections.  As visible in the photo, the bread board isn't travel worthy.  Next up is redoing the the antenna switcher board with edge mount sma connectors and a new design for the antennas.  The antenna cookie sheet is deep enough for the PCB to go in underneath.  BTW - the antenna shown is for UHF.  Most serious T-Hunting goes on in the VHF band...

Read more »


A cleaned up cookie sheet ground plane.

JPEG Image - 3.46 MB - 03/18/2019 at 00:02



Teensy_DDF PCB

JPEG Image - 2.33 MB - 03/18/2019 at 00:01



Latest and sloppiest Teensyduino code to date.

ino - 7.13 kB - 03/17/2019 at 23:01



Display in operation. The white pixel shows direction and background color signal quality. Testing in a small room with metal furniture causing many reflections. Warning: annoying audio sound - beware!

MPEG-4 Video - 48.39 MB - 03/15/2019 at 19:02



New PCB using BNC connector with though hole connection. Seems very sturdy. Now featuring PIN diodes!

JPEG Image - 3.83 MB - 03/07/2019 at 00:18


View all 10 files

  • Displaying Signal Quality

    Martin03/08/2019 at 07:47 0 comments

    I am using a single white LED to show direction.  The remaining array can be used to convey signal information with different colors.  I am testing the audio input for the amount of Doppler tone and 2nd harmonic are present.  Currently the Doppler tone is used to turn the white position pixel on or off.  The combination of the two are used to show a variety of background colors from red to green.  Pix to follow...

  • Non-Blocking WS2812 Library from Paul Stoffregen

    Martin03/03/2019 at 06:42 0 comments

    The Neopixel display has wonkyness that I can't  blame entirely on RF reflections.  I discovered Paul's non-blocking library which would go a long way to fixing some problems.   I tried running some of Paul's examples.  They were doing something but not what they were supposed to do.  I also saw his warning about using 5 V signals to drive the array.  I have been using the Adafruit library and did see some problems due to driving with 3.3 V.  Fortunately I have some spare LM339 comparitor sections running at 5 V that should work.  I also saw a non-blocking WS2812 library for RGB+W LEDs and relized my problem with Paul's example.  The good new is the RGB only rings are cheaper!  Paul is brilliant!

  • Faraday fail 2

    Martin03/01/2019 at 01:04 0 comments

    Out of curiosity, I went online and bought the nicest galvanized steel box that $12 would buy.  I'm not sure what gauge steel but it feels very sturdy.  Almost armchair copy - albeit sounds a little muffled with the lid closed .  I guess more cowbells isolation = nicer, thicker copper box - I see the dollars flying away if I were serious.  I have found a solution: an Altoids tin!  By removing the transmitter rubber ducky, installing a dummy load a placing it in a an Altoids can I can knock the signal down low enough so the "external RF in the Baofeng is solved" when it's in it's box.


  • A Different DSP Approach?

    Martin02/27/2019 at 05:03 0 comments

    I have been doing a little investigating of the Teensy Audio Library for a FFT so that I could just extract the phase and bin magnitude (bin size 43 Hz) with the 1024 bin library.  Sadly magnitude but no phase.  I could roll my own with a Goertzel algorithm but that would involve work.  

    I am finding that getting a very narrow filter is easy with the 16 Biquad cascaded filters by just dialing up the "Q" parameter.  There is a warning to use caution above 0.707 so that signals don't exceed 1.0.  Going up to 10 didn't seem to cause distortion problems though it did ring like a bell.  I wonder if that could be a good long as long as I can distinguish the Doppler from just ringing.  

    There must be a million ways of doing this.  Any other ideas?

  • Diode update 1

    Martin02/26/2019 at 08:16 0 comments

    According to the Moell T-hunting book the 1n4148 diodes introduce more switching noise and more potential for cross-modulation from strong signal sources.  A quick look at my friendly non-local distributor shows that there are SOD-323 PIN diodes for about $0.40 and even cheaper ones in different footprints.  So in a four antenna system I'm using eight diodes.  I'll go cheap on something else.  Off for diode shopping...  Or more PCB redesigns....

  • HT Faraday cage Version 0.2

    Martin02/25/2019 at 07:43 0 comments

    A little study on Faraday shielding.  I was baffled from previous experiment and wanted to get a better handle on  why I was getting such little isolation.   I replaced three of the cover plates with a little copper sheet I had around  and found I could control the isolation by holding down the copper sheet down.  Show below blue-taped together.  On top is a monopole driven by my 10 mW HacRF and by the side is a 1/2 W HT with cheesy rubber duckie antenna.  With the 1/2 W module I get full quieting and with 10 mW no quieting.  So 10 - 12 dB isolation?

    More later.

  • Got Signal?

    Martin02/25/2019 at 01:40 0 comments

    A major step in tracking down wonky system behavior.  I gave a little thought about relative signal levels and it dawned on me that my widdle 1/2 watt test transmitter was getting into the %&*^%#@$# Baofeng HT.   I took  the antenna connector off and with no antenna I was getting armchair copy.  

    I know that I can't expect much shielding from my cheap Baofeng's plastic case.  So off to Home Despot for a Faraday cage for the HT.  I found a galvanized steel 4-gang outlet box and blank cover plates.  So I take my antenna-less HT, place it into the metal box and cover it up.  Armchair copy!   It dawns on me that 1/2 W might be too much for close quarters.  So I move the test transmitter over to my HackRF with it's measly 10 mW transmitter.  Voila - things are are starting to make sense.  Next up checking the VSWR on the atennas and tuning them.

View all 7 project logs

Enjoy this project?



Simon Merrett wrote 02/21/2019 at 03:54 point

"if you have a [logic/analogue/ghetto-RF] problem, if no one else can help... and if you can find him... maybe you can hire...

@Ted Yapo"

...cue theme tune. 

  Are you sure? yes | no

Ted Yapo wrote 02/21/2019 at 15:01 point

speak of the devil and he doth appear

Cool project!

I played with this circuit not long after the 1999 article. It was what got me initially interested in PIN diodes, which I ended up designing a logic family around (#The Diode Clock ). The 1N4148's originally specified will "work", but I think it would be really interesting to try some of the fancy new MMIC RF switches available today. For example:

One thing jumps out at me from the project pic: those pigtails in between the antennas are going to mess up your pattern. It might work better if you cut a hole in the center of the plane and ran the cables through that to keep everything below.

I did some antenna modeling with EZNEC for this kind of setup, although the work is lost at this point. If you're up for it, you could give it a shot:

  Are you sure? yes | no

Martin wrote 02/22/2019 at 01:15 point

Did you get your DDF working?

I do understand that I'll get better performance using even just PIN diodes but want to keep the cost of prototypes down.  I will check out some of the spendier parts in time.   

The antenna ground plane cookie tin is a mess - it was built for expediency - not RF performance.  I am reworking the antenna mounts and switcher to make them suitable for mounting on a vehicle.  I'm also building it for VHF so no more cookie tin.   

I actually like 4NEC2 but haven't used it for this.  There are several ways to do the antenna switching, the way I did it or by shunting all but one antenna to ground.  The shunt is a biased on  diode connected to the antenna a 1/4 wavelength away connected to ground.  This needs further investigations as well.

For the UHF antennas I used threaded rod in a union so I could tune the antenna by screwing it in or out.  But never got around to tuning them.

All good points. 

Thanks - Martin

  Are you sure? yes | no

Ted Yapo wrote 02/22/2019 at 01:52 point

I got it working enough to see some crude results from data sampled by a PC sound card, but never took it beyond that. As usual, I was distracted by some small part of the project, and wandered off following that.

Yeah, you can't get a cheaper, more versatile part than the 1N4148. Well, maybe the 1N914 ;-)

  Are you sure? yes | no

Dan Maloney wrote 02/19/2019 at 16:50 point

I'm curious how this turns out, please keep us posted. And I'll have to look up that QST article so I can get my head around DDF. Thanks!

  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