Satellite TV  -  Scientific Analysis

4  An H-H Rotor

To receive signals from anywhere in the sky, a dish must move both horizontally and vertically, and some can do that.  However, to track the Clarke Belt, they are somewhat overkill  - a simpler and cheaper assembly of a dish rotating around a single axis does almost as well.

The realisation crucial to understanding this possibility is that the radius of Earth, 6378km, is comparatively small compared with the radius of the Clarke belt, 42164km, so anyone on the surface of Earth is 'almost' at the centre of the Clarke belt.  Thus, a dish mounted on an axis approximately perpendicular to the equatorial plane of the Clarke Belt, and pointed initially at the nearest point of it, as it turns around this axis will cover a great many of the nearest 'visible' sats before the error from not actually being at the centre becomes significant.

That is how an H-H Satellite Rotor works.  The principle is illustrated in the following diagram ...

Satellite TV - Scientific Analysis - Rotor Cone Diagram

However, the simplicity of the principle is easily lost amid practical complexities ...

Many of the angles in a practical dish system do not contribute to its central purpose, they are there merely for convenience, mostly of manufacture and installation:

But here forget the complexities of the installation setting angles.  Once it is all bolted together and installed, it's two rigid structures connected by the pivot of the rotor spindle, and the Pivot Rule implies that either side of this pivot all that matters is the net angles involved.

In demonstration, partially straighten a paperclip leaving some bends, and rotate one end between your fingers.  You'll see that the other end remains at a constant angle to the one's axis of rotation, and, like a lighthouse beam, depending on how you bent the clip downwards, horizontal, or upwards, it sweeps out the surface of a cone, as illustrated above, or of a disc.

Satellite TV - Scientific Analysis - Rotor Calculation Diagram

In principle then, the only three angles that matter are ...

  1. Tilt angle, that the rotor axis OR, that is the line of its bearings, makes with respect to Earth at the dish site, sometimes measured from the vertical R'OZ (90 − Latitude), sometimes the horizontal (Latitude)  -  the site's latitude and this setting in combination leave the axis parallel to the poles, perpendicular to the equatorial plane of the Clarke Belt, or nearly so;
  2. Beam* angle, made with that axis, depending on context, either SOR by the incoming sat signal SO, or by the sum of the setting angles on the dish side of the rotor  -  crank angle (−ve), dish elevation (+ve), and offset (+ve), though the latter two will probably be combined into a single dish elevation setting (+ve);
  3. DLongR the rotational longitude difference, SRP, that the rotor turns to point to a sat at DLong, aka the Polar Mount / Rotor Hour Angle, in the Calculator page as Rotor Azimuth.

* Many instead use Declination, particularly referring to the nearest point of the Clarke Belt where unambiguously it's OCE = OCR = 90−Beam, but anywhere else, there's potential ambiguity between OSE and OSR.

These angles can be calculated as follows ...

Construct the following as illustrated in the diagram for the northern hemisphere (southern in brackets):

1 At O, make X-Axis horizontal South (North), Y horizontal East (West) perpendicular to page, Z vertical.
2 Drop perpendicular from O to meet equatorial plane at R on EC, extend it beyond O to R'.
3 Drop perpendicular from S onto EC at P.

Consider triangle EOR:

  EOR = 90 − Lat Angles of triangle
R'OZ = 90 − Lat Opposite angles
Tilt t = 90 − Lat From vertical
    = Lat From horizontal

Consider triangle EOR:

  ER = Re.Cos(Lat)  
  OR = Re.Sin(Lat)  

Consider triangle ESP:

  EP = Rc.Cos(DLong)  
  SP = Rc.Sin(DLong)  

Consider triangle SRP:

  RP = EP − ER  
RP = Rc.Cos(DLong) − Re.Cos(Lat)  
  Tan(DLongR) = SP / RP Definition of Tan
Tan(DLongR) = Rc.Sin(DLong) / [Rc.Cos(DLong) − Re.Cos(Lat)] Substitute SP & RP
DLongR = ArcTan { Rc.Sin(DLong) / [Rc.Cos(DLong) − Re.Cos(Lat)] }  

Consider triangle SRP:

  SR² = SP² + RP² Pythagoras' Theorem
SR² = Rc².Sin²(DLong) + [Rc.Cos(DLong) − Re.Cos(Lat)]² Substitute SP & RP
SR = √{ Rc².Sin²(DLong) + [Rc.Cos(DLong) − Re.Cos(Lat)]² }  

Consider triangle OSR:

  Tan(b) = SR / OR Definition of Tan
Tan(b) = √{ Rc².Sin²(DLong) + [Rc.Cos(DLong) − Re.Cos(Lat)]² }
Substitute SR & OR
Beam b =

The following tables give examples of DLongR and Beam (defined here as the angle SOR between an incoming sat signal SO, and a rotor axis OR perpendicular to the Clarke Belt):

Angle DLongR Turned By Rotor (Axis Perpendicular To Plane Of Clarke Belt)
Actual Difference In Longitude (DLong)

Note that:


Beam Angle Between Clarke Satellite And Rotor Axis (Perpendicular To Plane Of Clarke Belt)
Actual Difference In Longitude (DLong) Range Midrange
01020304050607080 0-400-600-80 0-400-600-80
Max 0.2050.4160.647 

Results are classified to reflect the common rotor ranges.  Note that:

When setting up the rotor, the error in DLongR tracking around the Clarke Belt is a given, unalterable feature of the rotor.  Most rotors step through divisions of 0.1°.

However the Beam setting can be optimised by using the midrange value shown above for the rotor's range.  This halves the intrinsic error to 0.11° for a ±40° rotor and 0.21° for a ±60° rotor.

Although this seems common sense, actually proving it is not straightforward and requires vector manipulation with matrices.  Although much work, it yields a powerful analytical tool.

Coordinate axes have already been defined  -  X South and Y East in the northern hemisphere, opposite in the southern, Z vertically up.  Mathematical convention has a +ve rotation anti-clockwise looking from +ve to −ve, which for Y happens to be opposite to the one in the Settings Analysis.

'Perfectly' aligning a conventional fixed dish on a sat can then be modelled by moving a unit vector initially pointing along the X-Axis, as follows  ...

  1. Rotation of the coordinates about the Z-Axis through DLongA
  2. Rotation about the (rotated) Y-Axis through −Elevation

Mounting a rotor and turning it to a sat can be modelled by the mathematically inconvenient ...

  1. Rotation about the Y-Axis through −(90−Tilt), measured from horizontal (maps Z onto rotor axis)
  2. A further rotation about the Y-Axis through 90−Beam
  3. Rotation about the (first rotated) Z-Axis through DLongR

... but the following is equivalent and (if less practical in real life) mathematically easier ...

  1. Rotation about the Y-Axis through −(90−Tilt) = Tilt−90
  2. Rotation about the (rotated) Z-Axis through DLongR
  3. Rotation about the (rotated) Y-Axis through 90−Beam

The angle between the resulting vectors is the intrinsic error from using an approximate mechanism of a single axis rotor rather than an exact mechanism able to point in any direction.

The following mathematical models derive from matrices representing the two component rotations:

   Cos(y)  0  −Sin(y)      Cos(z)  Sin(z)  0  
Ry(y) =  0  1  0  (5)     Rz(z) =  −Sin(z)  Cos(z)  0  (6)
   Sin(y)  0  Cos(y)      0  0  1  

Fixed = Rz(zF) × Ry(yF) × (1, 0, 0)  where zF = DLongA, yF = −Elevation

  Cos(zF)  Sin(zF)  0   Cos(yF)  0  −Sin(yF)   1 
 =  −Sin(zF)  Cos(zF)  0  ×  0  1  0  ×  0 
  0  0  1   Sin(yF)  0  Cos(yF)   0 
  Cos(zF).Cos(yF)  Sin(zF)  −Cos(zF).Sin(yF)   1 
 =  −Sin(zF).Cos(yF)  Cos(zF)  Sin(zF).Sin(yF)  ×  0 
  Sin(yF)  0  Cos(yF)   0 
 =  −Sin(zF).Cos(yF) 

Rotor = Ry(y1) × Rz(zR) × Ry(y2) × (1, 0, 0)  where y1 = Tilt−90, zR = DLongR, y2 = 90−Beam

  Cos(y1)  0  −Sin(y1)   Cos(zR)  Sin(zR)  0   Cos(y2)  0  −Sin(y2)   1 
 =  0  1  0  ×  −Sin(zR)  Cos(zR)  0  ×  0  1  0  ×  0 
  Sin(y1)  0  Cos(y1)   0  0  1   Sin(y2)  0  Cos(y2)   0 
  Cos(y1).Cos(zR)  Cos(y1).Sin(zR)  −Sin(y1)   Cos(y2)  0  −Sin(y2)   1 
 =  −Sin(zR)  Cos(zR)  0  ×  0  1  0  ×  0 
  Sin(y1).Cos(zR)  Sin(y1).Sin(zR)  Cos(y1)   Sin(y2)  0  Cos(y2)   0 
  Cos(y1).Cos(zR).Cos(y2)−Sin(y1).Sin(y2)  Cos(y1).Sin(zR)  −Cos(y1).Cos(zR).Sin(y2)−Sin(y1).Cos(y2)   1 
 =  −Sin(zR).Cos(y2)  Cos(zR)  Sin(zR).Sin(y2)  ×  0 
  Sin(y1).Cos(zR).Cos(y2)+Cos(y1).Sin(y2)  Sin(y1).Sin(zR)  −Sin(y1).Cos(zR).Sin(y2)+Cos(y1).Cos(y2)   0 
 =  −Sin(zR).Cos(y2) 

Hence, the direction cosines for the vectors (both are unit vectors so denominators = 1) are ...


... and the rotor's intrinsic tracking error, e, is then the angle between the two vectors ...

e = ArcCos(aF.aR + bF.bR + cF.cR)

... substituting the direction cosines ...

e =
 + Sin(zF).Cos(yF).Sin(zR).Cos(y2)
 + Sin(yF).[Sin(y1).Cos(zR).Cos(y2)+Cos(y1).Sin(y2)]

... substituting the rotations ...

e =
 + Sin(DLongA).Cos(−Elevation).Sin(DLongR).Cos(90−Beam)
 + Sin(−Elevation).[Sin(Tilt−90).Cos(DLongR).Cos(90−Beam)+Cos(Tilt−90).Sin(90−Beam)]

... which can be simplified as follows ...

  Cos(−A) = Cos(0 − A)  
Cos(−A) = Cos(0).Cos(A) + Sin(0).Sin(A) Compound Angles (4)
Cos(−A) = Cos(A)  
  Sin(−A) = Sin(0 − A)  
Sin(−A) = Sin(0).Cos(A) − Cos(0).Sin(A) Compound Angles (2)
Sin(−A) = −Sin(A)  
  Cos(90 − B) = Cos(90).Cos(B) + Sin(90).Sin(B) Compound Angles (4)
Cos(90 − B) = Sin(B)  
  Sin(90 − B) = Sin(90).Cos(B) − Cos(90).Sin(B) Compound Angles (2)
Sin(90 − B) = Cos(B)  
  Cos(C − 90) = Cos(C).Cos(90) + Sin(C).Sin(90) Compound Angles (4)
Cos(C − 90) = Sin(C)  
  Sin(C − 90) = Sin(C).Cos(90) − Cos(C).Sin(90) Compound Angles (2)
Sin(C − 90) = −Cos(C)  

... giving (retaining version with explicit Tilt for later use) ...

e =
 + Sin(DLongA).Cos(Elevation).Sin(DLongR).Sin(Beam)
 + Sin(Elevation).[Cos(Tilt).Cos(DLongR).Sin(Beam)−Sin(Tilt).Cos(Beam)]

... but here Tilt = Lat ...

e =
 + Sin(DLongA).Cos(Elevation).Sin(DLongR).Sin(Beam)
 + Sin(Elevation).[Cos(Lat).Cos(DLongR).Sin(Beam)−Sin(Lat).Cos(Beam)]

... where Lat is given and DLongA, Elevation, DLongR, Beam are as previously calculated.

The following table lists intrinsic rotor error over both common ranges, assuming:

Intrinsic Rotor Error (perpendicular axis, midrange elevation, rotor step = 0.1°)
±40° Rotor ±60° Rotor
BeamLongitude Difference (DLong)Max BeamLongitude Difference (DLong)Max
010203040 0102030405060
8081.330.030.040.03 0.0481.360.060.060.05 0.06
Max 0.11 0.21

Note that:

Some sites give rotor tilts leaning slightly forward from perpendicular towards the Clarke Belt.  Depending on rotor range and latitude, such 'forward' tilts can significantly reduce the intrinsic errors above, as can be gauged using the previous vector analysis.

Taking the previous result with explicit tilt, it only remains to supply tilt and beam settings, but what should these be?  It may be possible to derive suitable values for each latitude and rotor range proved to give minimum overall error, but I have tried and been unable to do so.  Instead, what follows is a procedure that gives the best results I've seen so far.

Since error increases with DLong/A/R as the beam falls increasingly short of the Clarke Belt, start with the correct beam setting for (note, rotational) DLongR = 90°.  However, that beam will overshoot at DLong = DLongA = DLongR = 0°.  Therefore, tilt the rotor forward by the overshot angle to bring the beam back onto the Clarke Belt there.

When DLongR = 90°, P is coincident with R, and the angles can be calculated as follows ...

Consider triangle ESR:

  SR² = SE² − ER² Pythagoras' Theorem
SR² = Rc² − Re².Cos²(Lat) Substitute SE & ER
SR = √[ Rc² − Re².Cos²(Lat) ]  

Consider triangle OSR:

  Tan(Beam90) = SR / OR Definition of Tan
Tan(Beam90) = √[ Rc² − Re².Cos²(Lat) ] / Re.Sin(Lat) Substitute SR & OR
Beam90 = ArcTan { √[ Rc² − Re².Cos²(Lat) ] / Re.Sin(Lat) }  
  Tilt = Lat + ( Beam90−Beam0 ) Beam0 from earlier table

The following table lists intrinsic rotor error for 'forward' tilts over the same ranges, assuming:

Intrinsic Rotor Error (forward axis beam90 − beam0, beam90, rotor step = 0.1°)
Tilt Beam Longitude Difference (DLong) Max
0102030405060 0-400-60
8080.2281.520.000.040.02 0.040.04
Max 0.100.11

Practical usefulness will be limited by rotor and dish scale accuracy, and may be doubtful for ±40° rotors, perhaps excepting mid-latitude problem systems, but more probable for ±60° rotors.