I took some time off from redeploying my dishes to look over a nagging problem I had called USALS. Last year I tossed a 1.2 m GEOSATpro on the roof with a PowerTech DG-380 motor. It was easy to tweak and I soon had it tracking the Clarke belt over the motor's range.
My true south is about 105 degrees, allowing me to get most of the Ku action not too far off-center. From the beginning I noticed when using my Pansat 9200HD, the farther I drove the dish from center in either direction, the greater the in-track error in positioning. In fact both east and west errors were about the same for similar offsets, with the Pansat always driving the dish not quite far enough. I realized this might simply be accumulating mechanical errors in the motor, but the consistency was concerning. In reality this wasn't causing any real trouble, because orbital locations 45 degrees from my true south were experiencing only about a 0.2 degree error. This could be easily compensated by lying to the Pansat about the orbital location. However the error quickly got larger for the lower elevation birds.
We had high winds a few weeks ago that blew the 1.2 m mount slightly off. When resetting the adjustments I again verified the satellites far off-center only had in-track errors (ie. bumping the dish up or down only reduced the signal level). I got curious what was going on. As far as I can tell, the USALS algorithms have not been openly published. There were a handful of website calculators that made some or all of the calculations, but none agreed for significant offset angles, and none agreed with my Pansat's calculated motor angles. I also looked through a number of open-source codes for controlling USALS motors, and that only increased the cacophony.
I surmised the discrepancies might have to do with different declination offset angles, and further reading found many approaches to calculating the 'optimal' declination offset angle. Of course none were the same. As the declination offset is only an approximate correction to track the arc, it appeared the differences probably resulted from different optimization criteria. For example, one approximation might minimize the tracking error for angles close to true south, at the expense of angles close to the horizon. Another might do the opposite.
Rather than re-derive each approach and figure out where they made different assumptions, I thought this was prime territory for a little linear algebra. For fun I decided to employ a non-spherical earth model and consider my altitude (this turned out to be useless for Denver because its altitude essentially offsets the earth's polar flattening). Fairly quickly I found the Pansat calculated motor angles were precisely in agreement with a zero declination offset angle, other than when it tried to calculate orbital positions more than about 65 degrees from true south and got completely nonsensical answers.
I then set up my calculations to optimize cross-track performance by varying the declination offset angle. This was all fun and good, but not terribly practical because there were many excellent fits using different optimization criteria with maximum cross-track errors of a few-thousandths of a degree. Satellites typically are only kept positioned in a box much bigger than that, even considering the folly of thinking one could adjust a dish to that accuracy.
Nevertheless to put theory into practice I hauled up the theodolite and tweaked everything until I got bored. One of the open-source programs I had come across is called xdipo and with one of my USB receivers was an excellent starting point for a better USALS controller than the Pansat. xdipo's calculations for motor offset angles are way off, but that can be fixed. I modified a number of xdipo's controls and tweaked its display of the signal levels and quality to make it into a more precise tuning instrument. It's rather convenient because the USB receiver is inside the house run by a Linux machine running xdipo remotely over wireless to display on my laptop on the roof. In some ways this turned out to be more precise than using a spectrum analyzer, and a lot faster. It didn't take long to confirm my direct calculations of the motor angle were dead-on for the given declination angle, while the Pansat was not. I was also able to calibrate out an error in the DG-380's view of what was a zero offset angle by subtracting this out in xdipo. I haven't taken the DG-380 apart, but I would like to remove this mechanical error.
I'm confident the Pansat is making the simplifying assumption that there is no declination offset angle, causing the positioning error to increase with angle. One could partially compensate for this mechanically through an intentional misalignment, at the expense of cross-track error. That wouldn't make a lot of sense.
I can't change the Pansat USALS calculations, but I could write code for Linux to build an accurate satellite positioning system. I've put that in my project to-do hopper because the Pansat has other limitations with positioning that I am no longer willing to tolerate. Whether these same approximations/errors exist in other receivers I cannot say, but hopefully some of what I've come across may explain oddities others have observed.
My true south is about 105 degrees, allowing me to get most of the Ku action not too far off-center. From the beginning I noticed when using my Pansat 9200HD, the farther I drove the dish from center in either direction, the greater the in-track error in positioning. In fact both east and west errors were about the same for similar offsets, with the Pansat always driving the dish not quite far enough. I realized this might simply be accumulating mechanical errors in the motor, but the consistency was concerning. In reality this wasn't causing any real trouble, because orbital locations 45 degrees from my true south were experiencing only about a 0.2 degree error. This could be easily compensated by lying to the Pansat about the orbital location. However the error quickly got larger for the lower elevation birds.
We had high winds a few weeks ago that blew the 1.2 m mount slightly off. When resetting the adjustments I again verified the satellites far off-center only had in-track errors (ie. bumping the dish up or down only reduced the signal level). I got curious what was going on. As far as I can tell, the USALS algorithms have not been openly published. There were a handful of website calculators that made some or all of the calculations, but none agreed for significant offset angles, and none agreed with my Pansat's calculated motor angles. I also looked through a number of open-source codes for controlling USALS motors, and that only increased the cacophony.
I surmised the discrepancies might have to do with different declination offset angles, and further reading found many approaches to calculating the 'optimal' declination offset angle. Of course none were the same. As the declination offset is only an approximate correction to track the arc, it appeared the differences probably resulted from different optimization criteria. For example, one approximation might minimize the tracking error for angles close to true south, at the expense of angles close to the horizon. Another might do the opposite.
Rather than re-derive each approach and figure out where they made different assumptions, I thought this was prime territory for a little linear algebra. For fun I decided to employ a non-spherical earth model and consider my altitude (this turned out to be useless for Denver because its altitude essentially offsets the earth's polar flattening). Fairly quickly I found the Pansat calculated motor angles were precisely in agreement with a zero declination offset angle, other than when it tried to calculate orbital positions more than about 65 degrees from true south and got completely nonsensical answers.
I then set up my calculations to optimize cross-track performance by varying the declination offset angle. This was all fun and good, but not terribly practical because there were many excellent fits using different optimization criteria with maximum cross-track errors of a few-thousandths of a degree. Satellites typically are only kept positioned in a box much bigger than that, even considering the folly of thinking one could adjust a dish to that accuracy.
Nevertheless to put theory into practice I hauled up the theodolite and tweaked everything until I got bored. One of the open-source programs I had come across is called xdipo and with one of my USB receivers was an excellent starting point for a better USALS controller than the Pansat. xdipo's calculations for motor offset angles are way off, but that can be fixed. I modified a number of xdipo's controls and tweaked its display of the signal levels and quality to make it into a more precise tuning instrument. It's rather convenient because the USB receiver is inside the house run by a Linux machine running xdipo remotely over wireless to display on my laptop on the roof. In some ways this turned out to be more precise than using a spectrum analyzer, and a lot faster. It didn't take long to confirm my direct calculations of the motor angle were dead-on for the given declination angle, while the Pansat was not. I was also able to calibrate out an error in the DG-380's view of what was a zero offset angle by subtracting this out in xdipo. I haven't taken the DG-380 apart, but I would like to remove this mechanical error.
I'm confident the Pansat is making the simplifying assumption that there is no declination offset angle, causing the positioning error to increase with angle. One could partially compensate for this mechanically through an intentional misalignment, at the expense of cross-track error. That wouldn't make a lot of sense.
I can't change the Pansat USALS calculations, but I could write code for Linux to build an accurate satellite positioning system. I've put that in my project to-do hopper because the Pansat has other limitations with positioning that I am no longer willing to tolerate. Whether these same approximations/errors exist in other receivers I cannot say, but hopefully some of what I've come across may explain oddities others have observed.