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!
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:
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.
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?
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
Do you have any more detail and pictures of this project?
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?
I like to know this information #include says Output exit status 1
Compilation error #include expects “FILENAME” or
Is this an error you are getting in Tinkercad?