Origin firmware.

Dependencies:   PID QEI SB1602E mbed-rtos mbed

Fork of PreHeater by Kazu Zamasu

Revision:
1:f974481c37b6
Parent:
0:b1d44d6f9adf
Child:
2:387240c58110
--- a/main.cpp	Sat Jun 13 00:05:45 2015 +0000
+++ b/main.cpp	Sat Jun 13 04:30:15 2015 +0000
@@ -12,50 +12,56 @@
 #define OV_HL 1.0 //PID calcurate output value 1.0 = 100%
 #define SV_LL 0.0 //PID setpoint % value for lo limit
 #define SV_HL 100.0 //PID setpoint % value for high limit
-#define P 1.0
-#define I 0.2
-#define D 0.1
-#define RATE 0.1
-#define Bias 0.2
+#define P 1.0 //propotional band
+#define I 0.2 //Integral
+#define D 0.1 //Devide
+#define RATE 0.1 //update time sec
+#define Bias 0.2 //control output bias
 #define InitialSP 50.0 // PID initial setpoint
-#define RangeSPL 30.0
-#define RangeSPH 120.0
+#define RangeSPL 30.0 //calcurate celcius range
+#define RangeSPH 120.0 //same above
 
 //Kc, Ti, Td, interval
 PID TIC(P, I, D, RATE);
 
+//GPIO initilaize
 AnalogIn THAI(dp4);
 PwmOut   out(dp1);
 DigitalOut led1(dp14),led2(dp28);
 DigitalIn Run(dp17,PullUp);
-QEI wheel(dp11, PullUp, dp13,PullUp, NC, ROTATE_PER_REVOLUTIONS, QEI::X2_ENCODING);
+
+//Rotary encode pin, pinmode and sppecification instance
+QEI wheel(dp11, PullUp, dp13, PullUp,NC, ROTATE_PER_REVOLUTIONS, QEI::X2_ENCODING);
+
 float temp_sv_input;
 double temp_pv,temp_cal;
 
-void LCD_thread(void const *args) {
+void TempCal_thread(void const *args) {
     while (true) {
-        led2 = !led2;
-        Thread::wait(1000);
-    }
-}
- 
-
-int main(){
  //input for change to 0 to 100% range by 50C to 120C
  temp_sv_input = wheel.getPulses() * 0.5 + RangeSPL;
-
  if (temp_sv_input <= RangeSPL){
      temp_sv_input = RangeSPL;
-     }
+                               }
      else if (temp_sv_input >= RangeSPH){
               temp_sv_input = RangeSPH;
                                         } 
-
-
  temp_cal = THAI.read();
 //six order polynomial
  temp_pv =-0.7964*pow(temp_cal,6.0) - 2.5431*pow(temp_cal,5.0) +63.605*pow(temp_cal,4.0) - 274.1*pow(temp_cal,3.0) + 522.57*pow(temp_cal,2.0) - 539.26*temp_cal + 405.76;
+        Thread::wait(500);
 
+
+//Insert LCD code
+/*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+*/
+                 }
+                                        }
+ 
+int main(){
+Thread thread(TempCal_thread);
+    while (1){
   //Analog input from 50.0C to 120.0C
   TIC.setInputLimits(SV_LL, SV_HL);
   //Pwm output from 0.0 to 1.0
@@ -66,22 +72,17 @@
   //We want the process variable to be 1.7V
   TIC.setSetPoint(temp_sv_input);
  
-  while(Run == 1){
+  if (Run == 1){
+                out = OV_LL;
+                }
+  else if (Run == 0){ 
     //Update the process variable.
     TIC.setProcessValue(temp_cal);
     //Set the new output.
     out = TIC.compute();
     //Wait for another loop calculation.
-    wait(RATE);
+    Thread::wait(RATE);
+                    }
 
-    Thread thread(LCD_thread);
-    
-/*    while (true) {
-        led1 = !led1;
-        Thread::wait(500);
-                }  */
-
-out = OV_LL; 
-                }
- 
-}
+             }
+          }
\ No newline at end of file