Rotator Control 1.32 for HyGain HAM-IV

This page describes how I created an Arduino controlled rotator control unit and should give you enough materials to build your own.

Control unit of OK1BIL Rotator control

Rotator Control 1.32

We wanted to setup a 2m VHF contest station in  our ham radio club OK1OUE/OK7O but we had one problem. We had a main HyGain HAM-IV rotator unit from past but we did not have any useful control box for it. So I deciced to build my own using Arduino Uno. We agreed on some requirements:

  • Azimuth should be entered using integrated keypad
  • Current azimuth should be shown on large display (no HD44780 stuff)
  • Manual turning buttons should be available
  • Rotator can be stopped any time while turning

The HyGain rotator series unit has following specs:

  • 24V AC motor for turning
  • 24V AC solenoid brake
  • 500Ω potentiometer as azimuth sensor
  • integrated end switches

This gave us one thing we had to focus on. If you have a rotator with brake you should first release the brake and then start turning the motor. There should definitely be some delay between these two operations. Gears inside the rotator give it an enormous power (You want to turn your huge antenna system even in wind, don’t you?). So it can fairly easily damage the brake.

Important note: Our rotor was previously modified, whole potentiometer circuit has been isolated from the motor and now uses separate wires. In the original design from 1970s the center pin of potentiometer was connected to ground wire which was also used as common wire for AC motor. This might have been proper solution in 1970s, but it is not acceptable for digital measurements. Sure, there are options how to measure the old circuit, but I strongly recommend separating the measuring logic from power circuit.

Display board

For the display board I decided to use 74HC595N shift registers as they are easy to use with Arduino’s shift_out() function.

Edit: In original circuit I used a basic shift register IC, but there are some specialized shift registers for driving LED diodes or  7 segment displays. Just google constant current sink or led driver ic. Such ICs provide constant current sink, so you don’t have to use current limiting resistors.

Display board schematic

Display board

Keypad board

I used 3×4 matrix keypad usually available in most of the stores here. At first I wanted to plug it directly to Arduino but I then realized that there is not enough digital pins. There are some solutions like buying Arduino Mega 2560, which would be waste of money and resources or using resistor net and analog input pin of Arduino which would not be very RFI immune. I found nice and clean solution: I used PCF8574P Remote 8-bit I/O expander for I2C-bus with I2C keypad library for Arduino.

Keypad board schematic

Keypad board

Relay board

I had one relay board laying around from one of my previous projects so I used it for rotator motor switching. It consists of three 5V relays, two for left and right direction and one for brake. You can use any relay you find like 12V or 24V coil, it just depends on which voltage is available – I used 5v because I already had this voltage for Arduino. To build your own you should use the transistor driver and protection diode. You can find nice example on Arduino website.

Arduino shield

In order to put all together I also developed a shield for Arduino. Shield is a board which sits on top of the Arduino board and acts like a module for Arduino. It has standardized dimensions, shape and electrical interface. This shield routes all wires from other boards to correct  pins of Arduino, adds voltage regulation and offset setting.

Let’s describe the offset setting more in detail. Usually the sensor potentiometer in rotator does not go from end to end which would mean 0Ohm to 500Ohm for example. So you have to setup a lower and upper offset so degrees are computed correctly.  I put two trimpots on board set up us voltage dividers, each connected to one analog input of Arduino. To set up the offsets you have to do following:

  1. Turn your rotator manually CCW to 0° azimuth.
  2. Use screwdriver to set the lower offset trimpot, find the setting where display shows 0 (zero).
  3. Turn rotator manually CW to 360° azimuth.
  4. Set he upper offset trimpot, find the setting where display shows 360.

Another function of the Arduino shield is connecting buttons for manual turning left and right. These buttons were not considered in original design and therefore the schematic and PCB don’t have any connections for them. You can modify the board in Eagle or you can do it as I did. I simply soldered two pull-down (10k) resistors and wires from buttons directly to the pins on the shield. Check this example for more information.

Important note: For the calibration and all movements of rotator it is essential, that you don’t exchange the wires from sensor potentiometer and also from relays. Sensor potentiometer is connected as voltage divider to ADC converter (measuring voltage). Just check that when you press “turn right” button that the rotator is turning CW, if not exchange the wires in right and left relays. Then try turning rotator again and watch display. When turning right (CW) value on display should increase, if it is decreasing exchange wires from sensor potentiometer. Center pin of potentiometer stays on it’s place, you only exchange Ucc (5V) and Gnd (0V).

GS 232B PC Control

I used Arduino Uno with USB port, so I installed it to the back of the control unit box to make the port accessible. That gave us field upgradeable firmware feature. Later I got an idea to implement some rotator control protocol. I chose the Yaesu GS 232B protocol because it is quite a clear standard.  I implemented it only in a testing version with only  few commands. But it seems to work quite well with HRD Rotator and with PstRotatorAz.


To sum up, the rotator control unit met our requirements in the club and proved itself usable in contests. We tested it in Easter VHF Contest 2012, Witches Burning VHF Contest 2012 and 2nd Subregional VHF Contest. Apart from contests we also used it for some 6m ES contacts in 2012 season.


Version 1.3 was the first usable version of firmware.
Version 1.31 I fixed bug which disabled manual turning buttons when rotator movement was interrupted by # or *.
Version 1.32 I fixed bug which caused that HRD Rotator was showing nonsenses when azimuth was below 100°.



© 2016 OK1BIL Suffusion theme by Sayontan Sinha