Hello all! I am currently building a jet engine and have decided to automate the startup sequence. I am using 4 relays, which are all common 5v. The way it works is it starts up in the following sequence
- Oil pump and fuel pump turn on
- Red LED (indicates pumps are on) turns on
- White LED (indicates starting sequence is activated);
- Motor and igniter turn on (LOW because of common 5v)
- Wait 100 seconds
- Igniter and motor turn off (Now HIGH)
- white LED turns off (indicating the end of the start sequence)
- green LED turns on (indicating the engine is resuming normal operation)
THIS CODE WORKS******
int OILPUMP = 13;
int FUELPUMP = 12;
int MOTORSTART = 11;
int IGNITER = 10;
int redled = 6;
int greenled = 7;
int whiteled = 8;
/*
This is the start up sequence for Evan McLain's jet engine
All rights reserved
*/
void setup() {
pinMode(OILPUMP, OUTPUT);
pinMode(FUELPUMP, OUTPUT);
pinMode(MOTORSTART, OUTPUT);
pinMode(IGNITER, OUTPUT);
pinMode(redled, OUTPUT);
pinMode(whiteled, OUTPUT);
pinMode(greenled, OUTPUT);
}
void loop() {
digitalWrite(OILPUMP, LOW); // turn the OIL PUMP on
delay(1000); // wait for a second
digitalWrite(FUELPUMP, LOW); // turn the FUEL PUMP on
digitalWrite(redled, HIGH); // RED LED ON R= Pumps on
delay(1000); // wait for a second
digitalWrite(whiteled, HIGH); // WHITE LED ON W= motor and igniter on
digitalWrite(MOTORSTART, LOW); // turn the MOTOR START on
delay(1000); // wait for a second
digitalWrite(IGNITER, LOW); // turn the IGNITER on
delay(100000); // wait for 100 sec
digitalWrite(MOTORSTART, HIGH); // turn the MOTOR START off
digitalWrite(IGNITER, HIGH); // turn the IGNITER off
digitalWrite(whiteled, LOW); // WHITE LED OFF W= motor and igniter on
digitalWrite(greenled, HIGH); // GREED LED ON G= engine in normal operation
while(true);
}
now that the engine is physically on, i would like it to compare a temperature reading, to prevent emergency overheating.
Ive written a code, but i am not sure how i need to make it so it will compare the temp at the same time the system is running. The code CANNOT restart (so i have put a while inside the loop). Later on i put the start sequence into the void setup so it would only run once, however it will not leave the emergency sequence…
THIS DOES NOT WORK*****
int OILPUMP = 13;
int FUELPUMP = 12;
int MOTORSTART = 11;
int IGNITER = 10;
int redled = 6; // RED LED ON R= Pumps on
int greenled = 7; // GREED LED ON G= engine in normal operation
int whiteled = 8; // WHITE LED OFF W= motor and igniter on
int emergency = 5; // EMERGENCY SHUTOFF
#define THERMISTORPIN A0
#define SERIESRESISTOR 10000
/*
This is the start up sequence for Evan McLain's jet engine
All rights reserved
*/
void setup() {
// initialize digital pin 13 as an output.
pinMode(OILPUMP, OUTPUT);
pinMode(FUELPUMP, OUTPUT);
pinMode(MOTORSTART, OUTPUT);
pinMode(IGNITER, OUTPUT);
pinMode(redled, OUTPUT);
pinMode(whiteled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(emergency, OUTPUT);
Serial.begin(9600);
digitalWrite(OILPUMP, LOW); // turn the OIL PUMP on
delay(1000); // wait for a second
digitalWrite(FUELPUMP, LOW); // turn the FUEL PUMP on
digitalWrite(redled, HIGH); // RED LED ON R= Pumps on
delay(1000); // wait for a second
digitalWrite(whiteled, HIGH); // WHITE LED ON W= motor and igniter on
digitalWrite(MOTORSTART, LOW); // turn the MOTOR START on
delay(1000); // wait for a second
digitalWrite(IGNITER, LOW); // turn the IGNITER on
delay(100000); // wait for 100 sec
digitalWrite(MOTORSTART, HIGH); // turn the MOTOR START off
digitalWrite(IGNITER, HIGH); // turn the IGNITER off
digitalWrite(whiteled, LOW); // WHITE LED OFF W= motor and igniter on
digitalWrite(greenled, HIGH); // GREED LED ON G= engine in normal operation
}
void loop()
{
float reading;
reading = analogRead(THERMISTORPIN);
int temp = (reading-530);
Serial.print("Temp ");
Serial.println(temp);
if(temp > 400);
{
digitalWrite(FUELPUMP,HIGH);
digitalWrite(greenled,LOW);
digitalWrite(emergency, HIGH);
delay(1000);
digitalWrite(emergency,LOW);
delay(1000);
digitalWrite(emergency, HIGH);
delay(1000);
digitalWrite(emergency,LOW);
delay(1000);
digitalWrite(emergency, HIGH);
delay(1000);
digitalWrite(emergency,LOW);
delay(1000);
}
}
***********(My temp code)
I dont know a way around this, but basically I have a thermistor hooked up to A0 which works when only running the serial print to show my “temp”
float reading;
reading = analogRead(THERMISTORPIN);
int temp = (reading-530); <<<< The -530 is to get the number as close to null as i can
Serial.print("Temp ");
Serial.println(temp);
What i really need is the startup to turn on WHILE comparing the temperature, and if it reaches above analog 400, it would turn off ONLY the green led and fuel pump (cutting off all fuel from the combustion chamber). But leave on both the red led, and the oil pump. Then the “emergency led” (blue) would begin to flash From there i would manually turn off all else. I really need help and i am stuck in a hard spot. Please help!
- Evan