Go Down

Topic: ARDF project (Read 5906 times) previous topic - next topic


Hi I am in need of some help on this one.

Radio Direction Finding is something that a bunch of us do on a regular basis.  Basically it is hide and seek over a large area and you hunt the person transmitting down in a vehicle (or on foot).  At present time I use a sniffer and a directional antenna to determine the direction of the transmitter.  It works VERY well, the problem is I need to get out of my truck to get a good indication on the direction the antenna is pointing.

This is where the Arduino comes in...
I need some way of determining a heading of the transmitter that can be sent to Google Eatth

This has four  major sections:
1. - Get the heading of my truck via GPS ( I know I need to be moving for that to work) I would like to feed NEMA data into the Arduino from an external  GPS.

2. - Get the direction the antenna is pointed RELATIVE TO THE TRUCK, need something attached to the antenna mast that can indicate rotary position and can be turned repeatedly.

3. - Calculate the direction of the transmitter.

// calculate heading of transmitter relative to vehicle heading
if (antenna_heading + vehicle_heading > '360'){
  // heading total is less than 360, good to go
  transmitter_heading = antenna_heading + vehicle_heading;
  // heading total is over 360, fix it
  transmitter_heading = (antenna_heading + vehicle_heading) - 360;

4. - Send info to Google Earth via the serial port. Can that be done?  I know Google Earth will accept it but will the Arduino send it?

Will it work?
Suggestions for parts?


1. - Get the heading of my truck via GPS ( I know I need to be moving for that to work) I would like to feed NEMA data into the Arduino from an external  GPS.

This can be done. You don't necessarily have to be moving, but you do have to have moved, in order to define a direction vector (there minus here).

2. - Get the direction the antenna is pointed RELATIVE TO THE TRUCK, need something attached to the antenna mast that can indicate rotary position and can be turned repeatedly.

A rotary encoder seems like just what you need.

3. - Calculate the direction of the transmitter.

The easiest part.

4. - Send info to Google Earth via the serial port.

What will be on the other end of the serial port? The serial port is not some magic device that can make data go anywhere. It is one end of a data transmission mechanism. There must be something on the other end, with a wired or wireless connection between the serial port devices.

If the Arduino is connected to a PC, and some application is running that forms the other end of the connection, that application can read the serial data and send it to google earth.
The art of getting good answers lies in asking good questions.


The GPS I intend to use is a Garmin GPSIII since it is already in the truck. It will feed a NEMA data stream to the Arduino for heading.

Do all rotary encoders work the same?
I just looked on eBay and there a ton... I would like a "large" unit for physical durability.  I am looking for a resolution of 360 per / rotation.

As far as the PC, I need to feed send the PC the antenna heading via the USB cable.  There is a program that will take the info and use it (Google Hunt) My question is more along the lines of if the USB connection on the Arduino can be used for this or if it is for programing only?



Come to think of it, an alternative to a shaft encoder is to simply use a stepper motor to rotate the antenna mast. With a single reference point ("dead-ahead" = 0 degrees, relative) limit-switch you will always know which direction the antenna is pointed, because Arduino is telling it which way to point.  You can even program the function of orienting the antenna for max/min (depending on what type of antenna you are talking about).

Stepper motor!
I love it!
That would allow me to mount the antenna to my rack in the back of the truck and use a small knob to move it from the seat  :D  Now all I need is the knob from a old HF rig. I have know idea how to do it but I will look it up...


If you have a continuously-rotating antenna mast, how will you couple the signal from the antenna? (without getting the lead-wire twisted.)

I was not planning on continuously rotating it I just did not want any positive stop points.  Since it was intended as manual control, some brain power would be utilized to not twist things up.

I will definably be posting in the code help section for this one.  ;)


I would be highly concerned that a stepper motor would move on its own due to the jostling of the truck. You would need to add some kind of reference point; this could be as simple as a lever switch that is triggered at some point in the revolution of the stepper.


Something like this:
Might be handy to consider.  Perhaps it could be attached to the antenna rig somewhere so that the sensor rotates in step with it?


I would use a rather large stepper and was thinking of using a worm drive to attach it to the mast.  With the proper pitch on the worm it will not be movable by the antenna.  (regardmess how musk force is applied.) I think this will also increase the smoothness of operation, increase resolution and most likely save the antenna from damage from moving to fast in any direction.

I do like the idea of a sensor on a reference point, but I am thinking of it a bit different.  This will need to be "calibrated" every time it is turned on since the controller will knot know the starting direction of the antenna.  So a sensor that indicates 0 deg. is perfect. 

I don't think the compass will help since the heading is relative to the truck.  Also I question the accuracy of them, although the one in my phone works very well.  :smiley-roll:


There are many ways to do this.  Do you love the antenna you have or could you use a fixed diversity arrangement that does not require physically rotating anything.  Just switch in the antenna that is already pointing in your direction of interest.  There are mux chips that make rapidly selecting an RF feed easy and much faster than any knob you can spin.  Direction finding can be made fully automatic by detecting phase differences or doppler shift at highway speed.  (requires simultaneous analog capture available on Xmegaduino or external ADC)  Indicated audibly("left 32 degrees"), by a circle of LEDs, an LCD, a heading over serial, etc.  If you do go the rotating antenna route, it would be fairly simple to have the knob(potentiometer or rotary encoder) connect to the arduino, then have the arduino command the motor to turn.  That way the arduino can keep track of how far it has rotated in each direction, thus know the direction it is pointing relative to the truck and if it has rotated too far one way and prevent further motor commands in that direction.  If you have access to 2 gps fixes from known locations separated by a known distance (dashboard GPS + a GPS antenna on the farthest bumper) you can get instant direction information without movement.  One fix is the head, the other the tail of your direction vector. 
Antenna rotation; worm gears would work but they may be subject to irreparable stripping under antenna wind loads.  What is the wind load of the antenna you plan to use at your max driving speed + the max expected wind speed?  I'd hate to be on the highway behind you if it broke away.  I would recommend a timing belt drive or spur gear drive to rotate your mast so that a skipped tooth is not a catastrophic failure.  I would also suggest a stepper motor for fixed known repeatable constant rotational increments but also use an encoder on the antenna itself(not the motor) to detect and instantly correct for either a slipped belt/gear or the stepper being forced around.
If you would like a collaborator I'd be happy to help while I build mine here.
Dustin Maki
KD0HBJ ham radio operator


If you use a reasonably large stepper motor and keep it powered-on (not free-wheeling), you probably couldn't turn it with a wrench.

A decently large, NEMA 34 stepper motor is only around 5 lb ft of holding torque. Perhaps you're considering the strength of the typical electrical engineer? But then a motor that size would weigh around 10 pounds and the engineer wouldn't be able to lift it to the top of the van.  :smiley-mr-green:

...but back to the topic...

I detailed a simple DIY method of creating an encoder in another thread. With the Pololu sensor's 8 bit capability you could create an absolute, 256 position encoder on a disc under the antenna and always be certain of the direction of the antenna -- with no need for any initialization routines. That would also allow the use of a regular, brushed DC motor to turn it.

Go Up