Go Down

Topic: Programa para detectar Avería en sensor de Temperatura.. (Read 149 times) previous topic - next topic

Tmorsi

holas un saludos a todo


Tengo una inquietud , con este codigo para detectar un sensor de temperatura que esta funcionando , pero de repentes se avería  y me muestre en pantalla LCD " ERROR SENSOR " tengo entendido que cuando el sensor falle o deje de funcionar me mostrara cero grados

voy a  usar un arduino nano con una lcd 16x 2 y un max6675 + sensor k ,con una linea de codigo si me pudieran orientar


me encontre con una libreria y tenia este ejemplo

Code: [Select]


#include <SPI.h>                //http://arduino.cc/en/Reference/SPI
#include <Thermocouple.h>       //http://github.com/JChristensen/Thermocouple

//MAX6675 SPI pin definitions
#define csTC1  10               //chip select for MAX6675

//Additionally, connect the MAX6675 as follows:
//MISO  Arduino pin 12          //master in slave out
//SCK   Arduino pin 13          //serial clock

Thermocouple tc1 = Thermocouple(csTC1);    //instantiate the thermocouple object

void setup() {
    Serial.begin(115200);       //initialize Serial
}

void loop() {
    Serial.print("tc1: ");
    displayTemp(tc1.readF());   //read the TC and print the temperature
    Serial.println();
    delay(10000);
}

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
    }
}





surbyte

La librería dice
Code: [Select]
    if (tcData & 0x0004) {                  //open thermocouple circuit
        return -1.0;
    }


por lo tanto tal como tu has escrito, si la lectura es < 0.0 es porque el circuito esta abierto.

En lo que muestras no hay LCD involucrado, asi que hasta que postees un código que incluya un LCD no podemos ayudarte a corregir ese cartel.

Tmorsi

HOLA A TODOS saludos..


Intente agregar los demas elementos como me habia propuesto , pero me muestra en pantalla solo simbolos




Code: [Select]


//Tmorsi

#include <max6675.h>
#include <LiquidCrystal.h>
#include <Thermocouple.h>

#define    csTC1    10               //chip select for MAX6675
//#define   KTC_SO    12
//#define   KTC_CLK   13

#define   LCD_RS    7
#define   LCD_EN    8
#define   LCD_D4    9
#define   LCD_D5    10
#define   LCD_D6    11
#define   LCD_D7    12

LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
//MAX6675 ktc(KTC_CLK, csTC1 , KTC_SO);


Thermocouple tc1 = Thermocouple(csTC1);    //instantiate the thermocouple object

void setup() {
 
  lcd.begin(16, 2);
}

void loop() {
  lcd.print("tc1: ");
  displayTemp(tc1.readF());   //read the TC and print the temperature
  lcd.print("");
  delay(500);
}

void displayTemp(float fTemp) {
  if (fTemp < 0.0) {
    lcd.setCursor(0, 0);
    lcd.print("Sensor Averiado");
  }
  else {
    lcd.print(fTemp, 0);
    lcd.print("\260F");    //octal 260 = degree symbol
  }
}








rodripelto

Hola, csTC1 esta en el pin 10 y D5 del displays también.

Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

Tmorsi

Hola a todos .

efectivamente había conflicto entre los pines del max y el lcd lo pude corregir y funciona lo ultimo es que quisiera que me dijera o orientaran que esta demás en el código para que quede lo mas limpio posible


un saludos gracias ..

Code: [Select]



//Tmorsi

#include <max6675.h>
#include <LiquidCrystal.h>
#include <Thermocouple.h>
#include <SPI.h>

#define    csTC1    10               //chip select for MAX6675
//#define   KTC_SO    12
//#define   KTC_CLK   13

#define   LCD_RS   2
#define   LCD_EN   3
#define   LCD_D4   4
#define   LCD_D5   5
#define   LCD_D6   6
#define   LCD_D7   7

LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
//MAX6675 ktc(KTC_CLK, csTC1 , KTC_SO);


Thermocouple tc1 = Thermocouple(csTC1);    //instantiate the thermocouple object

void setup() {

  lcd.begin(16, 2);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("TEMP: ");
  displayTemp(tc1.readC());   //read the TC and print the temperature
  lcd.print("");
  delay(100);
}

void displayTemp(float fTemp) {
  if (fTemp < 0.0) {
    lcd.setCursor(0, 1);
    lcd.print("Sensor Averiado");
  }
  else {
    lcd.print(fTemp, 0);
    lcd.print((char)223);    //octal 260 = degree symbol
  }
}



Go Up