Difference between revisions of "Code Temperature Arduino 1"

From ccitonlinewiki
Jump to: navigation, search
(Created page with "//CODE TEMPERATURE ARDUINO 1# UNTUK MENGUKUR TEMPERATUR:: #include "max6675.h" #include "Stepper.h" #define STEPS 32 // Number of steps for one revolution of Interna...")
 
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
//CODE TEMPERATURE ARDUINO 1#
 
/*UNTUK MENGUKUR TEMPERATUR:
 
  
 +
  //CODE TEMPERATURE ARDUINO 1#
 +
  /*UNTUK MENGUKUR TEMPERATUR:
 +
  1. Regenerator
 +
  2. Regenerator tambahan
 +
  3. Riser1
 +
  4. Riser 2
 +
  5. Riser 3
 +
  6. Cyclone 1
 +
  7. Cyclone 2
 +
  8. Cyclone 3
  
*/
+
  */
  
#include "max6675.h"
+
  #include "max6675.h"
#include "Stepper.h"
+
  #include "Stepper.h"
#define STEPS  32  // Number of steps for one revolution of Internal shaft
+
  #define STEPS  32  // Number of steps for one revolution of Internal shaft
 
                     // 2048 steps for one revolution of External shaft
 
                     // 2048 steps for one revolution of External shaft
  
#include <AccelStepper.h> //library motor stepper
+
  #include <AccelStepper.h> //library motor stepper
#define HALFSTEP 8        // definisi jumlah step
+
  #define HALFSTEP 8        // definisi jumlah step
//#include <Servo.h>
+
  //#include <Servo.h>
//Servo servo1;
+
  //Servo servo1;
//Servo servo2;
+
  //Servo servo2;
  
volatile boolean TurnDetected;  // need volatile for Interrupts
+
  volatile boolean TurnDetected;  // need volatile for Interrupts
volatile boolean rotationdirection;  // CW or CCW rotation
+
  volatile boolean rotationdirection;  // CW or CCW rotation
  
const int PinCLK=2;  // Generating interrupts using CLK signal
+
  const int PinCLK=2;  // Generating interrupts using CLK signal
const int PinDT=3;    // Reading DT signal
+
  const int PinDT=3;    // Reading DT signal
const int PinSW=4;    // Reading Push Button switch
+
  const int PinSW=4;    // Reading Push Button switch
  
int RotaryPosition=0;    // To store Stepper Motor Position
+
  int RotaryPosition=0;    // To store Stepper Motor Position
  
int PrevPosition;    // Previous Rotary position Value to check accuracy
+
  int PrevPosition;    // Previous Rotary position Value to check accuracy
int StepsToTake;      // How much to move Stepper
+
  int StepsToTake;      // How much to move Stepper
  
// Setup of proper sequencing for Motor Driver Pins
+
  // Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4
+
  // In1, In2, In3, In4 in the sequence 1-3-2-4
Stepper small_stepper(STEPS, 8, 10, 9, 11);
+
  Stepper small_stepper(STEPS, 8, 10, 9, 11);
  
// Interrupt routine runs if CLK goes from HIGH to LOW
+
  // Interrupt routine runs if CLK goes from HIGH to LOW
void isr ()  {
+
  void isr ()  {
  delay(5);  // delay for Debouncing
+
    delay(5);  // delay for Debouncing
  if (digitalRead(PinCLK))
+
    if (digitalRead(PinCLK))
    rotationdirection= digitalRead(PinDT);
+
      rotationdirection= digitalRead(PinDT);
  else
+
    else
    rotationdirection= !digitalRead(PinDT);
+
      rotationdirection= !digitalRead(PinDT);
  TurnDetected = true;
+
    TurnDetected = true;
}
+
  }
  
//T RB
+
  //T RB
int ktcSO1 = 4;      //34;
+
  int ktcSO1 = 4;      //34;
int ktcCS1 = 5 ;  //35;
+
  int ktcCS1 = 5 ;  //35;
int ktcCLK1 = 6;    //36;
+
  int ktcCLK1 = 6;    //36;
MAX6675 ktc1(ktcCLK1, ktcCS1, ktcSO1);
+
  MAX6675 ktc1(ktcCLK1, ktcCS1, ktcSO1);
  
//T Reg
+
  //T Reg
int ktcSO2 = 31;
+
  int ktcSO2 = 31;
int ktcCS2 = 32;
+
  int ktcCS2 = 32;
int ktcCLK2 = 33;
+
  int ktcCLK2 = 33;
MAX6675 ktc2(ktcCLK2, ktcCS2, ktcSO2);
+
  MAX6675 ktc2(ktcCLK2, ktcCS2, ktcSO2);
  
//T riser1
+
  //T riser1
int ktcSO3 = 22;
+
  int ktcSO3 = 22;
int ktcCS3 = 23;
+
  int ktcCS3 = 23;
int ktcCLK3 = 24;
+
  int ktcCLK3 = 24;
MAX6675 ktc3(ktcCLK3, ktcCS3, ktcSO3);
+
  MAX6675 ktc3(ktcCLK3, ktcCS3, ktcSO3);
  
//T riser2
+
  //T riser2
int ktcSO4 =  46 ;    //2;
+
  int ktcSO4 =  46 ;    //2;
int ktcCS4 =  47  ;  //3;
+
  int ktcCS4 =  47  ;  //3;
int ktcCLK4 =  48  ;  //4;
+
  int ktcCLK4 =  48  ;  //4;
MAX6675 ktc4(ktcCLK4, ktcCS4, ktcSO4);
+
  MAX6675 ktc4(ktcCLK4, ktcCS4, ktcSO4);
  
// T riser3
+
  // T riser3
int ktcSO5 = 28;
+
  int ktcSO5 = 28;
int ktcCS5 = 29;
+
  int ktcCS5 = 29;
int ktcCLK5 = 30;
+
  int ktcCLK5 = 30;
MAX6675 ktc5(ktcCLK5, ktcCS5, ktcSO5);
+
  MAX6675 ktc5(ktcCLK5, ktcCS5, ktcSO5);
  
///T Cyclone1
+
  ///T Cyclone1
int ktcSO6 = 37;
+
  int ktcSO6 = 37;
int ktcCS6 = 38;
+
  int ktcCS6 = 38;
int ktcCLK6 = 39;
+
  int ktcCLK6 = 39;
MAX6675 ktc6(ktcCLK6, ktcCS6, ktcSO6);
+
  MAX6675 ktc6(ktcCLK6, ktcCS6, ktcSO6);
  
//T Cyclone2
+
  //T Cyclone2
int ktcSO7 = 40;
+
  int ktcSO7 = 40;
int ktcCS7 = 41;  
+
  int ktcCS7 = 41;  
int ktcCLK7 = 42;
+
  int ktcCLK7 = 42;
MAX6675 ktc7(ktcCLK7, ktcCS7, ktcSO7);
+
  MAX6675 ktc7(ktcCLK7, ktcCS7, ktcSO7);
  
//T Cyclone3
+
  //T Cyclone3
int ktcSO8 = 43;
+
  int ktcSO8 = 43;
int ktcCS8 = 44;
+
  int ktcCS8 = 44;
int ktcCLK8 = 45;
+
  int ktcCLK8 = 45;
MAX6675 ktc8(ktcCLK8, ktcCS8, ktcSO8);
+
  MAX6675 ktc8(ktcCLK8, ktcCS8, ktcSO8);
  
/*//T out cyclone
+
  /*//T out cyclone
int ktcSO9 = 46;
+
  int ktcSO9 = 46;
int ktcCS9 = 47;
+
  int ktcCS9 = 47;
int ktcCLK9 = 48;
+
  int ktcCLK9 = 48;
MAX6675 ktc9(ktcCLK9, ktcCS9, ktcSO9);
+
  MAX6675 ktc9(ktcCLK9, ktcCS9, ktcSO9);
  
//T in Fraksinator
+
  //T in Fraksinator
int ktcSO10 = 49;
+
  int ktcSO10 = 49;
int ktcCS10 = 50;
+
  int ktcCS10 = 50;
int ktcCLK10 = 51;
+
  int ktcCLK10 = 51;
MAX6675 ktc10(ktcCLK10, ktcCS10, ktcSO10);
+
  MAX6675 ktc10(ktcCLK10, ktcCS10, ktcSO10);
  
//T Fraksinator1
+
  //T Fraksinator1
int ktcSO11 = 2;
+
  int ktcSO11 = 2;
int ktcCS11 = 3;
+
  int ktcCS11 = 3;
int ktcCLK11 = 4;
+
  int ktcCLK11 = 4;
MAX6675 ktc11(ktcCLK11, ktcCS11, ktcSO11);
+
  MAX6675 ktc11(ktcCLK11, ktcCS11, ktcSO11);
  
//T Fraksinator2
+
  //T Fraksinator2
int ktcSO12 = 5;
+
  int ktcSO12 = 5;
int ktcCS12 = 6;
+
  int ktcCS12 = 6;
int ktcCLK12 = 7;
+
  int ktcCLK12 = 7;
MAX6675 ktc12(ktcCLK12, ktcCS12, ktcSO12);
+
  MAX6675 ktc12(ktcCLK12, ktcCS12, ktcSO12);
  
//T Fraksinator3
+
  //T Fraksinator3
int ktcSO13 = 8;
+
  int ktcSO13 = 8;
int ktcCS13 = 9;
+
  int ktcCS13 = 9;
int ktcCLK13 = 10;
+
  int ktcCLK13 = 10;
MAX6675 ktc13(ktcCLK13, ktcCS13, ktcSO13);
+
  MAX6675 ktc13(ktcCLK13, ktcCS13, ktcSO13);
  
//T Fraksinator4
+
  //T Fraksinator4
int ktcSO14 = 11;
+
  int ktcSO14 = 11;
int ktcCS14 = 12;
+
  int ktcCS14 = 12;
int ktcCLK14 = 13;
+
  int ktcCLK14 = 13;
MAX6675 ktc14(ktcCLK14, ktcCS14, ktcSO14);
+
  MAX6675 ktc14(ktcCLK14, ktcCS14, ktcSO14);
  
//T GB1
+
  //T GB1
int ktcSO15 = 13;
+
  int ktcSO15 = 13;
int ktcCS15= 15;
+
  int ktcCS15= 15;
int ktcCLK15 = 16;
+
  int ktcCLK15 = 16;
MAX6675 ktc15(ktcCLK15, ktcCS15, ktcSO15);
+
  MAX6675 ktc15(ktcCLK15, ktcCS15, ktcSO15);
  
//T GB2
+
  //T GB2
int ktcSO16 = 17;
+
  int ktcSO16 = 17;
int ktcCS16 = 18;
+
  int ktcCS16 = 18;
int ktcCLK16 = 19;
+
  int ktcCLK16 = 19;
MAX6675 ktc16(ktcCLK16, ktcCS16, ktcSO16);
+
  MAX6675 ktc16(ktcCLK16, ktcCS16, ktcSO16);
  
//T GB3
+
  //T GB3
int ktcSO17 = A0;
+
  int ktcSO17 = A0;
int ktcCS17 = A1;
+
  int ktcCS17 = A1;
int ktcCLK17 = A2;
+
  int ktcCLK17 = A2;
MAX6675 ktc17(ktcCLK17, ktcCS17, ktcSO17);
+
  MAX6675 ktc17(ktcCLK17, ktcCS17, ktcSO17);
  
/*float TURBINE;      //pengukuran SINYAL data yang bersifat incremental
+
  /*float TURBINE;      //pengukuran SINYAL data yang bersifat incremental
const int HSensor = 2; //nama alias pada pin 2
+
  const int HSensor = 2; //nama alias pada pin 2
int Calc;
+
  int Calc;
*/
+
  */
const int AnalogInput = A0; // Analog input where the resistor is placed
+
  const int AnalogInput = A0; // Analog input where the resistor is placed
int sensorValue = 0;
+
  int sensorValue = 0;
float voltage, convert, pressure_pascal, pressure_bar, pressure_psi = 0.0;
+
  float voltage, convert, pressure_pascal, pressure_bar, pressure_psi = 0.0;
float t1, f1 = 0.0;
+
  float t1, f1 = 0.0;
unsigned long previousMillis, previousMillis1 = 0;
+
  unsigned long previousMillis, previousMillis1 = 0;
float waktu_cuplik = 0.0;
+
  float waktu_cuplik = 0.0;
const long interval = 1500;
+
  const long interval = 1500;
const long interval1 = 300;
+
  const long interval1 = 300;
/*
+
  /*
#define motorPin1  10    // IN1 on the ULN2003 driver 1
+
  #define motorPin1  10    // IN1 on the ULN2003 driver 1
#define motorPin2  11    // IN2 on the ULN2003 driver 1
+
  #define motorPin2  11    // IN2 on the ULN2003 driver 1
#define motorPin3  12    // IN3 on the ULN2003 driver 1
+
  #define motorPin3  12    // IN3 on the ULN2003 driver 1
#define motorPin4  13    // IN4 on the ULN2003 driver 1
+
  #define motorPin4  13    // IN4 on the ULN2003 driver 1
  
// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
+
  // Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
+
  AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
  
  */
+
    */
/*void speedrpm ()    //fungsi penghitungan dan interrupt
+
  /*void speedrpm ()    //fungsi penghitungan dan interrupt
{
+
  {
TURBINE++; //bersifat incrementing (dengan mode falling edge)
+
  TURBINE++; //bersifat incrementing (dengan mode falling edge)
}*/
+
  }*/
  
  
void setup() {
+
  void setup() {
  // put your setup code here, to run once:
+
    // put your setup code here, to run once:
  Serial.begin(9600);
+
    Serial.begin(9600);
  pinMode(PinCLK,INPUT);
+
    pinMode(PinCLK,INPUT);
  pinMode(PinDT,INPUT);   
+
    pinMode(PinDT,INPUT);   
  pinMode(PinSW,INPUT);
+
    pinMode(PinSW,INPUT);
  digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch
+
    digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch
  attachInterrupt (0,isr,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO
+
    attachInterrupt (0,isr,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO
  
/*  pinMode(HSensor, INPUT); //inisialisasi sebagai input
+
  /*  pinMode(HSensor, INPUT); //inisialisasi sebagai input
  Serial.begin(9600);
+
    Serial.begin(9600);
  attachInterrupt(00, speedrpm, RISING); //cara penulisan perintah interrupt
+
    attachInterrupt(00, speedrpm, RISING); //cara penulisan perintah interrupt
  */
+
    */
  /*
+
    /*
  stepper1.setMaxSpeed(1000.0);
+
    stepper1.setMaxSpeed(1000.0);
  stepper1.setAcceleration(200.0);
+
    stepper1.setAcceleration(200.0);
  stepper1.setSpeed(1000);
+
    stepper1.setSpeed(1000);
  //stepper1.moveTo(-15000);
+
    //stepper1.moveTo(-15000);
  */
+
    */
  /*servo1.attach(10); // Attaches servo to specified pin
+
    /*servo1.attach(10); // Attaches servo to specified pin
  servo2.attach(6);
+
    servo2.attach(6);
  servo1.write(0);
+
    servo1.write(0);
  servo2.write(0);
+
    servo2.write(0);
  */
+
    */
  Serial.println("CLEARDATA");
+
    Serial.println("CLEARDATA");
  Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3");
+
    Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3");
  // Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3, T.outCyc, T.inFR, T.FR1, T.FR2 , T.FR3, T.FR4, T.GB1, T.GB2 ,T.GB3 ,Pressure(bar), flowrate (lpm)");
+
    // Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3, T.outCyc, T.inFR, T.FR1, T.FR2 , T.FR3, T.FR4, T.GB1, T.GB2 ,T.GB3 ,Pressure(bar), flowrate (lpm)");
}
+
    }
  
  
void baca_tekanan() {
+
  void baca_tekanan() {
  sensorValue = analogRead(AnalogInput);
+
    sensorValue = analogRead(AnalogInput);
  voltage = (sensorValue*5.0)/1024.0;
+
    voltage = (sensorValue*5.0)/1024.0;
  convert = (3.0*(voltage-0.475));
+
    convert = (3.0*(voltage-0.475));
  pressure_pascal = (3.0*(voltage-0.475))*1000000.0;
+
    pressure_pascal = (3.0*(voltage-0.475))*1000000.0;
  pressure_bar = pressure_pascal/10e5;
+
    pressure_bar = pressure_pascal/10e5;
  pressure_psi = pressure_bar*14.5038;
+
    pressure_psi = pressure_bar*14.5038;
}
+
  }
  
/*void baca_flowrate() {
+
  /*void baca_flowrate() {
  TURBINE = 00; //data awal = 0
+
    TURBINE = 00; //data awal = 0
  sei(); //perintah aktifnya mode interrupt
+
    sei(); //perintah aktifnya mode interrupt
  delay (1000); //nilai delay 1 detik
+
    delay (1000); //nilai delay 1 detik
  cli(); //perintah untuk matinya program interrupt
+
    cli(); //perintah untuk matinya program interrupt
  float Calc = (TURBINE  / 9); //Pulsa * 60 / 7.5  
+
    float Calc = (TURBINE  / 9); //Pulsa * 60 / 7.5  
}*/
+
    }*/
  
void loop() {
+
  void loop() {
 
   
 
   
//  Serial.print("suhu = ");  
+
  //  Serial.print("suhu = ");  
//  Serial.print(ktc.readCelsius()); // Printing temperature value over serial port
+
  //  Serial.print(ktc.readCelsius()); // Printing temperature value over serial port
//  Serial.print("\t");
+
  //  Serial.print("\t");
//  baca_tekanan();
+
  //  baca_tekanan();
//  Serial.print(convert);
+
  //  Serial.print(convert);
//  Serial.print("\t");
+
  //  Serial.print("\t");
//  Serial.println(pressure_pascal);
+
  //  Serial.println(pressure_pascal);
//  //Serial.print("\t");
+
  //  //Serial.print("\t");
//  //Serial.println(presure);
+
  //  //Serial.println(presure);
//  delay(500);
+
  //  delay(500);
  
 
    
 
    
 
    
 
    
  unsigned long currentMillis = millis();
+
    unsigned long currentMillis = millis();
  unsigned long currentMillis1 = millis();
+
    unsigned long currentMillis1 = millis();
  waktu_cuplik = (float) currentMillis/1000;   
+
    waktu_cuplik = (float) currentMillis/1000;   
  //sensorValue = analogRead(A12);
+
    //sensorValue = analogRead(A12);
  baca_tekanan();
+
    baca_tekanan();
//baca_flowrate();
+
    //baca_flowrate();
  //speedrpm();
+
    //speedrpm();
  
if (currentMillis - previousMillis == interval){
+
  if (currentMillis - previousMillis == interval){
//    Serial.print(ktc.readCelsius());
+
  //    Serial.print(ktc.readCelsius());
//    Serial.print("\t");
+
  //    Serial.print("\t");
//    Serial.println(sensorValue);
+
  //    Serial.println(sensorValue);
  
    previousMillis = currentMillis;
+
      previousMillis = currentMillis;
    /*Serial.print(ktc1.readCelsius());
+
      /*Serial.print(ktc1.readCelsius());
    Serial.print(",");
+
      Serial.print(",");
    Serial.println(ktc2.readCelsius());*/
+
      Serial.println(ktc2.readCelsius());*/
    Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius());
+
      Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius());
    //Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius() + "," + ktc9.readCelsius() + "," + ktc10.readCelsius()+ "," + ktc11.readCelsius()+ "," + ktc12.readCelsius()+ "," + ktc13.readCelsius()+ "," + ktc14.readCelsius()+  "," + ktc15.readCelsius()+ "," + ktc16.readCelsius()+ "," + ktc17.readCelsius()+ "," + pressure_bar );  
+
      //Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius() + "," + ktc9.readCelsius() + "," + ktc10.readCelsius()+ "," + ktc11.readCelsius()+ "," + ktc12.readCelsius()+ "," + ktc13.readCelsius()+ "," + ktc14.readCelsius()+  "," + ktc15.readCelsius()+ "," + ktc16.readCelsius()+ "," + ktc17.readCelsius()+ "," + pressure_bar );  
 
//    Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + ","+ ktc4.readCelsius() + "," + ktc5.readCelsius() + ","+ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius()+ "," + ktc9.readCelsius() + "," + ktc10.readCelsius() + "," + pressure_bar);   
 
//    Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + ","+ ktc4.readCelsius() + "," + ktc5.readCelsius() + ","+ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius()+ "," + ktc9.readCelsius() + "," + ktc10.readCelsius() + "," + pressure_bar);   
 
      
 
      
    small_stepper.setSpeed(800); //Max seems to be 700
+
      small_stepper.setSpeed(800); //Max seems to be 700
    if (!(digitalRead(PinSW))) {  // check if button is pressed
+
      if (!(digitalRead(PinSW))) {  // check if button is pressed
      if (RotaryPosition == 0) {  // check if button was already pressed
+
        if (RotaryPosition == 0) {  // check if button was already pressed
    }   else {
+
      } else {
        small_stepper.step((RotaryPosition*100));
+
          small_stepper.step((RotaryPosition*100));
        RotaryPosition=0; // Reset position to ZERO
+
          RotaryPosition=0; // Reset position to ZERO
 +
        }
 
       }
 
       }
    }
 
  
  // Runs if rotation was detected
+
    // Runs if rotation was detected
    if (TurnDetected)  {
+
      if (TurnDetected)  {
      PrevPosition = RotaryPosition; // Save previous position in variable
+
        PrevPosition = RotaryPosition; // Save previous position in variable
      if (rotationdirection) {
+
        if (rotationdirection) {
        RotaryPosition=RotaryPosition-1;} // decrase Position by 1
+
          RotaryPosition=RotaryPosition-1;} // decrase Position by 1
      else {
+
        else {
      RotaryPosition=RotaryPosition+1;} // increase Position by 1
+
        RotaryPosition=RotaryPosition+1;} // increase Position by 1
  
      TurnDetected = false;  // do NOT repeat IF loop until new rotation detected
+
        TurnDetected = false;  // do NOT repeat IF loop until new rotation detected
  
    // Which direction to move Stepper motor
+
      // Which direction to move Stepper motor
      if ((PrevPosition + 1) == RotaryPosition) { // Move motor CW
+
        if ((PrevPosition + 1) == RotaryPosition) { // Move motor CW
        StepsToTake=-100;  
+
          StepsToTake=-100;  
        small_stepper.step(StepsToTake);
+
          small_stepper.step(StepsToTake);
    }
+
      }
  
      if ((RotaryPosition + 1) == PrevPosition) { // Move motor CCW
+
        if ((RotaryPosition + 1) == PrevPosition) { // Move motor CCW
        StepsToTake=100;
+
          StepsToTake=100;
        small_stepper.step(StepsToTake);
+
          small_stepper.step(StepsToTake);
 +
      }
 
     }
 
     }
  }
 
 
      
 
      
 
      
 
      
Line 298: Line 306:
 
      
 
      
 
      
 
      
    /* if(ktc1.readCelsius()  < 27)
+
      /* if(ktc1.readCelsius()  < 27)
  {   
+
    {   
      //servo1.write(80);
+
        //servo1.write(80);
      //servo2.write(80);
+
        //servo2.write(80);
//      stepper1.moveTo(-15000);
+
  //      stepper1.moveTo(-15000);
 
      
 
      
  }
+
    }
      else if(ktc1.readCelsius()<=30)
+
        else if(ktc1.readCelsius()<=30)
  {
+
    {
      //servo1.write(45);
+
        //servo1.write(45);
      //servo2.write(45);
+
        //servo2.write(45);
  
  }     
+
    }     
      else if (ktc1.readCelsius()>30)
+
        else if (ktc1.readCelsius()>30)
  {
+
    {
      //servo1.write(0);
+
        //servo1.write(0);
      //servo2.write(0);
+
        //servo2.write(0);
  
  }     
+
    }     
      delay(1000);
+
        delay(1000);
      */
+
        */
}
 
 
   }
 
   }
 +
    }

Latest revision as of 10:06, 22 April 2020

 //CODE TEMPERATURE ARDUINO 1#
 /*UNTUK MENGUKUR TEMPERATUR:
 1. Regenerator
 2. Regenerator tambahan
 3. Riser1
 4. Riser 2
 5. Riser 3
 6. Cyclone 1
 7. Cyclone 2
 8. Cyclone 3
 */
 #include "max6675.h"
 #include "Stepper.h"
 #define STEPS  32   // Number of steps for one revolution of Internal shaft
                   // 2048 steps for one revolution of External shaft
 #include <AccelStepper.h> //library motor stepper
 #define HALFSTEP 8        // definisi jumlah step
 //#include <Servo.h>
 //Servo servo1;
 //Servo servo2;
 volatile boolean TurnDetected;  // need volatile for Interrupts
 volatile boolean rotationdirection;  // CW or CCW rotation
 const int PinCLK=2;   // Generating interrupts using CLK signal
 const int PinDT=3;    // Reading DT signal
 const int PinSW=4;    // Reading Push Button switch
 int RotaryPosition=0;    // To store Stepper Motor Position
 int PrevPosition;     // Previous Rotary position Value to check accuracy
 int StepsToTake;      // How much to move Stepper
 // Setup of proper sequencing for Motor Driver Pins
 // In1, In2, In3, In4 in the sequence 1-3-2-4
 Stepper small_stepper(STEPS, 8, 10, 9, 11);
 // Interrupt routine runs if CLK goes from HIGH to LOW
 void isr ()  {
   delay(5);  // delay for Debouncing
   if (digitalRead(PinCLK))
     rotationdirection= digitalRead(PinDT);
   else
     rotationdirection= !digitalRead(PinDT);
   TurnDetected = true;
 }
 //T RB
 int ktcSO1 = 4;      //34;
 int ktcCS1 = 5 ;   //35;
 int ktcCLK1 = 6;    //36;
 MAX6675 ktc1(ktcCLK1, ktcCS1, ktcSO1);
 //T Reg
 int ktcSO2 = 31;
 int ktcCS2 = 32;
 int ktcCLK2 = 33;
 MAX6675 ktc2(ktcCLK2, ktcCS2, ktcSO2);
 //T riser1
 int ktcSO3 = 22;
 int ktcCS3 = 23;
 int ktcCLK3 = 24;
 MAX6675 ktc3(ktcCLK3, ktcCS3, ktcSO3);
 //T riser2
 int ktcSO4 =   46 ;    //2;
 int ktcCS4 =   47  ;   //3;
 int ktcCLK4 =  48  ;  //4;
 MAX6675 ktc4(ktcCLK4, ktcCS4, ktcSO4);
 // T riser3
 int ktcSO5 = 28;
 int ktcCS5 = 29;
 int ktcCLK5 = 30;
 MAX6675 ktc5(ktcCLK5, ktcCS5, ktcSO5);
 ///T Cyclone1
 int ktcSO6 = 37;
 int ktcCS6 = 38;
 int ktcCLK6 = 39;
 MAX6675 ktc6(ktcCLK6, ktcCS6, ktcSO6);
 //T Cyclone2
 int ktcSO7 = 40;
 int ktcCS7 = 41; 
 int ktcCLK7 = 42;
 MAX6675 ktc7(ktcCLK7, ktcCS7, ktcSO7);
 //T Cyclone3
 int ktcSO8 = 43;
 int ktcCS8 = 44;
 int ktcCLK8 = 45;
 MAX6675 ktc8(ktcCLK8, ktcCS8, ktcSO8);
 /*//T out cyclone
 int ktcSO9 = 46;
 int ktcCS9 = 47;
 int ktcCLK9 = 48;
 MAX6675 ktc9(ktcCLK9, ktcCS9, ktcSO9);
 //T in Fraksinator
 int ktcSO10 = 49;
 int ktcCS10 = 50;
 int ktcCLK10 = 51;
 MAX6675 ktc10(ktcCLK10, ktcCS10, ktcSO10);
 //T Fraksinator1
 int ktcSO11 = 2;
 int ktcCS11 = 3;
 int ktcCLK11 = 4;
 MAX6675 ktc11(ktcCLK11, ktcCS11, ktcSO11);
 //T Fraksinator2
 int ktcSO12 = 5;
 int ktcCS12 = 6;
 int ktcCLK12 = 7;
 MAX6675 ktc12(ktcCLK12, ktcCS12, ktcSO12);
 //T Fraksinator3
 int ktcSO13 = 8;
 int ktcCS13 = 9;
 int ktcCLK13 = 10;
 MAX6675 ktc13(ktcCLK13, ktcCS13, ktcSO13);
 //T Fraksinator4
 int ktcSO14 = 11;
 int ktcCS14 = 12;
 int ktcCLK14 = 13;
 MAX6675 ktc14(ktcCLK14, ktcCS14, ktcSO14);
 //T GB1
 int ktcSO15 = 13;
 int ktcCS15= 15;
 int ktcCLK15 = 16;
 MAX6675 ktc15(ktcCLK15, ktcCS15, ktcSO15);
 //T GB2
 int ktcSO16 = 17;
 int ktcCS16 = 18;
 int ktcCLK16 = 19;
 MAX6675 ktc16(ktcCLK16, ktcCS16, ktcSO16);
 //T GB3
 int ktcSO17 = A0;
 int ktcCS17 = A1;
 int ktcCLK17 = A2;
 MAX6675 ktc17(ktcCLK17, ktcCS17, ktcSO17);
 /*float TURBINE;      //pengukuran SINYAL data yang bersifat incremental
 const int HSensor = 2; //nama alias pada pin 2
 int Calc;
 */
 const int AnalogInput = A0; // Analog input where the resistor is placed
 int sensorValue = 0;
 float voltage, convert, pressure_pascal, pressure_bar, pressure_psi = 0.0;
 float t1, f1 = 0.0;
 unsigned long previousMillis, previousMillis1 = 0;
 float waktu_cuplik = 0.0;
 const long interval = 1500;
 const long interval1 = 300;
 /*
 #define motorPin1  10     // IN1 on the ULN2003 driver 1
 #define motorPin2  11     // IN2 on the ULN2003 driver 1
 #define motorPin3  12     // IN3 on the ULN2003 driver 1
 #define motorPin4  13     // IN4 on the ULN2003 driver 1
 // Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
 AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
   */
 /*void speedrpm ()    //fungsi penghitungan dan interrupt
 {
 TURBINE++; //bersifat incrementing (dengan mode falling edge)
 }*/


 void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);
   pinMode(PinCLK,INPUT);
   pinMode(PinDT,INPUT);  
   pinMode(PinSW,INPUT);
   digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch
   attachInterrupt (0,isr,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO
 /*  pinMode(HSensor, INPUT); //inisialisasi sebagai input
   Serial.begin(9600);
   attachInterrupt(00, speedrpm, RISING); //cara penulisan perintah interrupt
   */
   /*
   stepper1.setMaxSpeed(1000.0);
   stepper1.setAcceleration(200.0);
   stepper1.setSpeed(1000);
   //stepper1.moveTo(-15000);
   */
   /*servo1.attach(10); // Attaches servo to specified pin
   servo2.attach(6);
   servo1.write(0);
   servo2.write(0);
   */
   Serial.println("CLEARDATA");
   Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3");
   // Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3, T.outCyc, T.inFR, T.FR1, T.FR2 , T.FR3, T.FR4, T.GB1, T.GB2 ,T.GB3 ,Pressure(bar), flowrate (lpm)");
   }


 void baca_tekanan() {
   sensorValue = analogRead(AnalogInput);
   voltage = (sensorValue*5.0)/1024.0;
   convert = (3.0*(voltage-0.475));
   pressure_pascal = (3.0*(voltage-0.475))*1000000.0;
   pressure_bar = pressure_pascal/10e5;
   pressure_psi = pressure_bar*14.5038;
  }
 /*void baca_flowrate() {
   TURBINE = 00; //data awal = 0
   sei(); //perintah aktifnya mode interrupt
   delay (1000); //nilai delay 1 detik
   cli(); //perintah untuk matinya program interrupt
   float Calc = (TURBINE  / 9); //Pulsa * 60 / 7.5 
    }*/
 void loop() {

  //  Serial.print("suhu = "); 
  //  Serial.print(ktc.readCelsius()); // Printing temperature value over serial port
  //  Serial.print("\t");
  //  baca_tekanan();
  //  Serial.print(convert);
  //  Serial.print("\t");
  //  Serial.println(pressure_pascal);
  //  //Serial.print("\t");
  //  //Serial.println(presure);
  //  delay(500);


   unsigned long currentMillis = millis();
   unsigned long currentMillis1 = millis();
   waktu_cuplik = (float) currentMillis/1000;  
   //sensorValue = analogRead(A12);
   baca_tekanan();
   //baca_flowrate();
   //speedrpm();
  if (currentMillis - previousMillis == interval){
 //    Serial.print(ktc.readCelsius());
 //    Serial.print("\t");
 //    Serial.println(sensorValue);
     previousMillis = currentMillis;
     /*Serial.print(ktc1.readCelsius());
     Serial.print(",");
     Serial.println(ktc2.readCelsius());*/
     Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius());
     //Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius() + "," + ktc9.readCelsius() + "," + ktc10.readCelsius()+ "," + ktc11.readCelsius()+ "," + ktc12.readCelsius()+ "," + ktc13.readCelsius()+ "," + ktc14.readCelsius()+  "," + ktc15.readCelsius()+ "," + ktc16.readCelsius()+ "," + ktc17.readCelsius()+ "," + pressure_bar ); 

// Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + ","+ ktc4.readCelsius() + "," + ktc5.readCelsius() + ","+ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius()+ "," + ktc9.readCelsius() + "," + ktc10.readCelsius() + "," + pressure_bar);

      small_stepper.setSpeed(800); //Max seems to be 700
      if (!(digitalRead(PinSW))) {   // check if button is pressed
        if (RotaryPosition == 0) {  // check if button was already pressed
     }  else {
         small_stepper.step((RotaryPosition*100));
         RotaryPosition=0; // Reset position to ZERO
       }
     }
   // Runs if rotation was detected
     if (TurnDetected)  {
       PrevPosition = RotaryPosition; // Save previous position in variable
       if (rotationdirection) {
         RotaryPosition=RotaryPosition-1;} // decrase Position by 1
       else {
       RotaryPosition=RotaryPosition+1;} // increase Position by 1
       TurnDetected = false;  // do NOT repeat IF loop until new rotation detected
     // Which direction to move Stepper motor
       if ((PrevPosition + 1) == RotaryPosition) { // Move motor CW
         StepsToTake=-100; 
         small_stepper.step(StepsToTake);
     }
       if ((RotaryPosition + 1) == PrevPosition) { // Move motor CCW
         StepsToTake=100;
         small_stepper.step(StepsToTake);
     }
   }
    
    
    
    
    
    
    
    
    
    
    
    
    
      /* if(ktc1.readCelsius()  < 27)
   {  
       //servo1.write(80);
       //servo2.write(80);
 //      stepper1.moveTo(-15000);
   
   }
       else if(ktc1.readCelsius()<=30)
   {
       //servo1.write(45);
       //servo2.write(45);
   }    
       else if (ktc1.readCelsius()>30)
   {
       //servo1.write(0);
       //servo2.write(0);
   }    
        delay(1000);
        */
  }
    }