Arduino sequencer
To work together with the Arduino Power SWR meter we made a simple sequencer with the Arduino nano. It is highly flexible and easy to build on a veroboard. I decided to use open collectors for switching PA, Preamp, coax relays. The schematic can viewed below.
Pin D6 can be connected to the Power / SWR meter. If the Power meter detects an alarm.
This pin will go high and switch of the sequencer without delays. Delays can be
set in the software. These advantages and the low part count make it hard to beat by a
“conventional” sequencer.
/* Sequencer veur Sjaek dae perse 2 processors in ein PA wiltj duuje 15 mei 2015 */ //variables for the sequencer int txgnd=2; // on pin Digital 2 PTT int relay1=3; // on pin Digital 3 int relay2=4; // on pin Digital 4 int relay3=5; // on pin Digital 5 int alarminput = 6; //on pin Digital 6 int alarmled = 7; // alarmled on pin 7 int txgndstate = 0; int alarminputstate = 0; void setup() { //setup sequencer pinMode(relay1, OUTPUT); //coaxrelay pinMode(relay2, OUTPUT); //Power PA pinMode(relay3, OUTPUT); //RF input relay pinMode(txgnd, INPUT_PULLUP); pinMode (alarminput, INPUT); // initialize alarminput as input pinMode(alarmled, OUTPUT); //alarmled will light in case of alarm digitalWrite(relay1, LOW); digitalWrite(relay2, LOW); digitalWrite(relay3, LOW); digitalWrite(alarmled, LOW); digitalWrite(alarminput, LOW); } void loop() { Serial.begin (9600); // code for sequencer txgndstate = digitalRead (txgnd); if (txgndstate == LOW) { // go to transmit digitalWrite(relay1, HIGH); //coaxrelay ON delay(100); // 20 ms to let the coaxrelay switch digitalWrite(relay2, HIGH); //Power PA -ON delay(100); // 20 ms digitalWrite(relay3, HIGH); //RF-PA ON //Serial.println } if (txgndstate == HIGH) { // go to receive digitalWrite(relay3, LOW); //RF-PA off delay(100); // 20 ms digitalWrite(relay2, LOW); //Power PA OFF delay(100); // 20 ms to let the coaxrelay switch digitalWrite(relay1, LOW); //coaxrelay OFF } alarminputstate = digitalRead (alarminput); if (alarminputstate == HIGH) { digitalWrite(relay3, LOW); //RF-PA OFF digitalWrite(relay2, LOW); //Power PA OFF digitalWrite(relay1, LOW); //Coaxrelay OFF digitalWrite(alarmled, HIGH); //Alarmled ON delay(10); while(1) { } //endless loop to stop } } |