Hello again everyone,
I have received a couple of emails off list asking about details of how I'm planning to use the magnetometer for the azimuth feedback. Instead of individually replying I'm placing my response here so everyone gets the same info (skip to the end of this long winded email for the details). Before I get into that I want to address Bob's (WB4APR) note about the constant rate of these motors. Basically, I like the idea because of its simplicity. That's something I hadn't considered, but will look into. My logic there is run my system through a few dozen trials to really lock down the turn rate baseline. Then all I have to do is keep track of the amount of time and in which direction I'm telling the motors to turn, and voila I should know the azimuth/elevation. As Bob mentioned with the beamwidth of these antennas that should get me close enough.
If I were only planning to use the system for tracking LEO birds at VHF/UHF frequencies, I would probably just go with that. However, I was slightly understating my goals when I initially brought up this issue. In addition to LEO birds, I plan to also use this system for UAV tracking and High Altitude Balloon Tracking. I am an EE graduate student at Virginia Tech and each semester I help out with an Undergraduate Lab with Aerospace and EE students that design and fly a high altitude balloon (generally with APRS tracking and some kind of camera/sensor suite payload). One of the professor in charge's (Dr. Dennis Sweeney, WA4LPR, some folks might know him for his filter design work among many other things) goals is to up the data rate in order to attempt a high speed real time data link. So in my own time I want to use this tracking pedestal for LEO tracking (and for my Master's Thesis prototype), but for this HAB project, the elevation can get quite high depending on the geometry of our chase scenario, and beamwidths can get quite small depending on the frequency we finally choose. In the end it might not matter much, but when we get to that point I want to at least have the OPTION for tight control over the pointing. This whole thing will likely get vehicle mounted in the bed of my pickup, and though I haven't completely thought out the details yet, My gut is telling me the use of a magnetometer for azimuth feedback could have a slight advantage because as the vehicle is moving the system could automatically compensate for the turning of the vehicle, where as a potentiometer type solution would not. With position updates from the HAB and a local GPS in the chase vehicle, calculation of Az/El to the target is pretty straight forward. Combine that with magnetometer feedback about the antennas' azimuth and elevation feedback from an accelerometer (which should also be somewhat "self compensating", say if the vehicle were moving up or down a hill), and I should be able to come up with a fairly sexy tracking pedestal that automatically compensates for the vehicle's motion to keep the antennas "on target."
All that being said, here is my plan for the magnetometer implementation:
I don't really have the details locked down yet, but I can give the overall plans. First I plan to use the HMC5883L from sparkfun. This device is $14.95 + Shipping and handling. It is a 3 axis magnetometer. When dealing with magnetometers it is important to understand whether or not your device is tilt compensated. This particular device is NOT tilt compensated. What that means is that it must be kept oriented parallel with the Earth (within say maybe + or - ten degrees or so). Assuming it remains oriented properly, the device will output (over I2C) the magnetic field strength in the X, Y, and Z directions. The Z direction is essentially pointed straight up at zenith (and should remain near zero since it is orthogonal to the earth's magnetic field). Also assuming no other strong magnetic fields exist near the sensor, it will detect Earth's magnetic field (the sensor just returns the highest magnetic field for a particular direction, so if other magnetic fields exist near the sensor, it can ruin the readings). In order to get the bearing, or azimuth, information one simply has to use the atan2 function with the Y and X axes, here is the code snippet from some examples online: heading = atan2(scaled.YAxis, scaled.XAxis). The rest is just calibration and making sure the heading makes sense (i.e. if the heading is a negative number add 360 to get a 0 - 360 output). One issue too is that most satellite tracking programs return the TRUE heading or azimuth (reference to the North Pole) to the spacecraft. This magnetometer with produce a MAGNETIC azimuth (referenced to the magnetic pole). Thus one must compensate for the magnetic declination of the area of operation. The declination can be found online for each person's individual location and can be hard coded into the code to adjust the magnetic readout to a true readout.
Since this device is not tilt compensated I plan to mount it on my azimuth base on a short boom that sticks straight out in front of the antenna assembly. It will be center mounted on a non-conductive extension (maybe two or three feet in front of the azimuth assembly). My logic here is to try to get the sensor as far away from the AC induction motors and other metals as I can. The AC motors will produce a strong magnetic field and if the sensor is near them, it will distort the readings.
Thanks again to everyone that provided feedback for me. Below are a few links that should help out those who want more details. Keep in mind too that there is a plethora of information out there on these devices (tutorials and example code) and with the links below and some skillful Googling, anyone can found out everything they need to make one of these work.
Sparkfun Link: https://www.sparkfun.com/products/10530
Bildr Tutorial: http://bildr.org/2012/02/hmc5883l_arduino/
K3NG's Arduino rotator control project: http://blog.radioartisan.com/yaesu-rotator-computer-serial-interface/ (Thanks to Lizeth, N3YKF for pointing me in this direction)
---------------
-Zach, KJ4QLP