Arduino Rotator Computer Interface and Controller

Articles

This is an Arduino-based rotator interface that interfaces a computer to a rotator or rotator controller, emulating the Yaesu GS-232A/B, Easycom, and DCU-1 protocols which are supported by a myriad of logging, contest, and control programs.  It can be easily interfaced with commercial rotator control units.  With the addition of a proper capacity power supply and several interface components such as relays, this unit could also serve as a total replacement for a rotator control unit or serve as the basis for a 100% homebrew rotation system.  Several azimuth and elevation position sensors including potentiometers, rotary encoders, and I2C devices are supported.  The code is very flexible, modular, and easy to read allowing intermediate and advanced experimenters and builders to customize it.

The Radio Artisan YouTube channel has several video tutorials and demonstrations, and numerous videos can be found from other builders.

Video featuring Bent Andersen, OZ1CT, and the rotator controller he built using the K3NG Rotator Controller code.

Here’s a nice video from Freeman Pascal demonstrating his customized K3NG Rotator Controller build.

Looking for a PC board or kit?  Try these fine folks:

EA4TX offers a kit with an enclosure and LCD Display

RemoteQTH.com offers a kit with an LCD and AC / DC motor support

Major Features

  • Azimuth only and azimuth / elevation rotator support
  • Serial interface using the standard Arduino USB port
  • Control Port Protocol Support:
    • Yaesu GS-232A & GS-232B
    • Easycom
    • DCU-1
  • Support for position sensors:
    • Potentiometers / Analog Voltage
    • Rotary Encoders
    • Incremental Encoders
    • Pulse Output
    • HMC5883L digital compass
    • ADXL345 accelerometer
    • LSM303 digital compass and accelerometer
    • HH-12 / AS5045
    • A2 Absolute Encoder (under development)
  • LCD Display (2 or 4 rows, at least 16 columns)
  • Nextion TFT Touch Display Support
  • Can be interfaced with non-Yaesu rotators, including homebrew systems
  • Directional indication on LCD display (North, South, North Northwest, etc.) along with degrees
  • Intelligent automatic rotation (utilizes overlap on 450 degree rotators)
  • Support for both 360 degree and 450 degree azimuth rotators or any rotation capability up to 719 degrees
  • North Center and South Center support
  • Support for any starting point (fully clockwise)
  • Optional automatic azimuthal rotation slowdown feature when reaching target azimuth
  • Optional rotation smooth ramp up
  • Optional brake engage/disengage lines for azimuth and elevation
  • Buttons for manual rotation
  • Command timeout
  • Timed interval rotation
  • Overlap LED Indicator
  • Help screen
  • Speed Control, both single PWM output (compatible with Yaesu controllers) and dual PWM rotate CW and rotate CCW outputs and dual elevate up and elevate down outputs
  • Variable frequency outputs
  • Preset Control using either potentiometers or rotary encoders with optional preset start button
  • Speed Potentiometer
  • Manual Rotation Limits
  • Classic 4 bit, Adafruit I2C LCD, Yourduino.com, and various other I2C display support
  • Optional tenth of a degree support with Easycom protocol (i.e. 123.4 degrees)
  • Park button
  • Azimuth and elevation calibration tables
  • Host unit and Remote unit operation for remotely located sensors using two Arduinos or ATMega chips
  • Works with hamlib rotctl/rotcltd, N1MM, PST Rotator, and many more programs
  • Moon and Sun Tracking
  • GPS Interfacing
  • Realtime Clock Interfacing

This unit can be interfaced with Yaesu rotator controller using the standard 6 pin DIN port on the back.  Older controllers may not have the DIN interface and will require opening and soldered connections.  This unit does not disable the rotator controller and all controls on it can continue to be used (although it is advisable not to attempt to control the rotator with manual controls and with the interface simultaneously.)  Other rotator hardware can be interfaced as well with a little research and design.

Basic Schematic

Schematic (click to enlarge)

Note: Refer to the pin numbers on the inside of the Arduino component outline (i.e. D1, D2, A0, A1, etc.) and not the numbers on the outside of it (1, 2, 3…).

The schematic above shows a basic setup supporting a 4 bit interface LCD, azimuth and elevation voltage inputs, manual buttons, and a single variable speed voltage output.  Additional controls and options such as an azimuth present potentiometer, azimuth and elevation preset rotary encoders, and brake control lines can be added as needed if the appropriate pins are chosen and set in code at compilation time.  If using with an azimuth-only rotator, all components related to elevation can be omitted.  So, again, keep in mind the above schematic is a basic unit that will work for most applications and additional features will require additional components.

I have this unit interfaced to a Yaesu GS-1000DXA control unit, and others have interfaced it to various other rotator control units.  I’m also building a complete azimuth/elevation rotation system called Frakenrotator.  This project illustrates how to build a complete system without a commercial control unit.  Consult this for additional ideas for interfacing, power supplies, and master/slave operation.

Documentation

Full documentation is located here.  Please read it!  Volunteers for maintaining documentation are needed.

Acknowledgements

John, W3SA, has tested on a Yaesu Az/El unit, contributed several updates to the elevation code, and tweaked the code for a 16 column LCD display.

Anthony, M0UPU, wrote about his rotator controller construction and is offering PC boards.

Bent, OZ1CT, has contributed several ideas and feature requests, and performed testing.

G4HSK has a nice page documenting his project using this code, the PstRotator control software, and a Yaesu G-5500 rotator.

All trademarks mentioned on this page and in the code are property of their respective owners.

Source Code

Source code is located on GitHub.  Click the Download ZIP button to get the whole package of files.

Support and Feature Requests

Please consult this page for support information.  Feature requests and bugs are documented and tracked on GitHub.

Various video tutorials, demonstrations, and development news updates can be found on the Radio Artisan YouTube channel.

Please note that I do this work in my spare time as I can and I am not a professional developer, however I play one on TV.  I do my best to answer support requests,  however I don’t like having to answer questions for items that are explained in the documentation.  Development items are prioritized by me based on the level of difficulty and what I’m interested in.  I welcome code contributions, code testing, bug reports, and any help you can provide.  This can even be helping with documentation or providing support to others on the Radio Artisan Groups.io group.