In the attached photos, an Arduino microcontroller is mounted adjacent to the Orion MKII board. Its purpose is to manage PureSignal relay activation. When the microcontroller senses activity on the CW line, a pair of PhotoMOS optocouplers (ASSR-1520) open two relay coils (RL17 and RL19). This action occurs only in CW mode. Bypassing the PureSignal relays on transmit substantially reduces acoustic relay chatter. Several LEDs can be seen; they’re used as status indicators.
Another photo shows K5 (T/R relay) replaced with a silent RF reed relay (Aromat/Matsushita RSD-12V). The relay is shock-mounted with RTV on the PA board. Fine-stranded silicone robotics wire further decouples noise from the relay. In CW, only the reed relay is activated. With the cover in place, there’s zero mechanical noise; it’s as quiet as PIN diode RF switching. RL19’s control line is hard-wired in parallel with K5 so a software/firmware fix isn’t possible.
A third photo shows a Dow-Key microwave relay (P/N 401-2208) installed near the cooling fan. The relay is controlled by Thetis’ open-collector table. The relay routes transmit RF from the Orion board to either: (1) the 100W PA; or (2), an SMA connector on the back panel. The latter allows for directly feeding Orion into my LDMOS amp without the need for padding at the amp input. There appears to be some simple low-pass filtering on Orion – and of course the external amp has its own LPF based on band of operation. I’ll need to make measurements to ensure harmonic and spurious levels are adequately attenuated.
The Arduino microcontroller code is attached.
Paul, W9AC
Code: Select all
/***************************************************************************************************************************************
* ANAN 7000DLE PureSignal Relay Inhibit Routine (RL17, RL19) *
* (test version 0.11) *
* Paul Christensen, W9AC (04/14/2019) *
* © 2019 Paul Christensen, W9AC *
* All rights reserved, although program may be freely copied or modified for non-commercial use. *
* e-mail: w9ac@arrl.net *
* *
* 1) When operating in CW mode, this program deactivates two relays (RL17 & RL19) on the ANAN 7000DLE PA board. These relays are used in*
* the PureSignal linearization algorithm and serve no purpose in CW mode. Deactivation results in quiet QSK operstion. *
* *
* 2) Orion's dit and dah lines are sampled for key contact closure. Upon sensing closure of either or both contacts, two photoMOS *
* relays open and and are placed in series with the RL17 and RL19 relay coils. The end result is that both RL17 and RL19 are *
* deactivated during CW operation. *
* *
***************************************************************************************************************************************/
/***************************************************************************************************************************************
* *
* the following terms are fixed definitions *
* *
***************************************************************************************************************************************/
#define ditSample 2 // the controller digital pin for Orion 'dit' key line sample
#define dahSample 3 // the controller digital pin for Orion 'dah' key line sample
#define outputLED 4 // the controller digital pin for output status LED, photoMOS relays driving ANAN RL17 & RL19
#define ditLED 5 // the controller digital pin for Orion 'dit' key line LED
#define dahLED 6 // the controller digital pin for Orion 'dah' key line LED
/***************************************************************************************************************************************
* *
* the delay terms below are variable definitions. Delay time in millseconds (ms.) *
* *
***************************************************************************************************************************************/
long interval = 1000; // enter interval time to pulse PS relays
long pulseMillis = 0; // create register to store last time pulse measurement was updated; initialize
/***************************************************************************************************************************************
* *
* the setup routine runs once to initialize I/O *
* *
***************************************************************************************************************************************/
void setup() {
pinMode(ditSample, INPUT); // declare pin 2 to be a digital input
pinMode(dahSample, INPUT); // declare pin 3 to be a digital input
pinMode(outputLED, OUTPUT); // declare pin 4 to be a digital output
pinMode(ditLED, OUTPUT); // declare pin 5 to be a digital output
pinMode(dahLED, OUTPUT); // declare pin 6 to be a digital output
digitalWrite(ditSample, HIGH); // set dit key input line high
digitalWrite(dahSample, HIGH); // set dah key input line high
digitalWrite(outputLED, HIGH); // turn off output status LED, photoMOS relays driving ANAN RL17 & RL19
digitalWrite(ditLED, LOW); // turn off dit key line LED
digitalWrite(dahLED, LOW); // turn off dah key line LED
}
/***************************************************************************************************************************************
* *
* the loop routine repeats at the rate of CPU clock speed *
* *
***************************************************************************************************************************************/
void loop() {
if (millis() - pulseMillis > interval) { // compute time after either dit and/or dah line closure sensed
digitalWrite(outputLED, HIGH); // after waiting the pulse interval time, activate output status LED, photoMOS relay that drives ANAN RL17 and RL19
pulseMillis = millis(); // reset interval timer
}
if (digitalRead(ditSample) == LOW) { // get the dit line state
digitalWrite(ditLED, HIGH); // turn on dit key line LED if dit contact closed
digitalWrite(outputLED, LOW); // deactivate output status LED, photoMOS relay that drives ANAN RL17 and RL19
pulseMillis = millis(); // save the current time to a register for pre-switch LED pause duration
}
else {
digitalWrite(ditLED, LOW); // turn off dit key line LED
}
if (digitalRead(dahSample) == LOW) { // get the dah line state
digitalWrite(dahLED, HIGH); // turn on dit key line LED
digitalWrite(outputLED, LOW); // deactivate output status LED, photoMOS relay that drives ANAN RL17 and RL19
pulseMillis = millis(); // save the current time to a register for pre-switch LED pause duration
}
else {
digitalWrite(dahLED, LOW); // turn off dah key line LED
}
}