RCS-10 Arduino Controller

Last week we used an Arduino Mega to control some relays. This week we will be taking our basic setup and use it to control a RCS-10 antenna switch. The relays have been soldered to a project board. LEDs were not used on the project board. If you would like LEDs to remain in your project, it will not cause any issue.

The RCS-10 requires 3 relays to operate. I have added a fourth for future use. The relays are programed according to the table in the product manual. The output to the control head needs 12vdc. this has not been connected to the relays yet. This will be connected and tested in future posts.

Only 2 buttons are required for this project. The third button in the picture is for future use and is connected to pin D26. Pin D22 is the up button and D24 is the down button. The antenna selected is displayed on the LCD screen.

Advertisements
Advertisements

Since the onboard power regulator is not capable of a lot of power, A 7805 power regulator is being used to power the project. When this regulator is connected to 12vdc it produces a good amount of heat. Make sure to put a decent heatsink on the regulator.

Advertisements
/*Arduino Mega RCS-10 Control
  https://MacarrLabs.com/
  https://KM4NMP.com/
  Author: Matthew Carr, Macarr Labs LLC 6/8/19
  Arduino Mega Sketch
*/
//Libraries 
#include <Wire.h>  
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

const int UpButtonPin = 22;  //set up button pin
int UpButtonPinState = 0; //up button pin state
const int DownButtonPin = 24;  //set down button pin
int DownButtonPinState = 0;
const int OutputA = 52;  //set output a pin
const int OutputB = 50;  //set output b pin
const int OutputC = 48;  //set output c pin
int RelayNumber = 1;
const int ButtonPwrNegPin = 28; //set pin for button negative
const int ButtonPwrPlusPin = 30; //set pin for button positive
 
void setup() {
  lcd.begin(16,2); //Start LCD
  lcd.backlight(); //Turn LCD Backlight on

  pinMode(ButtonPwrNegPin, OUTPUT);  //initialize the ButtonPwrNegPin as an output
  pinMode(ButtonPwrPlusPin, OUTPUT);  //initialize the ButtonPwrPlusPin as an output
  pinMode(UpButtonPin, INPUT);  //initialize the UpButtonPin as an input
  pinMode(DownButtonPin, INPUT);  //initialize the DownButtonPin as an input
  pinMode(OutputA, OUTPUT);  //initialize the Output A pin as an output
  pinMode(OutputB, OUTPUT);  //initialize the Output B pin as an output
  pinMode(OutputC, OUTPUT);  //initialize the Output C pin as an output

  digitalWrite(ButtonPwrPlusPin, HIGH);
  digitalWrite(ButtonPwrNegPin, LOW);

 lcd.setCursor(0,0);
 lcd.print(" MACARRLABS.COM");
 lcd.setCursor(0,1);
 lcd.print("   KM4NMP.COM");
 delay(3000);
 lcd.clear(); 
}

void loop() {
   //check button states
  UpButtonPinState = digitalRead(UpButtonPin);
  DownButtonPinState = digitalRead(DownButtonPin);
  
  if(UpButtonPinState == HIGH) {
    RelayNumber = RelayNumber + 1;
  }
  if(DownButtonPinState == HIGH) {
    RelayNumber = RelayNumber - 1;
  }
  if(RelayNumber > 8) {  //put a max of 3 for relay number
    RelayNumber = 8;
  }
  if(RelayNumber < 1) {  //put a min of 1 for relay number
    RelayNumber = 1;
  }
  
  //check relay number and activate outputs according to number
if(RelayNumber == 1) {
  lcd.setCursor(0,0);
  lcd.print("Antenna 1");
  digitalWrite(OutputA, LOW);
  digitalWrite(OutputB, LOW);
  digitalWrite(OutputC, LOW);
  }
Advertisements
if(RelayNumber == 2) {
  digitalWrite(OutputA, HIGH);
  digitalWrite(OutputB, LOW);
  digitalWrite(OutputC, LOW);
  lcd.setCursor(0,0);
  lcd.print("Antenna 2");
  }
  
  
if(RelayNumber == 3) {
  digitalWrite(OutputA, LOW);
  digitalWrite(OutputB, HIGH);
  digitalWrite(OutputC, LOW);
  lcd.setCursor(0,0);
  lcd.print("Antenna 3");
  }
 
 
  if(RelayNumber == 4) {
  digitalWrite(OutputA, HIGH);
  digitalWrite(OutputB, HIGH);
  digitalWrite(OutputC, LOW);
  lcd.setCursor(0,0);
  lcd.print("Antenna 4");
  }
  
  if(RelayNumber == 5) {
  digitalWrite(OutputA, LOW);
  digitalWrite(OutputB, LOW);
  digitalWrite(OutputC, HIGH);
  lcd.setCursor(0,0);
  lcd.print("Antenna 5");
  }
  
  if(RelayNumber == 6) {
   digitalWrite(OutputA, HIGH);
  digitalWrite(OutputB, LOW);
  digitalWrite(OutputC, HIGH);
  lcd.setCursor(0,0);
  lcd.print("Antenna 6");
  }

  if(RelayNumber == 7) {
  digitalWrite(OutputA, LOW);
  digitalWrite(OutputB, HIGH);
  digitalWrite(OutputC, HIGH);
  lcd.setCursor(0,0);
  lcd.print("Antenna 7");
  }

  if(RelayNumber == 8) {
  digitalWrite(OutputA, HIGH);
  digitalWrite(OutputB, HIGH);
  digitalWrite(OutputC, HIGH);
  lcd.setCursor(0,0);
  lcd.print("Antenna 8");
  }
  

 delay(150);
  
}
 

Links

https://km4nmp.com/2019/03/16/ameritron-rcs-10-review/

https://km4nmp.com/2019/05/19/ameritron-rcs-10-fuse-replacement/

https://km4nmp.com/2019/05/25/connecting-the-uln2003-to-the-arduino-mega/

https://km4nmp.com/2019/06/01/arduino-mega-relays-controlled-by-push-buttons/

Latest Posts

Advertisements

1 thought on “RCS-10 Arduino Controller

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this:
search previous next tag category expand menu location phone mail time cart zoom edit close