Arduino Circuit Breaker Simulator

Need to test some large circuit breakers?  You may have found your solution!  This Arduino circuit breaker simulator project was submitted by James, a member of Programming Electronics Academy.

Let me just say I am impressed – I wish I could build something half as cool!

Arduino Circuit Breaker Simlulator

This project was submitted by one of our members.  You can see more of our member's projects here.

Not a member yet?  Sign up here.

James writes this about his project…

I work at a power plant and we routinely test large circuit breakers. Because of the constant closing and tripping these breakers take a lot of needless wear and tear.

I decided to build a device that would simulate the breaker.

Large circuit breakers have several circuits that indicate open and close conditions, additionally they perform other functions like alarms and activating other relays.

Technicians needed a small lightweight device that could easily be plugged in and simulate all the same functions.

James was kind enough to provide all the details of the project including the schematic and the code.

You have done an excellent job putting together a comprehensive course that is easy to understand and follow. It has helped me progress very quickly in my understanding how Arduino works.

-James Greever

Schematic for the Arduino Circuit Breaker Simulator:

Breaker_Simulator_schem

Arduino Code:

// setting up LCD library

#include 

LiquidCrystal lcd(12,11,5,4,3,2);

//ENSURING PINS ARE NOT ACCIDENTLY CHANGED

const int closePin= 8;//close voltage

const int breakerRelay= 9; // close and trip relay

const int tripButton= A4; // trip voltage input, not actually a button

int battery;

int long calculated_battery;

int buttonstate;

int changestate;

int laststate;

int trip=0;

//FIRST PART LOOKS AT BATT VOLTS AND DISPLAYS. THEN EST BREAKER IS OPEN

void setup(){

  battery=analogRead(A0);

  calculated_battery=(battery/1023)*5.00;

  pinMode(closePin, INPUT_PULLUP);

  lcd.begin(16, 2);

  lcd.clear();

  pinMode(breakerRelay, OUTPUT);

  lcd.setCursor(5,0);

  lcd.print("Breaker");

  lcd.setCursor(0,1);

  lcd.print("Stimulator v1.1");

  delay(5000);

  lcd.clear();

  lcd.setCursor(0,0);

  lcd.print("5V supply:");

  lcd.setCursor(11,0);

  lcd.print(calculated_battery);

  lcd.setCursor(14,0);

  lcd.print("V");

  delay(5000);

  changestate = HIGH;

}

void loop(){

  buttonstate = digitalRead(closePin);

  laststate = changestate;

  trip = analogRead(tripButton);

  // delay was needed so text on LCD display would not flicker so badly

  delay(100);

  // TRIP BREAKER

  if (changestate == HIGH && laststate == HIGH && buttonstate == HIGH || buttonstate ==

    HIGH && trip < 335 && laststate == LOW){

    openBreaker();

  }

  // CLOSE BREAKER

  else if (changestate == LOW && laststate == LOW || buttonstate == LOW && trip <

    300){

    closeBreaker();

  }

}

// close breaker function

void closeBreaker(){

  changestate = LOW;

  lcd.clear();

  digitalWrite(breakerRelay, HIGH);

  lcd.setCursor(5,0);

  lcd.print("CLOSE ");

  if (trip < 335){     readymessage();   }   else if (trip >335){

    notreadymessage();

  }

}

// open breaker function

void openBreaker(){

  changestate = HIGH;

  lcd.clear();

  digitalWrite(breakerRelay, LOW);

  lcd.setCursor(3,0);

  lcd.print("TRIP/OPEN");

  lcd.setCursor(0,1);

}

// THE FOLLOWING SUBS ARE TO INFORM OPERATOR, WHEN BREAKER CAN BE

TRIPPED/OPENEND

void readymessage(){

  lcd.setCursor(6,1);

  lcd.print("ready");

}

void notreadymessage(){

  lcd.setCursor(3,1);

  lcd.print("standby");

}

James would love to hear your thoughts and suggestions in the comments.

installing Arduino libraries

Installing Arduino Libraries | Beginners Guide

IoT sewage project

Pumping poo! An IoT sewage project

ESP32 webOTA updates

How to update ESP32 firmware using web OTA [Guide + Code]

error message Brackets Thumbnail V1

expected declaration before ‘}’ token [SOLVED]

Compilation SOLVED | 1

Compilation error: expected ‘;’ before [SOLVED]

Learn how to structure your code

6 Comments

  1. Ramesha Dasharatharam on January 10, 2016 at 8:03 am

    Hi: would need to understand what all conditions of the breakers are simulated, could it be used for Medium Voltage breakers of 11kV as well?

  2. Mahira Banu on February 28, 2017 at 12:21 am

    Hai i would like to control circuit breaker from web application wil you help me and this code giving error “REady message is not decared in the scope”
    Will you pls guide me to clear the work

  3. Dale on August 28, 2019 at 3:22 pm

    Do you have any more detail and pictures of this project?

    • Michael James on August 29, 2019 at 10:12 am

      Hi Dale! Outside of the schematic listed and the posted code, I do not have anything more. I’ll reach out to our student and see if he has more.

      Is there something specific you are looking for?

  4. Mr Robert Henry Kirksby Grayson on March 13, 2023 at 9:29 pm

    I like to know this information #include says Output exit status 1
    Compilation error #include expects “FILENAME” or

    • Michael James on March 13, 2023 at 9:59 pm

      Is this an error you are getting in Tinkercad?

Leave a Comment