Error lectura de temperatura despues de activar la curva

Joseelectronico
Hot Gun
Mensajes: 9
Registrado: Mar Jun 30, 2020 4:35 pm
Máquina: Casera

Error lectura de temperatura despues de activar la curva

Mensajepor Joseelectronico Sab Jul 04, 2020 8:26 am

Bunas noches compañeto les comento el por que de este hilo.
Resulta que le subi el codigo al arduino y eje ute el sof en el pc todo iva exelente me arojava buenas lecturas 22 grados ambas sondas al anbiente las toque con los dedos y me marcava 36 grados bastante presiso,
Pero al momento de activar la curva y volver a la pantalla principal la temperatura de mesddor de abajo ( precalentador ) entra en error y marca 001 y dice error probe cambiando fisocamente la conecion de cs0 y cs1 y igual aroja el mismo error
Como podria solucionar em problema gracias.
Uso las max6675 este es el codigo que estoy usando

Código: Seleccionar todo

//Arduino Rework Station 2.0 by Domingo
#include <MAX6675.h>
#include <PID_v1.h>

#define PreHeater 7
#define HotGun 8
#define FanHotGun 6
int CS0 =10;      // CS pin on MAX6675
int CS1 = 11;      // CS pin on MAX6675
int SO = 12;      // SO pin of MAX6675
int SCK1 = 13;      // SCK pin of MAX6675
int units = 1;      // Units to readout temp (0 = ˚F, 1 = ˚C)
int var,var2;
float error1 = 0.0;   // Temperature compensation error
float error2 = 0.0;   // Temperature compensation error
float temp[2];
double varPid[5];
char* valPosition;
char delimiters[] = "!:,";
char StrPid[128];
unsigned long Time;
unsigned long TimeMax1;
unsigned long TimeMax2;
unsigned long TimeMotor;
unsigned long TimeLectura;
unsigned long TimeSerial;
unsigned long TimePidHorno;

MAX6675 temp0(CS0,SO,SCK1,units,error1);
MAX6675 temp1(CS1,SO,SCK1,units,error2);
static boolean StartPid=false;
char StrSP[3];
double Setpoint, Input, Output;
PID HotGunPid(&Input, &Output, &Setpoint, varPid[3], varPid[4],varPid[5], DIRECT);
int WindowSize = 1000;
unsigned long windowStartTime;

void setup() {
  Time=millis();
  TimeMax1=millis();
  TimeMax2=millis();
  TimeMotor=millis();
  TimeLectura=millis();
  TimeSerial=millis();
  TimePidHorno=millis();
  windowStartTime = millis();
  pinMode(PreHeater, OUTPUT);    //Preheater
  pinMode(HotGun, OUTPUT);    //HotGun
  pinMode(FanHotGun, OUTPUT);    //FanHotGun
  HotGunPid.SetMode(MANUAL);
  HotGunPid.SetOutputLimits(0, WindowSize);
  Serial.begin(9600);
}

void readSerialString (char *strArray) {
  int i = 0;
  if(!Serial.available()) {
    return;
  }
  while (Serial.available()) {
    strArray[i] = Serial.read();
    i++;
  }
  strArray[i] = 0;  // indicate end of read string
}

void FanPwm()
{
  if(Time>TimeMotor+30){ analogWrite(FanHotGun,int(var2)); TimeMotor=millis(); }
}

void loop() {
 
  Time=millis();
  if(Time>TimeMax1+420){ temp[0] = temp0.read_temp(1); TimeMax1=millis(); }
  if(Time>TimeMax2+420){ temp[1] = temp1.read_temp(1); TimeMax2=millis(); }

   if (Time>TimeSerial+30){
    if(Serial.available()){
        var = Serial.read();
   switch (var) {
      case 'P':    // Precalentador ON
        digitalWrite(PreHeater,HIGH);
        break;
      case 'p':    // Precaletador OFF
        digitalWrite(PreHeater,LOW);
        break;
      case 'H':
        FanPwm(); //Motor Aire PWM
        digitalWrite(HotGun,HIGH);
        break;
      case 'h':
        digitalWrite(HotGun,LOW);
        digitalWrite(FanHotGun,LOW);
        break;
      case 'F':
        FanPwm();
        break;
      case 'f':
        digitalWrite(FanHotGun,LOW);
        break;
      case 'l':
        var2 = Serial.read();
        break;
      case 'N':
         FanPwm();
         StartPid=true;
         HotGunPid.SetMode(AUTOMATIC);
         break; 
       case 's':
          StartPid=false;
          HotGunPid.SetMode(MANUAL);
          digitalWrite(HotGun,LOW);
          break; 
       case 'T':
          readSerialString(StrSP);
          Setpoint=atoi(StrSP);
          break;
       case 'K':
          readSerialString(StrPid);
          valPosition = strtok(StrPid, delimiters);
          for(int i = 0; i < 6; i++){
          varPid[i] = atof(valPosition);
          valPosition = strtok(NULL, delimiters);
          }
          break;
      }
    }
    TimeSerial=millis();
  }
   
 
      if(StartPid==true){
          if(Time>TimePidHorno+300){
         
            Input = temp[0]; 
           double gap = abs(Setpoint-Input);
           if(gap<3)
          { 
        HotGunPid.SetTunings(varPid[3], varPid[4], varPid[5]);
          }
          else
          {
            HotGunPid.SetTunings(varPid[0], varPid[1], varPid[2]);
          }
           HotGunPid.Compute();
           TimePidHorno=millis();
          }
        unsigned long now = millis();
        if(now - windowStartTime>WindowSize)
        {
         windowStartTime += WindowSize;
        }
         if(Output > (now - windowStartTime))
         {
         digitalWrite(HotGun,HIGH);
         }
         else
          {
          digitalWrite(HotGun,LOW);
         }     
      }

      if(Time>TimeLectura+1000){
      Serial.print(temp[0] ,0);
      Serial.print(":");
      Serial.print(temp[1] ,0);
      Serial.print(":");
      Serial.print(Output,0);
      Serial.println();
      TimeLectura=millis();
   }
}
Joseelectronico
Hot Gun
Mensajes: 9
Registrado: Mar Jun 30, 2020 4:35 pm
Máquina: Casera

Re: Error lectura de temperatura despues de activar la curva

Mensajepor Joseelectronico Dom Jul 05, 2020 4:00 pm

para la compiacion y la subida del codigo use aeduino ide 1.8.14
Le dejo video del error

https://drive.google.com/file/d/1ZfaI3T ... sp=sharing
Joseelectronico
Hot Gun
Mensajes: 9
Registrado: Mar Jun 30, 2020 4:35 pm
Máquina: Casera

Re: Error lectura de temperatura despues de activar la curva

Mensajepor Joseelectronico Dom Jul 05, 2020 5:41 pm

Buenas tardes conpañeros solucione el problema
Cargue el codigo con la vercion 1.0.4 de arduino IDE
Y eso corrigio el error

Volver a “Máquinas caseras”