#include <Thermocouple.h>
#include <SPI.h>
#define l 4 //collegato al pin 8 led
#define f 5 //collegato al pin 9 sensore di fiamma
#define v 3 // collegato al pin 10 ventola
#define r_1 6 // collegato al pin 11 rele 1
#define r_2 7 // collegato al pin 12 rele 2
#define P A0 //collegato al pin A0 sensore pin pressione da 1.2 MPa
// per il collegamento delle termocoppie, collegare i pin SO1 e SO2 insieme al pin 12 mentre i pin SCK1 e SCK2 insieme al pin 13
// i pin CS si collegano separati e vanno come descritto nel define
#define T_2 10 //termocoppia 2 al pin 10 termocoppia radiatore
#define T_1 9 //termocoppia 1 al pin 9 termocoppia punto caldo
Thermocouple T1 = Thermocouple(T_1);
Thermocouple T2 = Thermocouple(T_2);
// dichiarazione variabili e costanti
int intervallo_1 = 100;
int intervallo_2 = 1000;
int intervallo_3 = 500;
int Fiamma = 0;
double Volt_P = 0;
double Press = 0;
double Tempo_1 = 0;
double Tempo_2 = 0;
double Tempo_3 = 0;
double T_C = 0; //variabile di controllo temperatura per periferiche (Ventola e relè)
void setup() {
pinMode(r_1,OUTPUT); //rele 1
pinMode(r_2,OUTPUT); // rele 2
pinMode(l,OUTPUT); //led
pinMode(v,OUTPUT); //ventola
pinMode(f,INPUT); //sensore di fiamma
pinMode(P,INPUT); //sensore di pressione da 1.2MPa
Serial.begin(9600);
delay(500);
}
void loop() {
if (millis() - Tempo_1 > intervallo_1){
Tempo_1 = millis();
Fiamma = digitalRead(f);
digitalWrite(v,T_C>30);//Ventola spenta
digitalWrite(r_1,T_C>30);//disattivo il relè, il cavo nero della pompa va al NC1, mentre il jumper nero va alla COM1
digitalWrite(r_2,Fiamma<1);
digitalWrite(l,1);//imposto il led a stato nullo
if(Fiamma==0){
digitalWrite(l,0); //accendo il led
}
}
if(millis() - Tempo_2 > intervallo_2){
Tempo_2 = millis();
Serial.println("");
Serial.println("TEMP_RADIATORE = ");
Serial.println(T2.readC());
Serial.println("TEMP_PUNTO_CALDO = ");
Serial.println(T1.readC());
}
if(millis() - Tempo_3 > intervallo_3){
Tempo_3 = millis();
Volt_P = analogRead(P);//leggo il sensore di pressione
Volt_P = ((Volt_P*5.0)/1024.0);
Press = (5*((Volt_P-0.5))*0.10);// pressione in MPa
Serial.println("Pressione in MPa");
Serial.println(Press);
}
}
void displayTemp(float fTemp) {
if (fTemp < 0.0) {
Serial.println("Open thermocouple circuit");
}
else {
Serial.print(fTemp, 0);
Serial.println("\260F"); //octal 260 = degree symbol
}
}
Ciao a tutti, vi metto il codice in alto cosi che possiate vederlo, lo scopo di questo codice è quello di rilevare la temperatura, la pressione ed eventualmente la presenza di una fiamma, con la funzione millis() e con altri vostri suggerimenti sono riuscito a fare in modo che la rilevazione dei dati sia continua, adesso ho un altro problema:
quando cerco di impostare il valore della ventola alto insieme a quello dell relè, la termocoppia che gli associo inizia a segnarmi sempre la stessa temperatura
esempio:
digitalWrite(v,T2.readC()>30);//Ventola spenta
digitalWrite(r_1,T2.readC()>30);//disattivo il relè, il cavo nero della pompa va al NC1, mentre il jumper nero va alla COM1
// se metto T2.readC() la termocoppia 2, inizia a segnarmi sempre lo stesso valore di temperatura senza variazioni
avete un idea del perchè?
(uso sempre una scheda Arduino uno).