Arduino Rotator Controller Description - K7MDL2/RF-Power-Meter-V1 GitHub Wiki
Headless Operation over UDP
The first release of this code there is no local display. It is controlled by UDP commands only. You can see the status messages over either UDP or the USB Serial monitor port. The RF Wattmeter Desktop app can be used today to see these messages and issue commands. This is detailed on another WIKI page. One could easily choose to add local buttons or add a display which is planned for later. I have added optional rotor control as a 3rd line on the Desktop App UI.
The Desktop app now extended with optional Rotator Control line at bottom. The number buttons are Presets.
Main Features
The initial rotator controller code supports stall detection, offset, start position, manual CW and CCW limits, stopband, fixed at 360 rotation today, north center (though the offset can shift that). Fast and Slow with commands to go to right or left limits or to a heading. 10 Presets (0-9).
Operation
The controller will automatically turn in the correct direction and will not pass through the dead zone defined by rotor limits. A Slowdown value (default about 10 degrees) causes the controller to switch to slow speed when nearing a preset or manual limit. In the case of my HD-73 20VAC 3-wire rotor, that means inserting a 3A diode with electrolytic cap in parallel to reduce the voltage slowing it way down.
Hardware
5 relays are used today. For rotors without slow speed, 3 relays would be used. I happened to use a 4-channel module for the rotor motor voltage switching and a single channel module for the 120VAC line input to the motor power transformer. The transformer is only energized when the motor is active to minimize standby power consumption, heat and vibration. In the original HD-73 controller the transformer also supplied power for a meter backlight bulb and meter position power via a zener diode regulator. I am using station 12V for the controller DC power. The HD-73 controller transformer meter circuit secondary is 65VAC unloaded and has very low current capability so station 12V is used to drive the relays and CPU. In place of relays a simple PWM driver board could be used for DC motors.
The HD-73 rotor uses a 0-1ma meter movement and a 75ohm pot inside the rotor for position indication. In my controller I use Arduino 3.3V power supplied through 2 33ohm SMD resistors. One is between the pot and ground, the other between the pot and +3.3V. This provides about 1.76VDC of range or about 55% of the 1024 ADC counts and keeps away from the ADC range limits where the most non-linearities will be. 75ohms is small enough that placing a direct 3.3V across it would result in a lot of current draw and heating of the pot. Adding 66 ohms sets the max current at 24ma. ( 24ma = 3.3/(33+75+33) ). The pot wiper is connected to a high impedance GPIO pin so no significant current draw there. Ideally there would be some input protection added for lightning or static voltage surges exceeding 3.3V.
Some other rotators use higher value pots, I have seen 500 used in a Yeasu rotor. These are usually connected as rheostats with 2 wires so will look like a variable resistor in series with the high impedance input and a pullup resistor using less current.
Teensy 4.1 GPIO ports 28 is used for the AC relay and 29-32 are used for the 4 motor control replay inputs. RX1 and TX1 (GPIO pins 0 and 1) wil be used for a Nextion display. External 5V is powering the CPU so a trace is cut to isolate the USB power from the external 5V power. I use double sided tall header pins on the CPU to permit plugging the CPU into sockets on the proto board and plug wires onto the CPU itself direct.
HD-73 Operation Notes
The HD-73 is a 20VAC 3 wire motor using a 155uF non-polarized run capacitor to add a lead or lag to one of the 2 motor windings. The relays apply the 20VAC to one the 2 motor leads with a common return line connected to ground as is the return of the 20VAC transformer winding. The opposite motor winding has power flowing though the run cap causing the motor to turn some direction. For slow speed the transformer power is passed though a series diode with a filter cap across it slowing it down with reduced voltage. The relays again flip the power to the chosen motor winding to change direction.
Non-PWM DC Motors
For non AC motors the same relays may be used to connect DC power to the motor leads, reversing polarity to change direction.
PWM DC motors
For PWM motors the relays can be used as inputs to a PWM controller for direction controller provided the PWM controller has its own PWM clock. If not you can generate a PWM waveform in the Arduino and send it to the PWM controller. Optionally you can add new commands to change the PWM duty cycle. I have a PWM controller and motor for bench testing and plan to add this in my self later.
Using Existing Rotator Controllers
You can elect to just use the relays connected in parallel with rotor front panel switches to get left, right motion.
Future Plans
PWM speed control Yeasu GS232 command compatibility Nextion touchscreen display for local control Update RF Wattmeter Desktop App for rotator control. Right now just using it as it for testing. Set it up to work direct over the internet through a router.
Bill of Materials
20VAC transformer with hi temp shutoff switch. Removed from an old HD-73 controller.
Suitable case
Combo AC power switch with 1A fuse and IEC AC power connector
6 position terminal block for rotor connection. 3 for motor, 3 for position potentiometer. I used a pluggable version.
Coaxial 2.1mm DC power jack, panel mount
Teensy 4.1 with ethernet jack option
Proto board to mount the Teensy and ethernet jack. I turn the jack PCB side up and solder the jack shield can to the proto board such that it extends past the board edge and fits in a back panel cutout.
5V power supply for Teensy and for any 5V relays
4 channel bank of 5V relays, opto-coupled. Trigger set for HI so it becomes 3.3V compatible. Having the jumper on LOW wil ltie teh input to 5V and cause trouble for the 3.3V Teensy IO ports.
1 channel 5V opto-coupled relay module. Again trigger option is set to HI.
1 155uF run capacitor, 50VAC or better.
standoffs to mount the power supply module, replay modules and CPU on proto board.
Some locking connectors for CPU connections on the proto board. A 4 pin is to be used for a Nextion LCD display later. Other connection go to the relays.