Project Update

A few years have passed since I've looked at this project. But now that I have re-built my 144MHz antenna array it is a perfect opportunity to clean up and rebuild my moon tracking hardware. Particularly so now that I am in an environment with a lower rf noise floor and I am able to see the noise generated by the current hardware (mostly due to the colour tft display).

So the main aims for the version 3 build:
  • Reduce the radiated noise emission from the hardware:
    • Make a 2 layer PCB with better groundplanes.
    • Build the hardware into a screened aluminium box.
    • Add more RFI filtering to all inputs and outputs.
  • Replace the display:
    • Improve readability and contrast (particulary in daylight).
    • Speed up display refresh.
    • Increase font size.
    • Consolidate Display data to make for a less cluttered look.
  • Re-write the menu system to make it more user-friendly
  • Allow for future expansion by providing a USB port and a GPS input.

I am finding that a 128x64 pixel monochrome LCD is quite readable, and allows for nice large fonts. The lack of colour is not an issue, and the display refresh rate is quite respectable now.

I also took the time to re-organise some of the software (especially within the menu tree), and fix up a few small bugs that got through the last build.
The accuracy of the astonomical calculations remain unchanged at better than +-0.1deg. Atmospheric refraction has been added to the calculations to improve accuracy at rise and set times. Doppler calculation has also been improved and is now within a few tens of Hertz at 1296MHz.
The Real Time Clock (RTC) has been replaced with a more accurate IC which boasts an internal laser trimmed oscillator.
A USB converter and RS232 driver have been added to allow for future expansion. Automatic backlight dimming has also been incorporated.

The update has been well worth the effort - I can no longer detect any noise at all eminating from the new hardware.


Hardware Design

The ATMEGA64 microcontroller remains at the heart of this project. It is used for all the astronomical calculations, motor control and user input (via a 5 button key-pad, with an on-screen menu style User Interface.

So first to the encoder. After some searching, I have found a suitable compromise between accuracy, resolution and cost: A 12-bit absolute rotary encoder made by Georg Hylinski, DF1SR (Useful Links). It uses a AS5045 magnetic rotary sensor IC, and is housed in a standard potentiometer case for easy mechanical integration.
The HH-12 uses a 3-wire Synchronous Serial Interface, and requires a 5V supply. I decided to use a bit of signal conditioning to improve the noise immunity and provide a modicum of protection against induced noise spikes, so I used a MAX232 RS232 level converter to provide a bipolar signaling scheme to run between the encoders and mooncam hardware.
This is NOT an RS232 interface, it just uses the same voltage levels as RS232.
The encoder is coupled directly to the mast using a modified form of a "spirolator", published by Ed Gray W0SD in 1989. I first came across this idea in the EME Newsletter Collection of Geert PA3CSG (Useful Links). The mechanical accuracy of this system depends upon:

  • The stretch in the string
  • The pulley diamater vs mast diameter
  • Slippage on the pulley

Schematics for the new hardware, as well as some photos, as shown below. The resolution of the new system is now better than 0.1 degree in azimuth and the new integrated motor drive has cleared some valuable desk space.

Microcontroller, display, RTC, user input and signal conditioning
Power supply and motor drive
Sensor signal conditioning
The 12-bit magnetic encoder and signal conditioning PCB are mounted at the antenna (One each for azimuth and elevation, respectively)
2-layer PCB design makes for a neat project, as well as providing a good ground plane for EMI reduction
This simple mechanical coupling works surprisingly well. The pulley has the same root diameter as the mast section (obviously)
A very simple and clean front panel

The mechanical coupling between the mast and azimuth encoder works much better than I expected. I have detected no slippage thus far.


Software Design

The software can be divided into 3 basic sections:

  • Astronomical calculations
    • Moon position, distance, right ascension and declination
    • Moon doppler shift
    • Sun position
    • Leo, Pictor and Aquarius Position
    • Background sky temperature
  • Antenna control
    • Positional feedback signal conditioning
    • Motion limits
    • Hysteresis settings
    • Automatic and manual antenna control settings
  • User interface
    • Display control
    • Linked list menu system
    • User data storage and manipulation
      • Geographic location
      • Time and date
      • Position feedback calibration
      • Rotator mechanical limits
      • Frequency
      • Antenna home position
    • Keypad debounce
    • Display brightness

A good place to start with celestial mechanics is (of course) the internet (Useful Links). Much may also be learned from Meuus "Astronomical Algorithms" and Duffett-Smith and Zwart "Practical Astronomy with your Calculator or Spreadsheet"

As it turns out, the code for the astronomical calculations requires only a small amount of fancy footwork - mainly required to ensure errors due to rounding and truncation are minimised. The resulting pointing errors are worst at moon rise and moon set times, and are around +-0.1deg. Given my parabolic reflector antenna has a beamwidth of around 7deg, this error can be safely ignored. As my antenna motors have no speed control, a simple Bang-Bang controller was coded, with some independent user selectable hysteresis limits to avoid hunting.

A further useful feature added was the ability to compute the background Sky Temperature, which gives an indication of whether or not the moon is in a "quiet" part of the sky (as seen by an observer on earth). This calculation requires the use of an all sky temperature map. Fortunately, the excellent work published by Haslam et al is available for download ( Useful Links). Shown on the right is the sky temperature plotted from the Haslam dat set, in galactic co-ordinates, measured at 408MHz.

The data set is large (Haslam's resolution is approximately 0.8 degrees). This results in a lot of data to shoe-horn into a small 8-bit microcontroller. Moreover, such resolution is not needed for Amateurs, as we are unable to achieve shuch small beamwidths. So we must integrate the data to allow for a lower resolution (bigger beamwidth in the antenna). I have taken the data and filtered and re-sampled it so as to provide a more meaningful sky temperature number, as well as fit into a microcontroller.Shown shown to the left is my filtered and decimated data set. The data set is small enough to reside within the memory of the microcontroller, but provides enough resolution to produce meaningful sky temperature numbers.

The control system is ultimately limited by the mechanical backlash and dynamics of the rotator motors. In my case, the backlash is around 0.4 degrees.