A 3 phase DOL 400VAC motor control panel prototype using Arduino mega

Greetings everyone. May I kindly get assisted with the components that I will need to design a prototype for this project; I have done my research and the following on the document is apparently what I will need.

BOM.pdf (137.6 KB)

That sounds like an interesting project that could be a lot of fun! However, Please keep in mind that we are not a free design or code-writing service. We’re more than happy to help with your design or code, but we need you to make an initial attempt. Please design and write your code, then post it along with an annotated schematic and an explanation of what’s not working properly. There is also a for hire section if you want to pay for it.

I would assume the teacher/professor expects you to learn how to do this and understand what you did. This is basic material and if you do not master this you will have an increasingly difficult time.

  1. Show Your Work First: Before asking for assistance, make an attempt to design or write the code yourself. Share your work along with details about what isn’t working. That includes a preliminary schematic that you drew.
  2. Provide Clear Documentation: Since we can’t see your project, share an annotated schematic (best) or a clear drawing of your setup. Clear Pictures are welcome, but avoid using Fritzing diagrams as they are wiring diagrams, not schematics, and are not ideal for troubleshooting.
  3. Include Technical Details: If there is specific hardware involved, include links to technical information. There are often many versions of similar components, so precise details are essential. I will assume the processor is a UNO. Many times the processor is stated as ESP32, please state which one and post a link to it.
  4. Reference Resources: For additional help, check out useful links and tutorials: Useful Links on Arduino Forum. Of course one of the better sources of information (in my opinion) is the Arduino Cookbook. Skim it cover to cover and stop on any project that interests you.

Hi, thank you, I needed to affirm the components are correct for the project I will be doing, I also would write my code and design first before asking for assistance because what other better way to learn than trying before just shooting to ask for assistance.

In that case, you must rework the BOM to make it real BOM with part numbers and the name of source for each component. Only then can someone see if the components might work for your project. As is, it is a shopping list, not a BOM.

Noted with thanks

Good day everyone, I have designed and simulated the low voltage motor control panel, below are the results.

Operational philosophy

  • Manual mode operation using the START and STOP push buttons.

  • Automatic mode operation triggered by the pressure switch.

  • Motor shutdown when the water returns to the normal level .

  • Overload condition response and system protection.

  • System behaviour when the main supply is switched O FF.

Code

// ================= PIN DEFINITIONS =================

const int relayPin = 3;




const int greenLED = 4;

const int redLED = 5;

const int yellowLED = 6;




const int startBtn = 8;

const int stopBtn = 9;

const int pressureSw = 10;

const int manualSwitch = 11;

const int autoSwitch = 12;

const int thermistorPin = A0;



// ================= THERMISTOR CONSTANTS =================

const float seriesResistor = 10000.0;   

const float nominalResistance = 10000.0;

const float nominalTemp = 25.0;          

const float betaCoefficient = 3950.0;




float temperatureC = 0;

float tripTemperature = 30.0;   // Fault triggers

float resetTemperature = 28.0;  // Auto reset temperature




// ================= MOTOR & FAULT STATE =================

bool motorState = false;

bool faultState = false;

unsigned long stopTimerStart = 0;

const unsigned long stopDelay = 15000; // 15 seconds (15000 ms)

bool timingStop = false;





// ================= SETUP =================

void setup() {




  pinMode(relayPin, OUTPUT);




  pinMode(greenLED, OUTPUT);

  pinMode(redLED, OUTPUT);

  pinMode(yellowLED, OUTPUT);




  pinMode(startBtn, INPUT);

  pinMode(stopBtn, INPUT);

  pinMode(pressureSw, INPUT);




  pinMode(manualSwitch, INPUT_PULLUP);

  pinMode(autoSwitch, INPUT_PULLUP);




  Serial.begin(9600);

}




// ================= READ TEMPERATURE FUNCTION =================

float readTemperature() {




  int adcValue = analogRead(thermistorPin);

  float voltage = adcValue * (5.0 / 1023.0);

  float resistance = (5.0 - voltage) * seriesResistor / voltage;




  float steinhart;

  steinhart = resistance / nominalResistance;

  steinhart = log(steinhart);

  steinhart /= betaCoefficient;

  steinhart += 1.0 / (nominalTemp + 273.15);

  steinhart = 1.0 / steinhart;

  steinhart -= 273.15;




  return steinhart;  // Celsius

}

// ================= MAIN LOOP =================

void loop() {




  // ===== READ TEMPERATURE =====

  temperatureC = readTemperature();

  Serial.print("Temperature: ");

  Serial.println(temperatureC);




  // ===== READ INPUTS =====

  bool startPressed  = (digitalRead(startBtn) == LOW);

  bool stopPressed   = (digitalRead(stopBtn) == LOW);

  bool pressureActive = (digitalRead(pressureSw) == LOW);




  bool manualMode = (digitalRead(manualSwitch) == LOW);

  bool autoMode   = (digitalRead(autoSwitch) == LOW);

  bool offMode    = (!manualMode && !autoMode);


  // ===== FAULT DETECTION =====

  if (temperatureC >= tripTemperature) {

    faultState = true;

  }


  // ===== FAULT AUTO RESET =====

  if (temperatureC <= resetTemperature) {

    faultState = false;

  }

  // ===== MOTOR CONTROL PRIORITY =====

  // Fault has highest priority

  if (faultState) {

    motorState = false;

  }

  //  Selector OFF has next priority

  else if (offMode) {

    motorState = false;

  }

  //  AUTO MODE

else if (autoMode) {

  if (pressureActive) {

    motorState = true;

    timingStop = false;   // Cancel any stop timer

  }

  else {

    // Pressure normal → start delay timer

    if (!timingStop) {

      stopTimerStart = millis();

      timingStop = true;

    }

    // Check if 1 minute passed

    if (millis() - stopTimerStart >= stopDelay) {

      motorState = false;

    }

  }

}

  // MANUAL MODE

  else if (manualMode) {

    if (startPressed) {

      motorState = true;

    }

    if (stopPressed) {

      motorState = false;

    }

  }

  // ===== LED INDICATION =====

  digitalWrite(greenLED, motorState);   // Running

  digitalWrite(yellowLED, faultState);  // Fault

  if (!motorState) {

    digitalWrite(redLED, HIGH);         // Stopped

  } else {

    digitalWrite(redLED, LOW);

  }

  // ===== RELAY OUTPUT =====

  digitalWrite(relayPin, motorState);


  delay(200);   // Small stabilization delay (acceptable here)

}

Numbered Component List

  1. DC Motor – 3–6V DC

  2. DPDT Relay – 5V coil, 10A contacts

  3. Red, Green and Yellow LED

  4. Resistors (LED series resistors) – 220Ω, 0.25W

  5. Push Button (x3) NO

  6. 3‑Position toggle Switch (On/Off/On)

  7. NTC thermistor – 10k

  8. Power Supply – 9V DC

  9. Flyback Diode (1N4007) – 1A, 1000V

  10. Breadboard

  11. Jumper Wires

  12. 10k resistor(NTC thermistor)

  13. 1k resistor x4(Push buttons and transistor)

  14. 7805 Voltage regulator

  15. 2N2222 transistor