KN3G rotator controller - bench tests

Feb 9, 2025

I eventually got round to putting the KN3G controller into a case and have now completed some more bench tests. The controller has been configured with GPS, sun and moon tracking options so that once the Arduino sketch has been loaded it runs as a standalone unit, without the need for a PC or laptop. An unshielded 4 core cable is used for the motors and CAT8 S/FTP for the Hall sensor power and output. The cables are 15m long and so far I haven’t experienced any issues with detecting pulses.

I spent some time trying different combinations for sun/moon tracking and these are the settings I ended up using on the bench.

rotator_settings.h

#define AZIMUTH_TOLERANCE 0.1

#define ELEVATION_TOLERANCE 0.1

Then via command line options or Tracking Settings pages on Nextion display:

Sun check interval 10 secs.

Moon check interval 10 secs.

Sun difference threshold 0.2 deg.

Moon difference threshold 0.2 deg.

The motors run briefly every 10-30 seconds, whenever the azimuth or elevation difference is greater than 0.2 deg. Slew drive elevation is within 0.1 deg. when compared with a digital inclinometer. These settings may need further refinement once I have the dish for 10GHz EME mounted and run a sun noise test.

Code changes

During testing I noticed that the slew drive would occasionally start “hunting”. Reading through various comments on the Radio Artisan groups.io forum I came across a fix (https://groups.io/g/radioartisan/topic/92397567) and changed the work_target_raw_azimuth datatype from int to float (k3ng_rotator_controller.ino line 11963 version:2023.10.06.2200).

I’ve also changed EEPROM.write(ee++, *p++); to EEPROM.update(ee++, *p++); on line 7463, which should improve life expectancy of the microcontroller.

On the Nextion I added a “Save EEPROM” button to the Rotor Calibration page to send a “\Q” command.