sync
This commit is contained in:
parent
7eb67d88e7
commit
85126113e8
|
@ -15,6 +15,8 @@ project(ReflowCtl C CXX)
|
|||
set(ARDUINO_DEFAULT_BOARD diecimila) # Default Board ID, when not specified
|
||||
set(ARDUINO_DEFAULT_PORT /dev/ttyUSB0) # Default Port, when not specified
|
||||
|
||||
link_directories(/usr/share/arduino/libraries)
|
||||
|
||||
generate_arduino_firmware(reflowctl
|
||||
SKETCH reflowctl
|
||||
PORT /dev/ttyUSB0
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// include the library code:
|
||||
#include <LiquidCrystal.h>
|
||||
#include <DFR_Key.h>
|
||||
|
||||
// states
|
||||
#define START_STATE 0
|
||||
|
@ -22,10 +25,10 @@
|
|||
#define E_TP_TOO_LONG 256 // Tp duration too long
|
||||
|
||||
// system time, timestamps and temperatures from sensors
|
||||
static unsigned int time = 0; // profile seconds
|
||||
static unsigned int temperature = 25; // actual oven temp
|
||||
static unsigned int last_temperature = 25; // last oven temp
|
||||
static int actual_dt = 0; // actual difference from last to actual temperatur
|
||||
unsigned int time = 0; // profile seconds
|
||||
unsigned int temperature = 25; // actual oven temp
|
||||
unsigned int last_temperature = 25; // last oven temp
|
||||
int actual_dt = 0; // actual difference from last to actual temperatur
|
||||
|
||||
|
||||
// profile temperatures
|
||||
|
@ -77,14 +80,25 @@ boolean is_oven_heating = false;
|
|||
boolean led_on = false;
|
||||
boolean disable_checks = true;
|
||||
|
||||
//Pin assignments for SainSmart LCD Keypad Shield
|
||||
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
|
||||
DFR_Key keypad;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
pinMode(13, OUTPUT);
|
||||
set_start_state();
|
||||
|
||||
lcd.begin(16, 2);
|
||||
lcd.clear();
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print("hello, world!");
|
||||
keypad.setRate(10);
|
||||
Serial.println("init done");
|
||||
}
|
||||
|
||||
|
||||
static void control_oven() {
|
||||
void control_oven() {
|
||||
if (temperature < set_min && !is_oven_heating) {
|
||||
is_oven_heating = true;
|
||||
Serial.println("Oven turned on");
|
||||
|
@ -96,7 +110,7 @@ static void control_oven() {
|
|||
}
|
||||
|
||||
|
||||
static void set_temp(int min, int max, int dt_min, int dt_max) {
|
||||
void set_temp(int min, int max, int dt_min, int dt_max) {
|
||||
set_min = min;
|
||||
set_max = max;
|
||||
set_dt_min = dt_min;
|
||||
|
@ -104,14 +118,14 @@ static void set_temp(int min, int max, int dt_min, int dt_max) {
|
|||
}
|
||||
|
||||
|
||||
static void get_temp() {
|
||||
void get_temp() {
|
||||
last_temperature = temperature;
|
||||
temperature = int(float(analogRead(2)) * 0.2929);
|
||||
actual_dt = temperature - last_temperature;
|
||||
}
|
||||
|
||||
|
||||
static void check_dt() {
|
||||
void check_dt() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
if (actual_dt > set_dt_max) {
|
||||
|
@ -122,7 +136,7 @@ static void check_dt() {
|
|||
}
|
||||
}
|
||||
|
||||
static void print_debug() {
|
||||
void print_debug() {
|
||||
Serial.print("Time: ");
|
||||
Serial.print(time);
|
||||
Serial.print(", temperatur: ");
|
||||
|
@ -135,7 +149,8 @@ static void print_debug() {
|
|||
Serial.println(error_condition);
|
||||
}
|
||||
|
||||
static void check_max_duration() {
|
||||
|
||||
void check_max_duration() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
Serial.println(time);
|
||||
|
@ -145,7 +160,7 @@ static void check_max_duration() {
|
|||
Serial.println(time);
|
||||
}
|
||||
|
||||
static void check_Ts_duration_min() {
|
||||
void check_Ts_duration_min() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
Tl_time_end = time;
|
||||
|
@ -154,7 +169,7 @@ static void check_Ts_duration_min() {
|
|||
}
|
||||
}
|
||||
|
||||
static void check_Ts_duration_max() {
|
||||
void check_Ts_duration_max() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
if (time - Ts_time_start > Tl_duration_max) {
|
||||
|
@ -163,7 +178,7 @@ static void check_Ts_duration_max() {
|
|||
}
|
||||
|
||||
|
||||
static void check_Tl_duration_min() {
|
||||
void check_Tl_duration_min() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
Tl_time_end = time;
|
||||
|
@ -172,7 +187,7 @@ static void check_Tl_duration_min() {
|
|||
}
|
||||
}
|
||||
|
||||
static void check_Tl_duration_max() {
|
||||
void check_Tl_duration_max() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
if (time - Tl_time_start > Tl_duration_max) {
|
||||
|
@ -180,14 +195,14 @@ static void check_Tl_duration_max() {
|
|||
}
|
||||
}
|
||||
|
||||
static void check_Tp_duration_min() {
|
||||
void check_Tp_duration_min() {
|
||||
Tp_time_end = time;
|
||||
if (time - Tp_time_start < Tp_duration_min) {
|
||||
error_condition |= E_TP_TOO_SHORT;
|
||||
}
|
||||
}
|
||||
|
||||
static void check_Tp_duration_max() {
|
||||
void check_Tp_duration_max() {
|
||||
if (disable_checks)
|
||||
return;
|
||||
if (time - Tp_time_start > Tp_duration_max) {
|
||||
|
@ -195,7 +210,7 @@ static void check_Tp_duration_max() {
|
|||
}
|
||||
}
|
||||
|
||||
static void set_start_state() {
|
||||
void set_start_state() {
|
||||
led_on = false;
|
||||
digitalWrite(13, LOW);
|
||||
error_condition = 0;
|
||||
|
@ -207,50 +222,50 @@ static void set_start_state() {
|
|||
}
|
||||
|
||||
|
||||
static void set_preheat_state() {
|
||||
void set_preheat_state() {
|
||||
Serial.println("Changing state to PREHEAT_STATE");
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_ramp_up_state() {
|
||||
void set_ramp_up_state() {
|
||||
Serial.println("Changed state to RAMP_UP_STATE");
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_tal_first_state() {
|
||||
void set_tal_first_state() {
|
||||
Serial.println("Changed state to TAL_FIRST_STATE");
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_peak_state() {
|
||||
void set_peak_state() {
|
||||
Serial.println("Changed state to PEAK_STATE");
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_tal_second_state() {
|
||||
void set_tal_second_state() {
|
||||
Serial.println("Changed state to TAL_SECOND_STATE");
|
||||
set_temp(25, 25, -3, -6);
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_ramp_down_state() {
|
||||
void set_ramp_down_state() {
|
||||
Serial.println("Changed state to RAMP_DOWN_STATE");
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_end_state() {
|
||||
void set_end_state() {
|
||||
Serial.println("Changed state to END_STATE");
|
||||
state++;
|
||||
}
|
||||
|
||||
|
||||
static void set_error_state() {
|
||||
void set_error_state() {
|
||||
if (state != ERROR_STATE) {
|
||||
Serial.println("Changed state to ERROR_STATE");
|
||||
set_temp(0, 0, 0, 0);
|
||||
|
@ -259,7 +274,7 @@ static void set_error_state() {
|
|||
}
|
||||
|
||||
|
||||
static void handle_start_state() {
|
||||
void handle_start_state() {
|
||||
check_max_duration();
|
||||
Serial.println(time);
|
||||
if (temperature > Ts_min) {
|
||||
|
@ -269,7 +284,7 @@ static void handle_start_state() {
|
|||
}
|
||||
|
||||
|
||||
static void handle_preheat_state() {
|
||||
void handle_preheat_state() {
|
||||
check_Ts_duration_max();
|
||||
check_max_duration();
|
||||
if (temperature > Ts_max) {
|
||||
|
@ -279,7 +294,7 @@ static void handle_preheat_state() {
|
|||
}
|
||||
|
||||
|
||||
static void handle_ramp_up_state() {
|
||||
void handle_ramp_up_state() {
|
||||
check_max_duration();
|
||||
if (temperature > Tl) {
|
||||
Tl_time_start = time;
|
||||
|
@ -288,7 +303,7 @@ static void handle_ramp_up_state() {
|
|||
}
|
||||
|
||||
|
||||
static void handle_tal_first_state() {
|
||||
void handle_tal_first_state() {
|
||||
check_max_duration();
|
||||
check_Tl_duration_max();
|
||||
if (temperature > Tp - 5) {
|
||||
|
@ -298,7 +313,7 @@ static void handle_tal_first_state() {
|
|||
}
|
||||
|
||||
|
||||
static void handle_peak_state() {
|
||||
void handle_peak_state() {
|
||||
check_Tl_duration_max();
|
||||
check_Tp_duration_max();
|
||||
if (time - Tp_time_start > Tp_duration_max) {
|
||||
|
@ -308,7 +323,7 @@ static void handle_peak_state() {
|
|||
}
|
||||
|
||||
|
||||
static void handle_tal_second_state() {
|
||||
void handle_tal_second_state() {
|
||||
check_Tl_duration_max();
|
||||
if (temperature < Tl) {
|
||||
check_Tl_duration_min();
|
||||
|
@ -316,21 +331,22 @@ static void handle_tal_second_state() {
|
|||
}
|
||||
}
|
||||
|
||||
static void handle_ramp_down_state() {
|
||||
void handle_ramp_down_state() {
|
||||
if (temperature < Ts_min) {
|
||||
set_end_state();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void handle_end_state() {
|
||||
void handle_end_state() {
|
||||
// while(true) {
|
||||
// continue;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
static void handle_error_state() {
|
||||
|
||||
void handle_error_state() {
|
||||
if (led_on) {
|
||||
digitalWrite(13, LOW);
|
||||
led_on = false;
|
||||
|
@ -406,6 +422,9 @@ void loop() {
|
|||
}
|
||||
|
||||
control_oven();
|
||||
lcd.clear();
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(time);
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue