This is an Arduino-based rotator interface that interfaces a computer to a rotator or rotator controller, emulating the Yaesu GS-232A/B and Easycom 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.
Video featuring Bent Andersen, OZ1CT, and the rotator controller he built using the K3NG Rotator Controller code.
Looking for a PC board or kit? Try these fine folks:
- Azimuth only and azimuth / elevation rotator support
- Serial interface using the standard Arduino USB port
- Control Port Protocol Support:
- Yaesu GS-232A
- Yaesu GS-232B
- Support for position sensors:
- Potentiometers / Analog Voltage
- Rotary Encoders
- Pulse Ouput
- HMC5883L digital compass
- ADXL345 accelerometer
- LSM303 digital compass and accelerometer support under development
- LCD display (2 x 20 preferred, but any LCD over 15 columns supported)
- 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 slow start (now with 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, and Yourduino.com 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
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 controllers can be interfaced as well with a little research and design.
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.
Full documentation is located here. Please read it!
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.
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.
I will donate parts, units, or specially customized software for DXpeditions. Email me at anthony dot good at gmail dot com. DX IS!
Source code is located on SourceForge. The master tree is the main stable release tree and is what you should use for production units.
Support and Feature Requests
Please consult this page for support information.
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 here in the documentation. I do maintain a list of feature requests. 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 discussion group.