Rotator Mk1 - SARCNET

School Amateur Radio Club Network
School Amateur Radio Club Network
School Amateur Radio Club Network
School Amateur Radio Club Network
Title
Go to content
Mini Satellite-Antenna Rotator Mk1
This project is a portable device used to automatically point a directional antenna towards an orbiting satellite. It takes all the effort out of little kids holding the antenna and figuring out where to point it. It allows students to talk through Amateur Radio satellites or download weather satellite images. Note: This is a complex DIY project for the advanced kit constructor.

Here is the whole SARC crew out on the playground at lunchtime with Julie and Mr. Michael Day, their principal. They are using our solar-powered, portable, amateur radio satellite receiving station to communicate through AMSAT FO-29. Let's see what they've got going:
  • 20W solar panel
  • 10A MPPT Solar Charge Controller
  • 12V 7AH SLA Battery
  • 12V-USB Power Converter
  • Raspberry Pi, running Gpredict and Hamlib rotctld/rigctld
  • LCD Monitor, Mouse and Keyboard
  • Dual-band Arrow antenna
  • Yaesu FT-817 transceiver
  • Our Mini Satellite-Antenna Rotator

Description
Here is the draft of our original article which appeared in the May 2016 edition of Amateur Radio magazine. Warning: The Mini Satellite-Antenna Rotator is not suitable for unattended operation or permanent outdoor installation. Any malfunction can cause harm or serious damage.

This is the original version. A cheaper version is shown below. You can even mix and match components if you like. All prices shown in Australian dollars and were correct in 2018.

Parts List (Mk1a Version)
This is the original version. A cheaper version is shown below. You can even mix and match components if you like. All prices shown in Australian dollars.

Parts List (Mk1b Version)
This is the half-price version, specifically developed for the schools involved in the Melbourne Space Program. It uses a polycarbonate enclosure with a cheaper sensor, motor driver and no fancy PCB connectors.

Parts List (Mk1c Version)
This is the AC Motor version for the Channel Master TV antenna rotators. It uses an Aptinex, 4-channel, opto-isolated, Triac, Driver Board. There is a video of the working controller is here and a video of the working rotator here. Note that the Azimuth rotator has to be modified using this modification procedure to remove the 360-degree stop pins. Caution: This modification will void the warranty. Note: The last step in the procedure requires you to drill out the two stop pins without leaving any metal swarf in the gearbox - piece of cake :-).

Project Status (Updated: 28 June 2024)
  • Total number of reported builders: 1717

Please update your status by e-mailing us. You can send us pictures and reports of your progress.
Latest Software

Please do NOT email the kind folk below. Please be patient: We typically reply in 24 hours, but it may take longer to reply.

Release 1: Original release.

Release 2: Added support for hamlib 3.0.1. Added debug mode.

Release 3: Improved calibration and operation.

  • Added a low pass filter to the sensor data to improve calibration.
  • Reinitialised the I2C bus and sensor prior to each read to avoid I2C lockups caused by power glitches
  • Changed Serial to Serial1 for RS-422 operation

Release 4: Improved calibration and operation.

  • Fixed a bug reading the EEPROM calibration data on some versions
  • Made the SerialPort configurable to support both the Mk1 (USB) and Mk2 (RS422) rotators
  • Added a speaker output to help with the calibration process
  • Removed the overshoot inherent in the anti-windup algorithm
  • Initialised the sensor filters at start up
  • Added a pause command, as requested
  • Added a help menu, as requested
  • Clarified sensor axis definitions

Release 5: Changes to support the half-price Mk1b version.

  • Added compiler option for either the original LMD18200T or the cheaper L298N DC Motor H-Bridge Driver Boards
  • Added compiler option to set the driver board type and the pins used
  • Note: Only PWM pins 5, 6, 9 or 10 can be used for PWM motor drive output
  • Added compiler option for either the original LSM303D or the cheaper LSM303DLHC Accelerometer/Magnetometer
  • Replaced the passive piezo speaker with an active piezo buzzer to help with the calibration process (since there were not enough PWM outputs)
  • Better object-oriented architecture

Release 6: Changes to support the AC Motor

  • Added compiler option to support the Aptinex 4-Channel, Opto-Isolated, Triac Driver (also available on eBay) and the ChannelMaster Rotators
  • Added a non-blocking timer class
  • Fixed a bug to support Version 1.8.8 of the Arduino IDE for Linux

P.S. To use it, simply unzip the Rotator6 folder to your Arduino IDE sketchbook folder. Please don’t forget to configure the Rotator6.ino file for the correct motor type, sensor type and serial port as follows:

//User configuration section:
//Please uncomment only one of each of the following MotorTypes, SensorTypes and SerialPort types:
//const int MotorType = PWMDIR;      //Please uncomment this line for the LMD18200T DC motor driver.
const int MotorType = FWDREV;     //Please uncomment this line for the L298N DC motor driver.
//const int MotorType = ACMOTR;       //Please uncomment this line for the triac AC motor driver.
//const int SensorType = LSM303D;   //Please uncomment this line to use the LSM303D sensor.
const int SensorType = LSM303DLHC;   //Please uncomment this line to use the LSM303DLHC sensor.
#define SerialPort Serial            //Please uncomment this line to use the USB port.
//#define SerialPort Serial1         //Please uncomment this line to use the TTL port.

The motor drive pins are: 5, 6, 9 and 10. Note: The Mk1a break pins are no longer supported or required.
The piezo buzzer pins are 16(+) and 14(-).
Status Reported by Builders
The following is a list of some of the builders who have completed the rotator and sent us their comments or pictures:

Brian VK2XTC - Brian was the first to complete assembly in May 2016: "Just letting you know the new motors arrived yesterday. These ones are now the correct 0.6RPM rather than 6RPM. They drive correctly, slow to the correct point etc. It all seems to work."

Adrian VK4KL - "Woohoo!! It's working."

Roger VK4YB - "Built it for Owen, VK4FADW and the kids at the Caboolture Historical Village." Good job Roger! Here is the result.


Frank VK2FRW - Well done Frank! "Had a problem with one motor gearbox." Frank reports it works OK with HRD. Here is a photo
Colin VK3VGB - "I have completed your Mini Satellite - Antenna Rotator project and it’s just the best !!"
Keith VK3VKS - "I purchased all the material for the Mk1 rotator and am now interested in the Mk2."
Warren VK6HM - "I have previously built your first rotator and enjoyed it immensely."
Mark VK3ZQ - "Just building a version of the Mk2 electronics to mod my original Mk1."

Robbie VK3XIN - "Great to see it working!" Robbie demonstrated his working rotator at Moorabbin and District Radio Club. It is shown here with the new piezo speaker connected:

David G4FEV - "I have been quit brutal changing parameters and changing satellites while still tracking and everything is rock solid and performing perfectly. Frankly I am astounded. It is a thing of beauty to watch as it tracks whatever I tell it to or track manually using GPredict Rotator Control." Here is David's Mk1a version with the LSM303DLHC sensor and L298N motor driver board:

Hank AB2XG - "I can't say thank you enough for this project! I've wanted to try satellites for a couple of years now and have tried hand held antennas a couple of times, always seemed like there were just too many things to do all at the same time! Made my first contact today via SO50 using this. This setup takes aiming the antenna right off of your plate of things to do! Work the radio and adjust the polarization and your into the satellite." Here is Hank's setup with the Elk antenna:

Ed WA6WGS - "Many thanks for your patience. Your project is my first Arudino project... It is up and running, and wish to thank you again for the project." Here is Ed's setup with the Arrow antenna:

Dave EI4HT/M0GIW - "Hey all. Success today! It works! Thanks for your help! I'm on a Cypriot vessel between Ireland and UK. It works great here on the ship, fun to watch it compensate for heading and roll."

We are pretty sure Dave would have the first maritime mobile application of our Mini Satellite Antenna Rotator. In our original Amateur Radio Magazine article we said:   “Even if the rotator mounting is moved during operation it will automatically reacquire the correct position, potentially making it suitable for land mobile or maritime applications.” But we never expected someone would actually try it! So well done Dave. Good job mate!

Dave EI4HT/M0GIW - More pictures of Dave's setup. He actually machined the hubs out of brass. Read his article about it in the Spring 2019 edition of AMSAT UK's Oscar News.

Alex ON5NV - We are very impressed at the way Alex has strengthened the mechanical parts with bearings.
Ronny ON5NR - A very professional build with what looks like a nice home-brew antenna. Ronny helped us update the Mk1a schematic to match the latest version of software. Thanks Ronny.

Eddie AE4TQ - "Just a quick email to follow-up and report that I have successfully finished constructing the Mini Satellite-Antenna Rotator project using the Mk1b design (L298N motor driver) this weekend.  I have to say it is a real thing of beauty to watch it gracefully tracking satellites via Gpredict. Thank you again for sharing this project, I can't wait to show it off at one of our upcoming NFARL club meetings and to be able to use it for 2019 ARRL FD next summer!"

"I have made numerous contacts on the CAS-4A/B and XW-series satellites since I built this project, and it created a lot of excitement and interest when I demonstrated it at our recent N4N ARRL Field Day group gathering. Seems I've inspired a group project! I eventually settled on using a Raspberry Pi 3B to run gPredict 2.2.1 Ubuntu using standard USB connection, (since 2.2.1 supported the satellite auto-track feature, as well as the Easycomm II protocol for antenna feedback). It also nicely controlled my FT857D for tracking doppler-shift." I'm looking forward to using the set-up during Field Day in June to get some additional bonus points, and I have promised my local club, NFARL, an article for their eNewsletter, as well as offering to do a presentation at the September club meeting."

"I gave a presentation this month at my radio club, the North Fulton Amateur Radio League about the rotator project, which was very well received by the attendees, and thought I’d share a few pictures. I’ve received a lot of emails from club members both before and after the presentation. I can’t thank you again for sharing this project with everyone."


Bob VK2BYF - A very impressive looking antenna farm now with a Mk1 Mini Satellite Antenna Rotator.

Bob VK2BYF - Also this heavy-duty AC motor version running on the same Arduino code. He says both are working perfectly. Well done Bob!

Béla HA4BM - Showing some real creativity and skill from Hungary, Béla has done an outstanding job designing his own 3D-Printed cases for the Mini Satellite-Antenna Rotator and the 3D Sensor.

He says "It is easy to reproduce using cheap 3D printers and PLA filament. The box is solid and meets the basic expectations. The dimensions are: 140mm x 100mm x 54mm."

Béla has kindly published his work, so that you can view his design and download his .stl files from here.

In testing his design, Béla noticed that using small steel screws to secure the 3D Sensor caused an offset in the position of the rotator. The solution is using non-magnetic, brass screws or just silicone adhesive for this purpose.

Kent K5WTS - Kent has an ingenious soulution for the lift-arm, with an integrated counterweight. By placing the sensor on the lift arm, away from the antenna, he also reduces RF interference from the I2C bus. Looks like a great portable setup Kent. Well done! Kent says: "Field day last weekend. It was a hit and a real attention getter. I have really enjoyed this project. Twelve years a ham and worked my first pile up on it. Five sat contacts in about three minutes. It's a hoot. Thanks for all you do with this Organization. 73s K5WTS Kent"

Denis VK6AKR from the West Australian VHF Group, based at the Wireless Hill Museum in Western Australia, reports that "Robert VK6FRDM is very well advanced with the construction of both the Mk1 and Mk2 Mini Satellite-Antenna Rotators. To the extent that he has demonstrated the Mk1 rotator to a group of school students and will possibly be establishing a continuing group at a local school. Robert's rotators were both on display at a HAMfest in Perth, where they attracted considerable interest from fellow operators." We know that Denis is also well on the way to completing his own Mk1 and Mk2 rotator. Well done and good luck to Denis and Robert!

Bagus YD1DDK from Indonesia said "I have tried the Mini Satellite-Antenna Rotator Mk 1 - Arduino Light Duty and it has been successful and I have implemented it in JOTA 2019." We were really excited to see the Scouts at the demonstration. We are impressed at the way Bagus has experimented with the motor position and enclosures, too.

Mike K4TWM - "I added a few cool features to my set-up.  I wanted a completely self-contained portable box that I could take camping to the beach or to the mountains. I included a 3.3Ah LiFePo4 battery and Raspberry Pi inside the box.  I also wanted to see what was happening so I added a display so I can see the azimuth/elevation set points and sensor readings at a glance.  I modified your program slightly to send az/el data serial data to the display.  Starting with a full battery charge, I was able to run the system in demo mode (constant motion) continuously for 8 hours. Thanks again for the software, this has been a really fun project!"
Jon W2JON - "I am currently in the process of replicating your awesome project to work the birds with my 10-year-old son. My kid is chomping at the bit to get into some satellite and we are even building our own arrow style antenna.  The work I have read on the site is phenomenal and I commend everyone involved and am especially touched by the efforts to help the children explore the wonders of ham radio and especially the satellite communications. We got the ESP8266 wireless serial bridge working well. Thank you for your consideration and thank you so much for sharing this project. 73, Jon W2JON." We note that Jon 3D printed the case by Béla HA4BM and also has the ESP8266 WiFi link working. Great work Jon!


Jon W2JON - "This is my scaled up version (semi-portable) of the MK1C. I built 2x 2 meter 4 element quads with nested 7 element 70cm yagi's built into the booms. Several custom 3d printed parts were made for the 2m element spreaders and feed point stabilizers. The 70 cm driven element has a custom 3d printed insert that centers the dipole and secures it as well. The rotators are old alliance U-100 style units which I totally tore down and rebuilt. This build uses the Aptinex 4 channel triac board and just like my portable build, it also has the wireless serial bridge in it via an ESP8266." - Jon's restoration of these old AC rotators was meticulous. The quads look amazing, too. Very impressive Jon!

Tony M0GLU - "Many thanks for the development. This is a great project. I didn't have any problems in the building process. It was easy and the documentation is great! 73s and best wishes! Tony."

Alton N4IDH - "All done!  Works as published. I have now made a dozen Sat contacts with my IC-9700 and your fine rotator. One issue, the first sensor would never stabilize for azimuth.  Luckily, I ordered 2.  Second one works great. A surprise: Ham Radio Deluxe software controls the antenna great.  Just select EasyComm II as the rotor. I have ordered a Arrow II antenna.  First one was lost in the US Postal Service.  Not a problem, Ham Radio Outlet is sending another via UPS and it arrives tomorrow. I am already collecting parts for the SARCTRAC.  Two motors and an enclosure and I will be ready to start construction."

Kay DL9IM - "Many thanks for sending me the software. The project is completed and pictures are attached to this email. Thanks a lot for this great instruction, the first 2 qso's are already in the log."

Szymon SQ5OVK - "I have completed the rotator."

Chris M0NAY - (MSAR Mk2) "I have only just got around to completing the rotator I started 18 months back due to work and other projects."

Stanley 9W8DNX - "I have completed my Mini Satellite-Antenna Rotator a few days ago. Attached here are the pictures of my completed project. I am very happy with the good results of tracking a few amateur satellites like PO 101, IO86, A027, AO 91, AO 92 and SO 50. This is my first time building my own tracker using Arduino and I am very grateful for the guidance and info from your website."

Andy AE8J - "Design is complete for my version of the mini AZ EL satellite rotator. Attached are a few 3D model views. I am a retired ham with a small machine shop in my garage. Most of the machined parts are complete."
Brian AB6AD - "I have just finished  Mini Satellite Antenna Rotator project with AMSAT SA Dual Band Yagi. It is an excellent design and working. Thank you !"

Viacheslav R2DZE - "Glad to report that I have successfully completed and field-tested the rotator as per your design! A couple of deviations are added esp8266 as COM-port bridge over WIFI and LED instead of buzzer. And as promise attaching some pictures as well. Thank you very much, it is pleasure to build it and operate!"

Ismael Garcia - "Hi! First of all I would like to thank you for the arduino code and congratulate you for the magnificent work. I think it is an exciting and fun project to build, I have not had any problems in the construction thanks to your wonderful instructions. Now I just need to build the antenna. I will try to build a 137 mghz yagi for the reception of meteorological satellites noaa. I currently use a quadrifilar. I send you some photos of the rotator. Thanks again and best regards from Spain."

Amey VU2YQ - "Thank you for your support during the debugging session. I have attached some of the pics of the antenna rotator in its early form with this email. I intend add an ESP8266 for WiFi interface. I shall send more pics in future once with further updates. This is a wonderful project and the code for Arduino is very professionally developed. Thank you for the project. I hope more folks from our local ham radio club shall build this rotator."
Las M0BOY - "Finally, a few months back I managed to finish the project. The main improvement I made is to put the compass on the back of the boom to avoid RFI and also note the Bluetooth serial module hm-10. All it needs is power lead and a raspberry pi to run rotctld and gpredict. Also, note that I am progressing a bigger version with toothed belts and cross polarised antennas. Hoping to finish it in spring." Las has a great video of it working here. Well done Las! Good luck with the Mk2 Version.


Problems Experienced by Readers
The following problems were reported by some of our readers. We have added our comments in bold.

  • Original version of software assumed the EEPROM was initialised. Fixed.
  • The m command does not work: The m command won't work properly until the calibration is completed. Try the b command instead.
  • Ordering the wrong parts on eBay: 2 motors (reordered). Oops!
  • eBay parts dead on arrival: 1 motor, 2 driver boards (reordered). That's a worry!
  • Trouble finding a suitable satellite antenna: We use the Arrow II 146/437-10W from here: http://www.arrowantennas.com/arrowii/146-437.html.
  • The 6mm hub is closer to 6.5mm. Yes, frequently 1/4" is sold as 6mm and vice-versa. Cut a soft drink can for shim to pack the gap.
  • The rotator azimuth and elevation motors just turn continuously. The sensor needs to be attached to the antenna boom and the rotator mounted on a sturdy tripod.
  • Better serial monitor support: A help command. A stop and start command. Motor test command. Command error handling. All good ideas! We added Help and a Pause command.
  • The rotator wobbles too much. We have found that the original soft-brass shaft coupler used for the azimuth mounting wears out after repeated assembly/disassembly. It seems never tight enough: The rotator wobbles from side to side and at high elevation angles the lift arm hits the tripod upright. We have tested the following 4-screw steel shaft coupler from eBay and can report much better stability with it. However, using a second shaft hub for the azimuth mounting is by far the best and cheapest mounting method. For ease of tightening the shaft hub mount, the two small grub screws were replaced with 3mm cheese-head or cap screws. Some readers have re-tapped the holes to 4mm.
  • Gpredict does not display the rotator position on a Windows PC, but the rotator works fine. Easycomm II rotator position feedback does not work on a Windows PC because of a handshaking issue when using Hamlib with the Arduino IDE USB port driver. A work-around is to use a USB-TTL Converter connected to the TX, RX, GND and VCC pins on the Arduino and changing the code to use the Serial1 port instead of the Serial port. It works OK using the USB port with a Linux PC.
  • RFI and EMC problems: The electronics generates RF Interference, which can be heard in the receiver while tracking satellites. Transmitting as little as 10W into the antenna can lock up, reset or even fry the electronics. We have done a lot of investigation in these areas and have a lot of feedback ranging from there is no problem at all through to unworkable situations. The fact is that every assembly and installation is different and we can't address every situation. So here are some tips for you to try: Place the sensor on the boom away from the driven elements - or better still on the lift arm. Try overall-shielded cable for the I2C bus. Add 0.1uF caps from the motor terminals to the motor chassis. Run a couple of turns of the antenna, I2C and USB/RS422 cables through ferrite toroids. Use low power, shielding and grounding techniques.
  • The motors from China did not work: The motors brushes have a propensity of lifting off the commutator due to shock and vibration in transit. They can often be restored to operation simply by "tickling" the brushes with the power applied by inserting a squashed wooden toothpick through the crescent shaped holes. A spray of isopropyl alcohol through the holes may also be necessary to shift any grease on the commutator.
  • The rotator points in the opposite direction and oscillates. The different motor suppliers are not consistent with the red-dot polarity marking on their motors. Some motors turn in the wrong direction. If you experience this problem, simply reverse the motor wiring.
In the News
  • We demonstrated the Mini Satellite-Antenna Rotator Mk1 to the Amateur Radio Victoria Homebrew Group.
  • We presented and demonstrated the Mini Satellite-Antenna Rotator Mk1 at GippsTech 2016 on July 9th & 10th 2016.
  • AR Magazine, June 2016. SOTA and Parks News by Allen Harvie VK3ARH. VK3 Show and Tell - Sunday 17 April 2016 - Brisbane Ranges National Park: "... Another highlight, among many, was provided by Joe VK3YSP. Joe set up his Portable Satellite gear, complete with mini computer controlled rotator for a demonstration earlier in the day and was ready and waiting for an early afternoon pass of amateur satellite designated FO-29. Right on cue, FO-29 came over the horizon and Joe completed what is believed to be the first WWFF contact from an Australian VKFF Park via Satellite. Joe exchanged greetings from the Park, the Park designator and name, and a valid signal report with Geoff VK2ZAZ. This was an effort by Joe and enjoyed by all present."

  • We demonstrated the Mini Satellite-Antenna Rotator Mk2 to the Amateur Radio Victoria Homebrew Group
  • We demonstrated the Mini Satellite-Antenna Rotator Mk2 to the Melbourne Space Program team on March 18 2017.
  • We demonstrated the Mini Satellite-Antenna Rotator Mk2 at the Wireless Institute of Australia AGM on May 21 2017.
  • We presented and demonstrated the Mini Satellite-Antenna Rotator Mk2 at GippsTech 2017 on July 1 2017.
  • We demonstrated the Mini Satellite-Antenna Rotator Mk1 to the South East Radio Group on June 10 2018. It won first choice of the Home Brew prize!
  • We presented and demonstrated the Mini Satellite-Antenna Rotator Mk3 and 4 at GippsTech 2018
Hardware Build Notes
Mechanical
  1. The hardest part of the build was precision-marking and drilling the motor mounting holes. We recommend sticking adhesive paper labels to the diecast box, scribing construction lines on them using a digital vernier caliper, center-punching and drilling pilot holes first. A drawing of the motor mounting holes can be found in the motor datasheet here. Check three times - drill once.
  2. Countersink the motor shaft holes on the inside of the rotator case and slip 5mm o-rings over the motor shaft before assembly for ingress protection.
  3. Add two flat washers to the AZ motor mounting bolts on the side near the lid to counter the chamfer in the rotator case.
  4. Install a cable gland on the bottom of the rotator case for the PC/Battery and Sensor cables.
  5. Install the Motor Drivers to the case using countersunk bolts and stand-offs.
  6. Install the Arduino Pro Micro against the case wall using two layers of double-sided tape on its flat side.
  7. Prepare an Extra Heavy Duty Speaker Tripod. Try Altronics C0520A. Remove the speaker bracket if fitted.
  8. Attach a 6mm shaft-hub to the top of the tripod using a 25mm irrigation-pipe threaded plug, 3mm cheese-head bolts, flat washers, spring washers and nuts. Fix with self-tapping screws to the tripod. Replace the grub screws on the shaft hub with cheese-head bolts or cap screws to obtain additional torque.
  9. Attach the rotator's AZ motor shaft to the tripod and tighten the hub screws.  
  10. Round the sharp edges of a lift arm made from 500x30x30x3mm aluminium angle.
  11. Make a counterweight from a 101x51x25mm diecast aluminium box: Altronics H0451, Hammond 1590G or similar. Filled with lead to a total weight of 860g/1.9lb.
  12. Attach the counterweight to one end of the lift arm with self-tapping metal screws.
  13. Attach the Arrow antenna to the lift arm using Velcro. This is for quick release of the antenna and hand-held operation, if required.
  14. Attach a 6mm shaft-hub to the lift arm close to the balance point. Ours was 140mm from the antenna end. A slight front-heavy balance offset will reduce backlash.
  15. Attach the lift arm to the rotator's EL motor shaft using the 6mm shaft-hub and tighten the hub screws.
  16. Enclose the sensor in 12mm double-wall heatshrink tube and crimp the front end. Mount the flat side of the sensor against the boom with a velcro strap around the boom. See: Sensor Orientation for details. Keep the sensor away from the VHF/UHF driven elements to avoid RF interference to the sensor. Don't use high power for satellites. Use ferrites on the I2C lines if necessary.
  17. Here is an extreme close-up of the enclosure showing assembly details. Both the original shaft-coupler and new shaft-hub (recommended) mounting methods are shown:

Sensor Orientation

There are two types of sensor boards supported: The first shown is the older LSM303D, the second is the LSM303DLHC (preferred). The diagrams show their correct orientation. The sensor is attached to the antenna boom and is aligned with the antenna reference axes (X, Y and Z shown in red above) as follows: With the antenna horizontal and pointing North, X points due East, Y points due North, along the antenna boresight, and Z points up. Please disregard any axes printed on the PCB.

Because the flat side of the sensor board is attached on the top of the antenna boom, with the long side of the sensor board parallel to the boom, the sensor axes (X', Y' and Z', as sometimes printed on the PCB) are not the same as the antenna reference axes (X, Y and Z) as used in our software and our original article. Instead, X = -Y', Y = X' and Z = Z'. Also, the gravity field vector G is the opposite of the device acceleration vector A.

Therefore the following transformations of the Magnetic (M) and Gravity (G) vectors are applied by our software:

MX = -MY', MY = MX', MZ = MZ', GX = AY', GY = -AX', GZ = -AZ'.
Electrical (Mk1a)
  1. Important: Bridge Jumper J1 on the Arduino Pro Micro.
  2. Solder the four 6-way headers on to the TOP of the Arduino Pro Micro.
  3. Crimp hookup wires into the housings.
  4. Connect Pro Micro SDA, SCL, GND and VCC to the Sensor SDA, SCL, GND and VIN pins via a long flexible unshielded cable. We use flat telephone cable.
  5. Connect Pro Micro pins 5, 6, 9 and 10 to the Motor Driver terminals (AZ PWM, AZ DIR and EL PWM, EL DIR respectively).
  6. Connect Pro Micro pins 16 (+) and 14 (-) to a Piezo Buzzer to assist with calibration.
  7. Connect Pro Micro GND to each Motor Driver GND and BRAKE terminal (The one on the same terminals as PWM and DIR).
  8. Connect Motor Driver OUT1 and OUT2 terminals to the Motor terminals (be prepared to reverse these during testing as the motor pins are not polarised).
  9. Connect Motor Driver V+ and GND terminals to your 12V supply via a cutoff switch and fuse (Caution: Don't connect until safe: The motors may move)
  10. Connect Pro Micro USB port to the PC USB port. To fit the cable through the gland, cut a standard micro USB cable in half and re-terminate it. This port powers both the Pro Micro and Motor Driver electronics.
  11. This schematic diagram has now been updated to support Version 6 software.

Electrical (Mk1b)
  1. Important: Bridge Jumper J1 on the Arduino Pro Micro.
  2. Connect Pro Micro SDA, SCL, GND and VCC to the Sensor SDA, SCL, GND and VIN pins via a long flexible cable. We use flat telephone cable.
  3. Connect Pro Micro pins 5, 6, 9 and 10 to the Motor Driver terminals (IN1, IN2, IN3 and IN4 respectively).
  4. Connect Pro Micro pins 16 (+) and 14 (-) to a Piezo Buzzer to assist with calibration.
  5. Connect Pro Micro GND to the Motor Driver GND terminal.
  6. Connect Motor Driver OUT1, OUT2 to the AZ Motor and OUT3, OUT4 to the EL Motor (be prepared to reverse these during testing as the motor pins are not polarised).
  7. Connect Motor Driver 12V and GND terminals to your 12V supply via a cutoff switch and fuse (Caution: Don't connect until safe: The motors may move)
  8. Connect Pro Micro USB port to the PC USB port. To fit the cable through the gland, cut a standard micro USB cable in half and re-terminate it. This port powers both the Pro Micro and Motor Driver electronics.
Electrical (Mk1c)
  1. Important: Bridge Jumper J1 on the Arduino Pro Micro.
  2. Connect Pro Micro SDA, SCL, GND and VCC to the Sensor SDA, SCL, GND and VIN pins via a long flexible cable. We use flat telephone cable.
  3. Connect Pro Micro pins 5, 6, 9 and 10 to the Motor Driver terminals (IN4, IN3, IN2 and IN1 respectively).
  4. Connect Pro Micro pins 16 (+) and 14 (-) to a Piezo Buzzer to assist with calibration.
  5. Connect Pro Micro GND to the Motor Driver COM terminal.
  6. Connect Motor Driver LOAD-1, LOAD-2 to the AZ Motor and LOAD-3, LOAD-4 to the EL Motor (be prepared to reverse these during testing as the motor pins are not polarised).
  7. Connect a 100uF 50V Bipolar Capacitor across each of the motor windings.  
  8. Connect the LOAD-1 and LOAD-2 Common and Motor Common to the 20VAC plugpack that comes with the AZ Channel Master rotator.
  9. Connect the LOAD-3 and LOAD-4 Common and Motor Common to the 20VAC plugpack that comes with the EL Channel Master rotator.
  10. Install an AC Mains safety cutoff switch. Do not use AC Mains voltages outside.   
  11. WARNING: These AC Rotators are so powerful that they will cause severe damage and harm due to any malfunction or error. Never to be used unattended.
  12. Connect Pro Micro USB port to the PC USB port. To fit the cable through the gland, cut a standard micro USB cable in half and re-terminate it. This port powers both the Pro Micro and Motor Driver electronics.
  13. Note that the Azimuth rotator has to be modified using this modification procedure to remove the 360-degree stop pins. Caution: This modification will void the warranty. Note: The last step in the procedure requires you to drill out the two stop pins without leaving any metal swarf in the gearbox - piece of cake :-).
  14. There is a video of the working controller here and a video of the working rotator here.
Testing the Arduino Pro Micro stand-alone
  1. Install the Arduino IDE from https://www.arduino.cc/en/Main/Software. Note: Give the drivers ample time to install.
  2. Connect the Arduino Pro Micro via a micro USB cable to the PC USB port.
  3. Open the Arduino IDE
  4. Select File | Examples | 01.Basics | Blink
  5. Select Sketch | Verify/Compile (Ctrl+R). You should see "Compiling sketch..." followed by "Done compiling"
  6. Select Tools|Board: Arduino Leonardo
  7. Select Tools|Port: COMnn (Arduino Leonardo)
  8. If you don't see COMnn (Arduino Leonardo) you may have to determine the virtual serial port used by the controller:
    1. On Linux start a terminal window and type: dmesg | grep "USB ACM device" Make a note of the tty device.
    2. On Windows start device manager and look under "Ports" for "USB Serial Device" or "Arduino". Make a note of the "COM" number.
    3. Select Tools | Port and the COM port number you noted earlier.
  9. Select Sketch | Upload (Ctrl+U). You should see "Uploading...". The Arduino Pro Micro LEDs will flash 3 times. Then "Done uploading".
  10. This indicates that you can successfully compile and upload an Arduino file.
  11. Note: The Blink sketch does not blink the Pro Micro LED unless you add "#define LED_BUILTIN 17" to the start of the program and accept the compiler warning
  12. If you can't upload. May we suggest: Closing the IDE. Disconnecting and re-connecting the controller. Starting the IDE again and repeating steps 4 onwards.
Compilation Instructions
  1. Open the Arduino IDE.
  2. Select File|Preference to find out your sketchbook location.
  3. Open the Mini Satellite-Antenna Rotator Arduino code file (RotatorX.zip)
  4. Copy the RotatorX folder to your sketchbook location.
  5. Select File|Open|RotatorX|RotatorX.ino. You should see eleven files open in the IDE as shown below.
  6. Select Sketch Verify/Complile (Ctrl+R). You should see "Done compiling" and no errors (but please ignore any compiler warnings) as below.

Set to Work Instructions (Part 1)
  1. Check the motor and sensor configuration. Click on the Rotator6 tab and find the following lines. The line with the motor or sensor you are using should start with const the other unused types should start with //const. I.E. Comment out the devices you don't use. The following shows the configuration for the type 1b with L298N motor driver and LSM303DLHC sensor.
//Constants
//User configuration section:
//Please uncomment only one of each of the following MotorTypes, SensorTypes and SerialPort types:
//const int MotorType = PWMDIR; //Please uncomment this line for the LMD18200T DC motor driver.
const int MotorType = FWDREV; //Please uncomment this line for the L298N DC motor driver.
//const int MotorType = ACMOTR; //Please uncomment this line for the triac AC motor driver.
//const int SensorType = LSM303D; //Please uncomment this line to use the LSM303D sensor.
const int SensorType = LSM303DLHC; //Please uncomment this line to use the LSM303DLHC sensor.
  1. Connect the Mini Satellite-Antenna Rotator controller USB port to a PC or Raspberry Pi or whatever, but do not connect the 12V motor supply.
  2. Start the Arduino IDE and open the rotator sketch
  3. Press Upload to reboot the Arduino and start up the IDE Serial Monitor (button at top right). Select "Carriage return" from the dropdown box.
  4. Type b<Enter>
  5. You should see the raw sensor data (six numbers) as shown below. If you see "nan" or "ovf" there is a problem with the sensor or sensor connection.
  6. Type a<Enter> to abort debug mode.
  7. You now have to run the calibration procedure at least for the first time before you can proceed.

Calibration Instructions
A workable calibration can be achieved by just holding the sensor in your hand and turning it around to point in 12 different directions. The piezo device stops beeping and the data stops changing when you have completed each point. The more care you take with the procedure the better the calibration will be. Once you have done the calibration properly it will not need to be repeated unless your magnetic declination or the magnetic conditions near the sensor change. A video of the calibration process is shown here.
  1. For version 4 software: Attach a piezo speaker to pins 10 (+) and 16 (-).
  2. For version 5 software: Attach a piezo buzzer to pins 16 (+) and 14 (-).
  3. Go on-line to calculate the magnetic declination in your area. Go to http://www.ngdc.noaa.gov/geomag-web/. Enter your country and city. Press "Add Lat/Lon" then press "Calculate" to get your magnetic declination. Say it is 11 degrees, 40 minutes, East. Convert this number to decimal degrees by dividing the minutes part by 60 and adding it to the degrees part, so that's 40/60=0.7 plus 11 equals 11.7. Use a negative number (-11.7) if it says West instead of East.
  4. Make sure the 12V motor supply is disconnected. Connect the PC to the rotator using the USB cable.
  5. Start the Arduino IDE and open the rotator sketch.
  6. Press Upload to reboot the Arduino and start up the IDE Serial Monitor.
  7. Type in e11.7<Enter> to enter the magnetic declination (make sure you type in your own value). Then s<Enter> to save it.
  8. Now start the calibration process by typing c<Enter>.
  9. You can abort the process at any time by typing a<Enter>.
  10. When you have completed the calibration process, properly, just type s<Enter> to save the calibration data to non-volatile memory.
  11. To calibrate the sensor you have to move it around very, very slowly. Don't bump it or even think about changing hands.
  12. It helps to tape the sensor and the sensor cable to the back of plastic or wooden ruler and hold the ends of the ruler in each hand.
  13. Move the sensor around. The piezo device will beep and you will see the 3D magnetometer (M) and accelerometer (G) errors and scaling factors changing on the screen.
  14. You can pretty much keep moving the sensor all around until the piezo device stops beeping or the data stops changing, but there is a trick to doing it properly.
  15. Think of the sensor as a cube with six faces. You need to point each face in the direction of the Earth's magnetic field and again in the direction of the earth's gravitational field. The gravitational field points straight down, while the magnetic field points up (in the Southern hemisphere) to the North at an angle of about 70 degrees to the horizontal. There are 12 directions and you have to move the sensor a little bit around each point until the piezo device stops beeping or the data stops changing.
  16. For extra fun have someone video the whole process and then play it back at high speed!
  17. Don't forget to type s<Enter> when you have finished.
  18. You can then type r<Enter> to reset the controller and reload the stored calibration data.
Set to Work Instructions (Part 2)
  1. Once calibration data is saved to the EEPROM you can continue to set the rotator to work.
  2. Make sure the 12V motor supply is disconnected. Connect the PC to the rotator using the USB cable.
  3. Start the Arduino IDE and open the rotator sketch.
  4. Press Upload to reboot the Arduino and start up the IDE Serial Monitor.
  5. In the IDE Serial Monitor type m<Enter> to enter the monitor mode.
  6. You should see the rotator data as shown below, comprising: Current AZ and EL, Setpoint AZ and EL, AZ windup angle, AZ windup state, AZ and EL error.
  7. Verify the Current AZ and EL numbers reflect the sensor true azimuth and elevation
  8. Make sure the lift arm is disconnected. Connect the 12V motor supply.
  9. Observe the IDE Serial Monitor display and observe the motor movement while looking directly at the motor shafts.
  10. Point the sensor North East. The first number should be between 0 and +90. The AZ motor should turn CCW.
  11. Point the sensor North West. The first number should be between 0 and -90. The AZ motor should turn CW.
  12. Point the sensor 45 degrees Down. The second number should be between 0 and -90. The EL motor should turn CW.
  13. Point the sensor 45 degrees Up. The first number should be between 0 and 90. The EL motor should turn CCW.
  14. If a motor moves in the wrong direction, reverse the motor wires by swapping the OUT1 and OUT2 connections on the appropriate Motor Driver board.
  15. Disconnect the 12V motor supply. Attach the rotator to the tripod. Attach the lift arm to the rotator. Attach the sensor along the boresight of the lift arm.
  16. Disconnect the USB cable.
  17. While carefully monitoring the lift arm, ready to disconnect the 12V motor supply if something goes wrong. Connect the 12V motor supply - there should be no movement.
  18. Connect the USB cable. The lift arm should swing around to 0 degrees AZ/EL and stop.
  19. Turn and tilt the tripod. The rotator should restore the lift arm to this home position.
  20. In the IDE Serial Monitor type 30 45<Enter>. The lift arm should swing around to approximately 30 degrees AZ and 45 degrees EL.
  21. If everything is working properly you may like to repeat the calibration procedure more carefully if you wish.  

Installing Gpredict and HAMLIB
Windows Installation
  • UPDATED 19 Nov 2024: We can confirm that HAMLIB works OK with the Arduino Uno and Nano USB serial ports on Windows. Confirming our suspicions that the problem is with the Pro Micro USB serial port handshaking. However, we have not tested the rotator6.ino sketch on these platforms nor with Gpredict, but it is likely that they will work. The only changes to the pin numbers appear to be for the I2C pins. They are as follows: Pro Micro: SDA 2, SCL 3. Uno: SDA 18, SCL 19. Nano: SDA A4, SCL A5.
  • UPDATED 7 Nov 2024: The Pro Micro with its integrated, USB port, programmer was originally a great solution for this project. The Arduino IDE uses USB handshaking signals to program the micro-controller. However, an unknown problem arising around March 2024 means that using the Pro Micro USB serial port on Windows is currently unworkable; even rolling back to previously working versions of HAMLIB and Gpredict do not fix the problem. The Windows Arduino IDE USB Serial Driver has not changed since 2015. The Pro Micro USB interface continues to work fine with Linux. The problem appears to be that the USB port handshaking signals from HAMLIB are now blocking the Pro Micro from sending its position feedback. This, also for an unknown reason, now causes Gpredict to crash. The only work-around for Windows with the Pro Micro is to use a USB to TTL serial adaptor board connected to the Arduino TTL serial port as detailed below.
  • UPDATED 21 Aug 2023: The easy way to install and run Gpredict and HAMLIB for Windows is by using this file. You should download it and follow the directions therein. It will help you create a Tracking shortcut on the PC Desktop, which you can use to start HAMLIB and Gpredict in an orderly and unobtrusive manner. Closing Gpredict will automatically close HAMLIB.
  • Click on the Tracking shortcut to start HAMLIB and Gpredict.
  • Note: The rotator emulates the AMSAT Easycomm II protocol. It permits Gpredict to set the AZ-EL angle of the rotator and it is the only rotator protocol which supports rotator position feedback, allowing Gpredict to display the rotator position as well. However, because the Arduino Pro Micro uses the USB port handshaking lines for resetting the micro-controller, the position feedback part does not work properly with HAMLIB on a Windows PC. It works OK on Linux. While the rotator positioning will be OK the position display will not work. A work-around is to connect a USB to TTL serial adaptor board between the PC and the Pro Micro VCC, GND, TX and RX pins (remember to cross-connect the TX and RX lines). This board will power the Pro Micro from the PC. Then open the Arduino IDE and the rotator.ino file. Follow the instructions in the file to change the SerialPort from Serial to Serial1 and re-compile.
Raspberry Pi Installation
  • Use a RPi Version 3 or 4 with built-in WiFi, or a version 2 with a USB WiFi dongle. Add a PiFace Real Time Clock if you want to use it portable.
  • Start by downloading the the latest Raspberry Pi OS imager from here to create your micro SD card image.
  • When your Raspberry Pi OS is installed and running, open a terminal window and execute the following commands.
  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install gpredict
  • Please install HAMLIB manually to get the absolute latest version.
    • Browse to: https://github.com/Hamlib/Hamlib/wiki/Download#latest-release
    • Note the latest release number e.g. 4.5.5. Replace the actual number wherever you see this number below
    • cd ~/Downloads/
    • mkdir hamlib
    • cd hamlib
    • wget https://github.com/Hamlib/Hamlib/releases/download/4.5.5/hamlib-4.5.5.tar.gz
    • tar -xvzf hamlib*
    • cd hamlib-4.5.5
    • ./configure
    • make
    • sudo make install
    • sudo ldconfig
  • Plug the rotator into to a USB port and start the HAMLIB rotator control daemon in a terminal window:
    • rotctld -m 202 -r /dev/ttyACM0 -s 9600 -C timeout=500 -vvv
    • Where: 202 is the model number for a rotator emulating AMSAT Easycomm II protocol
  • Plug the radio, via a CAT cable, into a USB port and start the HAMLIB rig control daemon in a terminal window:
Mac Installation
This information is from Amey VU2YQ:
  • I was able to install both Gpredict and Hamlib using Homebrew. It's a package manager tool for Mac (https://brew.sh/).
  • Then I just ran the rotctld command in one terminal and started Gpredict through another.
  • I was able to connect to the tracker and run the tracker in the Gpredict application.
Gpredict Configuration
  1. Select File | New Module
  2. Enter Module Name: e.g. “MySats”
  3. Select Ground station: Add
  4. Enter ground station Name and Description and select your Location
  5. Select OK
  6. Select Ground station: e.g. Home for the MySats module
  7. Select Satellites (use categories and search to find them)
  8. Select OK
  9. Select Edit | Update TLE data from network. Select Close.
  10. Select Edit | Preferences | Interfaces
  11. Select Radio, Add New and Edit. Change the parameters for your radio.
  12. Select OK
  13. Select Rotator, Add New and Edit.
  14. Change Az type to 0 - 180 -360
  15. Select OK
  16. Select Module options / shortcuts (The small down-arrow on top right of the module)
  17. Select Radio Control
  18. Select a Target satellite and press Track
  19. Select your radio and press engage
  20. Select Module options / shortcuts (The small down arrow on top right of the module)
  21. Select Antenna Control
  22. Select a Target satellite and press Track
  23. Select your rotator, set tolerance to minimum and press Engage.
Operating Instructions
Serial commands:
Enter two integers AZ and EL in degrees separated by a space to manually control the rotator. e.g. 270 45<Enter> Note: AZ here works in either 0~180~360 or -180~0~180 degree format.
  • r - Reset. Prints the calibration data. Resets the rotator to the home position and resets the windup value.
  • b - Debug mode. Prints the raw sensor data: Mx, My, Mz, Gx, Gy and Gz.
  • c - Calibrate mode. Displays the calibration data only when it changes.
  • d - Demo mode. Tracks linearly through the following AZ/EL points in a cycle: 0/0, 90/90, 0/180, 90/90 0/0, -90/90, -180/0, -90/90, 0/0
  • m - Monitor mode. Prints current AZ and EL, set points for AZ and EL, the AZ windup angle, the AZ windup state, the AZ and EL error.
  • a - Abort Calibrate, Monitor or Demo mode
  • e - Enter Magnetic Declination. e.g. e11.7<Enter>. It is positive for East or negative for West.
  • s - Save Magnetic Declination and Calibration Data.
  • h - Help
  • p - Pause
Scaling it Up
As we said in the article: "It should be noted that this particular rotator is very light duty as it uses small and inexpensive motors. It would certainly not take the rigours of prolonged external use nor support a larger antenna". Some readers have asked us how the mini satellite-antenna rotator can be scaled up for larger antennas. Here are our thoughts:
  • Note: Our mini satellite-antenna rotator would not be suitable for EME (moon bounce) stations with narrow beam-width (parabolic) antennas.
  • See our Mini Satellite-Antenna Rotator Mk2 to check if that meets your needs.
  • There are two types of H-bridge motor drivers: Single PWM input with DIRection control (designed for DC motors) and Dual, FWD and REV, PWM inputs (designed for stepper motors).
  • The L289N (FWD/REV) motor driver will handle 2A at up to 35V.
  • The LMD18200T (PWM/DIR) motor driver will handle 3A at up to 55V.
  • You can drive pretty big DC motors with those, especially at 24V. If that is not enough, there are larger motor drivers available.
  • The following is a dual channel PWM/DIR 10A motor driver.


  • The following is a dual-channel FWD/REV 60A motor driver.

  • The sensor and Arduino should be located close together (about 1m max) because of the I2C bus interface. We can’t do much about that unfortunately. So the electronics box must be up at the antenna.
  • The Arduino and the tracking computer can only be about 5m apart because of the USB interface. USB over CAT-V cable extenders are available for cable runs up to 50m. A more reliable option is RS-422 over CAT-V cable described in our Mini Satellite-Antenna Rotator Mk2. A better option is to use some ESP-32 WiFi devices.
Cautions
Please read the following very carefully. We accept no responsibility or liability for the following:
  • This is a DIY project for the experience builder. We are not responsible for your time, costs, tools, availability or substitution of parts.
  • Beware of moving parts - Unit may move at any time without warning. Do not stand or permit anyone to stand in the vicinity of the operating unit.
  • Beware of eye hazard - Moving satellite antennas are prickly. Eye protection is recommended.
  • Beware of pinch hazard - Keep fingers away from moving parts.
  • Beware of electromagnetic radiation hazard - Do not use with high power transmitters. Recommend 10 Watts maximum.
  • Beware of electrocution hazard - Do not use near power lines.
  • Beware of lightning hazard - Do not use in thunderstorms, rainy or windy conditions.
  • Beware of fire hazard - The unit has no built-in over-voltage or over-current protection.
  • Not suitable for unattended operation.
  • Not suitable for fixed or permanent outdoor operation.
  • Automatically connects to the Internet: Adult permission and charges may apply.
  • Constant adult supervision of the operation is required to prevent injury, especially around children.
  • Constant adult supervision of the operation is required to prevent damage to the unit, anything attached to the unit or anything in the vicinity of the unit.
  • Constant adult supervision of the operation of radio transmitters is required at all times. You must check your licence conditions and operating frequency.
  • Antenna, tripod, lift arm, mountings, cables or anything in the vicinity of the unit may be damaged under normal operation or due to software malfunction.
  • The motors are light-duty and the antenna provides a lot of leverage on the motor shafts: Do not force them, tip over the tripod or drop its vertical shaft. Avoid striping the metal gears.
  • Installation of a quick-disconnect connector in the power lead and safety DC cut-off switch is recommended.
Safety
We have conducted the following safety testing of the completed project:
  1. Motor stall: The motors do overheat or draw excessive current under full-power stalled conditions.
  2. Cable windup: The motors are very high torque. Cables can be damaged under windup conditions. The addition of a quick-disconnect power cable connector is recommended.
  3. Antenna impact: The Arrow™ Antenna elements were not damaged under full-power impact or restraint conditions.
  4. Human impact: The human is not damaged under full-power impact or restraint conditions. Note: Eye damage could occur even when the antenna is motionless.

Limitations
  • Suitable for rotating only a single, small directional antenna (e.g. A handheld, dual-band, Yagi antenna such as an Arrow antenna) using a counterbalanced lift arm.
  • Not suitable for applications requiring high pointing accuracy e.g. parabolic dishes for EME. +/- 5 degree accuracy is possible with optimal calibration, but is not guaranteed.
  • Unit will oscillate unless solidly mounted only on a rigid stand, such as a heavy-duty (speaker) tripod.
Back to content