Arduino sequencer

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.

sequencer-nano sequencer-nano

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.

DSC_5310

DSC_6282DSC_6284

/*
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
      
    }
     
    
  }

Google ads