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)
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.
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
DC Motor – 3–6V DC
DPDT Relay – 5V coil, 10A contacts
Red, Green and Yellow LED
Resistors (LED series resistors) – 220Ω, 0.25W
Push Button (x3) NO
3‑Position toggle Switch (On/Off/On)
NTC thermistor – 10k
Power Supply – 9V DC
Flyback Diode (1N4007) – 1A, 1000V
Breadboard
Jumper Wires
10k resistor(NTC thermistor)
1k resistor x4(Push buttons and transistor)
7805 Voltage regulator
2N2222 transistor