The goal of my SteppIR Interface project was to allow the two rigs in my SO2R contest station to share a 4-element SteppIR,
automatically retuning the SteppIR to match the band or frequency of the selected rig and making sure that the rig's amp doesn't
transmit while the SteppIR is retuning.
The SteppIR can be manually tuned via front-panel buttons or automatically tuned via a serial port. The problem with
manual tuning is forgetting to do it at 3:00 AM the second night of a 48-hour contest! For this reason, all antenna
switching in my station is automated using band decoders. Unfortunately, the SteppIR controller doesn't support band decoder
input.
The SteppIR's serial port tuning works by evesdropping on the protocol between the rig and a contest program (I use Writelog.)
SteppIR suppies a Y-cable for this purpose. Serial port tuning works OK, but there's no built-in way to switch the serial interface
between two rigs. This could be done with relays, but if the two rigs are not identical, there's no quick and easy way to
change the SteppIR's transceiver protocol settings (it takes several keystrokes and a power off/on cycle.)
My first attempt at this project was to interface the band decoder output from the selected rig to the SteppIR's front-panel
buttons, effectively simulating manual button pushing. I modified my antenna switch interface logic to break out the band
decoder outputs from the rig that has the SteppIR, along with a signal indicating whether or not either rig has the SteppIR,
+12VDC and ground. The band decoder signals were connected to a set of 555 timers (one per band) that triggered relays
tack soldered to the SteppIR front-panel buttons. When a new band was selected, the leading edge of the band decoder
signal for that band would trigger a 555 timer to close a relay for about a half second, simulating the push of a band button.
The 555 timer was necessary because it was not possible to simply hold the button closed (i.e., connect the band signal directly
to the relay.) This would locked out the button, making it impossible to manually select other segments.
Unfortunately, there was considerable instability in the band decoder output, causing a lot of false triggering
of the 555 timers. Some further engineering might have solved this problem (using Schmitt triggers, for example), but there
were other problems. First, there was no way to choose the target SteppIR frequency -- it would simply return to the
last segment used on the selected band. Second, if the same band was selected twice in a row, which could happen
when swapping the rig VFOs, the SteppIR would advance to the next segment.
N8LP, designer of several excellent add-on hardware and software products for the SteppIR (see
http://www.telepostinc.com/n8lp.html), recommended that I build a smart interface based on a programmable PIC microcontroller. The PIC could debounce the band
decoder outputs, make intelligent decisions about selecting segments and, best of all, could act as a serial protocol converter
for the two rigs. The latter feature would tune the SteppIR to the exact frequency being used by the selected rig.
Also on Larry's recommendation, I used products from a company called Basic Micro (
www.basicmicro.com.) I started out using their Atom interepreter chip, but soon realized that I would gain flexibility and speed by using the
much less expensive standard PIC chip and the company's MBasic compiler. It's been a long time since I've done any serious
programming, and this project brought back memories of writing multi-tasking code in assembler for mainframes back in the
1970s!
My SteppIR interface supports retuning either from the rig band decoder outputs or serial ports, selectable via a front-panel
switch.
In the Band Decoder mode, the interface monitors band decoder output from the rig that has the SteppIR and, when the
band changes, instructs the SteppIR to retune. The retuning instructions are sent to the Data Out port on the SteppIR controller,
using the SteppIR protocol. The selected rig and band are displayed on front panel LEDs. A front-panel switch selects between
the CW and SSB segment of each band.
In the Serial mode, the interface monitors the protocol between Writelog and the rig that has the SteppIR. The interface
supports two rigs: the Ten-Tec Orion and the Yaesu FT-1000D. The transmit VFO frequency from the selected rig is converted
to SteppIR format and sent to the Data Out port using the SteppIR protocol. Front panel LEDs are used to display status information,
such as the selected rig and protocol timeouts (among other things, the latter can indicate that Writelog isn't running.)
The Orion protocol is straightforward and easy to process, though it only runs at 57600 baud, requiring use of the sole
buffered and interrupt-driven UART port on the PIC. An interesting complication arose when interrupts from the Orion
data stream caused bits to be lost on non-buffered serial input from the Yaesu and SteppIR. This was solved by turning off
the UART at strategic moments (easier said than done.)
The Yaesu protocol is not so straightforward. There are no headers or trailers on the data packets, and nothing
static in them that can be used to identify the start and end of the packet. SteppIR has admitted that this causes their
Yaesu serial code to be unreliable. To solve this problem in my SteppIR interface, the PIC waits for a pause in the
polling sequence, which corresponds to a configurable polling delay in the logging program. The PIC then knows that the
next 36 characters will be the Yaesu data packet. This approach depends on a polling pause of at least 100 ms and a data packet
of 36 characters in FT-1000D format. Definitely a kludge, but it works.
The interface also routes the amp key line from the selected rig to an N8LP Tuning Relay. This terrific device monitors
the SteppIR controller and interrupts the amp key line whenever the SteppIR is retuning. SteppIR recommends that no more than
200W be sent to the antenna when it's retuning, so the N8LP Tuning Relay is a great safety feature. My interface uses a couple
of miniature relays to route the amp key lines. These are driven directly by signals coming out of my antenna interface, and
are independent of my SteppIR interface. That way, the amp key-line routing will function even when the interface is powered
down. Note that the relays are not designed for older rigs using high-voltage keying circuits.
In theory, the interface could have done the job of the N8LP Tuning Relay by requesting a SteppIR status
packet, which contains a field indicating if any motors are in operation. However, I found that the status packet was not
100% reliable, probably due to the controller not having enough horsepower to keep up with retuning the antenna and servicing serial
port requests. So, my interface simply routes the amp key lines to the N8LP Tuning Relay, which is completely reliable.