Constructing another K3NG Rotator Controller

I recently spent a day helping a friend setup his new rotator and single 8 element yagi for EME operation. The weather was kind to us and after a few hours work we had everything aligned as best we could.  This exercise brought back memories of when I first started on EME and one thing that struck me was realising again how tricky it can be at times to position the antenna based on the standard Azimuth (AZ) and Elevation (EL) meters in the Yaesu G-5500 controller. Each division on the AZ and EL meters is 15 and 7.5 degrees respectively. Now it’s not as if we’re working with a large dish, so we don’t need to be super accurate, but at the same time we do want as much of our RF to be reflecting back off the Moon as possible, so we don’t want to be pointing off. When you’re a small EME station every little bit of a dB is key to making that QSO possible.

I’d been gathering  parts to build another K3NG rotator controller but this time to work with a Yaesu G-650C rotator that  will replace the very old G-400 currently used on my VHF / UHF terrestrial system. So I decided that if I was going to make one, then I may as well make two units while I’m at it!

What follows next is a series of photos and notes that detail my approach to the first of the two units and more importantly what I learnt on the way. Things have changed since I built my original one!

I decided to use a sheet of copper strip board and mount or solder the other components and modules on it. The photo below shows the approach adopted.


Unlike the G-5500 rotator the G-650C does not use relays in the control unit to switch the power to the rotator motor. So the new unit would have to include relays. I chose to use one of the readily available 4 port relay modules. In practice the G-650C really only needs 2 relays (for CW and CCW) but I decided to go for 4 so that the new unit could be used with different rotators if needed.

The board and LCD display would be housed in a standard Hammond / Eddystone die-cast box. This type of enclosure tends to house the majority of my projects   🙂

The following photos give an idea of the stages of construction and the finished item.

This slideshow requires JavaScript.

Once the construction was completed I made up the interconnecting lead that goes between the K3NG controller and the G-5500 controller. Here I used an 8-pin microphone plug and socket on one end and the standard 8-pin Din plug on the other end. When I eventually come to make the simple modification to the G-650C controller to interface with the K3NG controller I will fit the same 8-pin Din socket.

With the hardware completed I envisaged that it would be a simple case of downloading the latest K3NG Arduino (software) sketch and we’d be ready to run the calibration and be all set to go… wrong!

Now it’s about 4 years since I built my first K3NG controller and it has worked flawlessly. As a result, I’ve paid little attention to all the enhancements that Anthony and others have made to the very early sketch that I originally used. So here I am with new hardware (that now also includes a relay board) and the latest sketch. This all led to a number of lessons being learnt, none of them major but they all had an impact on the overall project.

The first lesson was that there are now so many excellent features available in the software that this has resulted in the Arduino UNO being a little on the small side memory-wise. In fact with just the basic features enabled the Arduino IDE gives a warning when uploading the sketch. I believe the recommendation now is to maybe use an Arduino Mega. As I didn’t need all the latest bells and whistles I decided to use a much earlier (and smaller) version of the software.

When running through the calibration process I realised that my G-5500 rotator doesn’t actually do a full 450 degrees AZ rotation; it stops short at 445. This is not a major issue, in fact it proved to be a very useful thing because it helped me discover the workings of the sketch and  EEPROM memory that’s used in an Arduino. It would seem that making a change to the value on “#define AZIMUTH_ROTATION_CAPABILITY_DEFAULT 450” (this value is stored in EEPROM) and uploading the changed sketch does not change what is stored in EEPROM memory unless it’s the first time you’re uploading to a new Arduino or the EEPROM has been reset. I discovered this when running the Serial Monitor tool and debug (\d). Now the values stored in EEPROM should not really need to be changed once you have set them correctly, but if you make a mistake or need to change them, maybe to use with another rotator then this is important to know.

My next lesson was all to do with the “new” relay board. I was having problems with the rotator always stopping approximately 7 degrees off the target heading. I would set the antennas to rotate to say 180 degrees, and they would stop at 174. This would happen if I set the heading using the Serial Monitor or PstRotator. I had never experienced this with the original controller. I was using the same rotator, cabling and calibration method so I put it down to something different in the later version of the sketch. After spending time working my way through the code I decided that it wasn’t software related. Unfortunately I couldn’t upload my original sketch as I’m embarrassed to say that it was “lost” during one of many PC changes over the years, although I’m certain it’s on some backup media somewhere! Finally the penny dropped! When doing the calibration routine none of the relays were energised. When the rotator was rotating to a target heading one of the relays was energised and the current drawn (~25mA) by that relay was causing a very small voltage drop which in turn caused the ~7 degree error. This meant that the relay board could not be powered off the 5V pin on the Arduino. To resolve this I decided to power the relay board from the Yaesu controller which fortunately provides ~16VDC on the interface connection. The addition of a simple 5V regulator overcame the problem. Now everything tracks as it should   🙂

Here’s a photo of the finished unit, with the 5V regulator.


For my third (and for now final) version I’ve adopted a very simple approach to the construction. The LCD display is a nice-to-have feature but not really necessary, especially if the controller is used with PstRotator as all the display information is still available. PstRotator will show where the antennas are rotating to and where they are at any point, plus a whole host of other useful information. Not having the LCD display also means that the boxing up of the unit is so much easier as the enclosure doesn’t need the large rectangular cut-out   🙂

Here’s a photo showing just how basic the controller board can be:


K3NG controller – simple construction method

Once again copper strip board is used but the Arduino is attached to the board using single row 2.54 mm header strip.

For completeness I did add the four extra header pins so that an I2C LCD display could be added at some point in the future without having to re-work the board.

This board will soon bee in use at another EME station. What sort of enclosure it will end up in remains to be seen. Maybe its new owner will simply use a plastic container just as I did initially with my first controller…   🙂

These are my experiences; I hope they prove useful to others.

This entry was posted in Arduino, Blog, EME. Bookmark the permalink.