Automatic Control of RCA TV Antenna Rotator for Satellite Azimuth Tracking

Arrow antennaRCA TV antenna rotator controller    Many ham radio satellites operate at frequencies similar to those that were used by VHF and UHF TV stations in the years before cable or satellite TV. Therefore, antennas that are suitable for ham radio satellites on the 2 meter and 70 centimeter bands are of similar size and weight as the old roof-mounted outdoor TV antennas, the kind that were popular in rural areas, some distance from the TV tower.

    My satellite antenna (photo left) is designed to be hand held. Notice the bumbershoot handle at the right hand end of the boom. The antenna is actually two antennas on one boom. The four larger elements are for the 2 meter band, while the orthogonally-mounted multi-element Yagi is designed for the 70 centimeter band. Since the Arrow antenna is similar in size and weight to an outdoor TV antenna, it can be rotated using a TV antenna rotator such as the RCA model VH226E. Of course this rotator only tracks the satellite’s azimuth, not its elevation. Ideally the antenna would point directly toward the satellite, not below or above it. However, rotators that control both azimuth and elevation are specialty products—not low-cost consumer items.

    As the photo shows, my antenna is mounted at a fixed elevation angle of approximately 30 degrees. I was aiming for 20 degrees but left the heat gun on too long! In any case, it is a typical setup for a modest amateur radio satellite station. A great many other ham operators use exactly the same antenna and TV antenna rotator as I am using. Of course, the rotator was never meant to be used in this way, so it does not have a computer interface. The intended application goes something like this: You sit on the couch in front of the TV with remote control in hand, pushing buttons until the snow disappears, or the picture stops scrolling. In this once easy-to-imagine activity lies the key to a solution for satellite azimuth tracking.

     The remote control: How does that thing work anyway? The signal that passes from the handheld remote to the RCA controller box is modulated infrared (IR) light. The remote emits IR signals that are received by a sensor in the controller box. As it happens, IR sensors and emitters are a common item of interest to electronics hobbyists. They are used with remote control vehicles and robots and so forth. For this same reason, application examples are also commonplace. When the idea occurred to me that it might be possible to receive and decode signals emitted by the RCA TV rotator remote, I had no inkling of how easy this would turn out to be. In fact that part of the problem was already fully solved by an example sketch that is included with the Arduino IRremote.h library. I connected a sensor—yes there was one in the drawer. (Finding long forgotten small things is one of my wife’s many gifts.) In no time at all I had a listing of the codes that are produced by pressing either memory buttons or arrow buttons, the latter for producing arbitrary degrees of rotation.

IR Interface

     IR sender: We are already near the end of the hardware part of this story. To test whether the codes that were intercepted from the remote could be used to activate the RCA tabletop controller, I loaded an IR emitter example sketch to an Arduino Uno (not shown) and first sent the codes to the test IR sensor rig. There they were received and interpreted the same as codes from the remote itself. After that I sent them to the RCA controller and of course they worked the same there as well.

    At this point I began to think about a full-fledged azimuth interface. For this project I selected the Heltec WiFi Kit 32(V3) that is shown in the photo above. There were two reasons for choosing the Heltec. First, one was sitting on my desk waiting to be used for something, and second I thought the integrated OLED display might be useful for providing feedback regarding azimuth adjustments as they were being made. There was a third reason, but I’ll defer that one for now.

     Wiring and setup: As the above photo shows, very little wiring is needed to complete the interface.  The input format is serial, either 3 volt TTL (orange to green to GPIO 47 in the photo) or RS-232 (move the green jumper to the 3 volt TTL output of the RS-232 to TTL adapter).  The IR emitter signal is also 3 volts (GPIO 4 white to yellow in the photo). The rest is just power supply wiring.

    The input source that supplies serial azimuth data by way of the 3.5 mm mono jack is a custom microcontroller-based satellite tracking device. My Sats Helper outputs the same parameters as popular satellite tracking computer applications do, including Doppler corrected transmit and receive frequencies, azimuth, elevation, and range etc. However, a full description of the source data component, whether computer-based or standalone is beyond the scope of this interface project summary. It should only be necessary to understand the format of the azimuth data that are transmitted to the IR interface via a serial wire. The data format is configurable in the sketch, but by default is a subset of the EASYCOMM-1 interface format. Only one command element is needed AZxxx, where xxx stands for a 1 to 3 digit target azimuth. The command is terminated by CR (0x0D).

Azimuth 2-step adjustment    A ham radio satellite friend Roger (N1NN) suggested preloading the RCA rotator controller’s letter-labeled memories A, B, C, ..., J, U, L with the values 0°, 30°, 60°, ... 270°, 300°, 330°. This facilitates rotating to an initial azimuth value that is possibly far from the antenna’s starting position with just one button press. As presently implemented, the IR interface depends on this convention, as it first commands the controller to rotate to the 30° multiple that is closest to the target azimuth, and then emulates a timed arrow button press for the final few degrees (less than 15°) of adjustment.


    Software: The interface sketch was compiled for Heltec WiFi Kit 32(V3) using  the Arduino IDE version 2.2.1. This sketch is currently under development. I am posting it in its present form as version 1.0. ** See Addendum 2 below for the most recent software revision. ** The sketch can be used either in the way I have described, or as a framework for interfacing to the RCA VH226E TV antenna controller in other application contexts. Note that it will be necessary to install the IRremote library1 including the referenced pin definitions in order to compile the sketch in the Arduino IDE.

 
USB-A to RS232 Cable    Addendum 1: Sat32PC seems to be the most popular Windows platform application for ham radio satellite work. Therefore I will describe how SatPC32 can be configured to send azimuth data to the IR rotator interface. There is no point in explaining my ‘Sats Helper’ interface as only one of those exists and it sits on my radio desk.

FTDI default COM port    You will need a USB-A to RS232 cable to connect a Windows computer with the rotator IR interface, for example the one pictured on the left.2You could make your own, as I have done in the past, but it is probably better to purchase one ready-made. They are not expensive. Plug the cable into a USB port—No need to connect the DB9 (RS232) end. A USB-to-serial (FTDI) chip is built into the cable. Now start Device Manager on the Windows machine and observe that Windows has assigned a COM port number to the serial device in the cable (example illustration right).  If you have multiple active COM ports, unplug and plug-in the cable in order to ascertain which COM port assignment belongs to the FTDI device. Make a mental note of the number or jot it down.

    You will also need a DDE client. I downloaded and installed the WiSP DDE Client (version 4.3) from this page. Key steps in the following paragraphs refer to this specific DDE message receiver/parser.

SatPC32 Rotor Setup

    From the SatPC32 main menu bar select ‘Setup’ and then ‘Rotor Setup’. In the Rotor Setup dialog, choose DDE from the Rotor interface/controller drop-down list. Accept defaults for the remaining configurable values and store the setup. That’s all there is to the server side of the interface setup.

WiSP DDE and Rotor setup

    From the WiSP DDE client’s main ‘Settings’ menu first select ‘DDE Link’ (left illustration above) and then choose SatPC32 from the drop-down list. Remaining fields should default to the values shown. If not, make it so. Store and close this dialog. You may notice that WiSP reports ** NO SATELLITE **. Unless a pass is in progress for whatever satellite has been selected in SatPC32, this message is normal. In fact it is good, as it proves WiSP is receiving the DDE broadcast from SatPC32.

    Next from the WiSP ‘Settings’ menu select ‘Rotor’ (right illustration above). From the ‘Interface Type’ drop-down list choose EASYCOMM-1. That is the obvious part.  Next proceed to the Port drop-down list. Notice that there are just four selectable COM port values COM1 through COM4. It is unlikely that Windows has associated one of these numbers with the FTDI chip. Generally the virtual COM port assignment will have been a larger number, such as the COM14 example from my Windows 11 computer. Make sure that the COM number you choose in the Rotor Setup is not already in use. In the above illustration I have selected COM2. Finally set the data rate (BAUD) to the value 9600 if it is not already so.


Step-by-step Change COM port number

    This is where things get interesting. In order to channel WiSP’s EASYCOMM-1 formatted output to the FTDI cable we will change the cable’s COM port assignment from the original number (COM14 in the example) to the port that was selected in WiSP (COM2 in the example). Plug-in the USB-to-RS232 cable if it is not already plugged in. Open Windows Device Manager, right click the cable’s entry and choose ‘Properties’ (leftmost illustration above). In the Properties dialog select the ‘Port Settings’ tab and in that dialog click the ‘Advanced’ button (second illustration from left, above).

    In the ‘Advanced Settings’ dialog change the COM Port Number from its originally assigned value to the port number that was specified in WiSP. In the illustrated example, COM14 is changed to COM2 (second from right above). After accepting the change, observe that Device Manager now refers to the USB Serial (FTDI) Port by the number that was specified for WiSP output (rightmost illustration above). This completes the software setup for the SatPC32 to Azimuth controller interface.

Enclosed IR Interface    The RS232-to-TTL adapter used in the antenna (IR) interface (this one from Amazon) has silk-screened arrows that indicate the data-flow direction of TTL pins. That is such a great idea, certainly easier to interpret than ‘transmit’ / ‘receive’ markings would be. Thus it is obvious which pin should be jumpered to the microcontroller’s serial input pin (GPIO47).

    I normally use ‘Sats Helper’ as the azimuth data source for radio operations, and have installed a DIP switch to enable the DB9 connector as the input for testing with SatPC32. It is only necessary to plug or unplug ‘Sats Helper’ from the 3.5 mm jack and toggle the DIP switch to change the source.

    Addendum 2: Many ham radio antenna rotators boast a range of 450°. Such a range allows rotating clockwise past 360° or counterclockwise past 0°. The RCA TV antenna rotator does not need this feature when used in its intended application. However, during a subset of
ham radio satellite passes the satellite’s path crosses 0 degrees, and when it does the antenna rotator has to perform a full rotation in the opposite to its previous direction, consuming nearly a minute of time. During this time the azimuth continues to change, sometimes quite rapidly. To avoid overshooting this moving target, the controller interface (as revised) first rotates to 180°. At this point it wipes any queued azimuth updates and waits for a new one (on average half the interval between updates, e.g. a couple of seconds). Upon receiving a fresh azimuth message the controller interface first rotates to the 30-degree multiple that is closest to the received value, and then adjusts to the target azimuth.

    In addition to the change described in the preceding paragraph revision 1.1 of the interface incorporates other small improvements. Source comments and debug statements convey more detail about how the interface processes azimuth messages in all contexts.





Projects Home


  
1. IRremote by shirriff, version 4.2.0.
2. Unless your computer has a hardware serial port. Newer appliance computers do not generally have such ports.





Project descriptions on this page are intended for entertainment only. The author makes no claim as to the accuracy or completeness of the information presented. In no event will the author be liable for any damages, lost effort, inability to carry out a similar project, or to reproduce a claimed result, or anything else relating to a decision to use the information on this page.