Autor Tema: ayuda con control de temperatura  (Leído 8334 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
ayuda con control de temperatura
« en: 16 de Febrero de 2011, 17:35:23 »
que tal amigos del foro, pido su ayuda para poder arreglar mi programa que realice en C para un control de temperatura, en proteus al hacer la simulacion jala muy bien pero ya armandolo en proto empieza a funcionar mal, espero me puedan ayudar. el control en si tiene dos entradas analogicas una proveniente de un lm35 sensor de temperatura y otra de un potenciometro que va a hacer la temperatura deseada, el problema que al probarlo fisicamente las salidas empiezan a intercambiars eunas con otras , es decir si le pusiera leds , estos empezarian a prender unos y otros sin control, uso el pic16f876a y aqui mi programa:

#include <16f876a.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
#define FOCO PIN_B2
#define CALENTARCEL PIN_B1
#define ENFRIARCEL PIN_B0
#define COMPRESOR PIN_B3

float pot,sensor,t1,t2;

void main(void) {
//set_tris_b(0x00);
setup_adc(ADC_CLOCK_INTERNAL); //configura el converso
setup_adc_ports(ALL_ANALOG);//entrada 0 y 1 como analogicas
delay_ms(1);
disable_interrupts(GLOBAL);

while(1){

// Lectura del canal 0 por AN0
set_adc_channel(0);
delay_ms(10);
pot=read_adc();
delay_ms(10); //para que se estabilice
pot=pot*5*10/255;
t1=pot-(pot*20/100);
delay_ms(10);
//lectura del canal 1 por AN1
set_adc_channel(1);
delay_ms(10);
sensor=read_adc();
delay_ms(10);
sensor=sensor*5*10/255;
t2=pot+(pot*20/100);
delay_ms(10);

 if(sensor<t1)//prende foco
   {
    output_high(foco);//se prende foco
    output_low(compresor);//esta en apagado compresor
    output_low(enfriarcel);//apagada la parte que enfria de la celda
    output_low(calentarcel);//apagada la parte que calienta de la celda
   }
 if (sensor>=t1 & sensor<=t2)
   {
    output_low(compresor);
    output_low(foco);


     if(pot>sensor)//calentar
       {
        output_low(enfriarcel);
        output_high(calentarcel);
        output_low(foco);
        output_low(compresor);

       }
     if(pot<sensor)//enfriar
       {
        output_high(enfriarcel);
        output_low(calentarcel);
        output_low(foco);
        output_low(compresor);

       }
     if(pot==sensor)//no hagas nada
       {
        output_low(enfriarcel);
        output_low(calentarcel);
        output_low(foco);
        output_low(compresor);

        }
 }
 if(sensor>t2)
   {
   output_low(foco);
   output_high(compresor);
   output_low(enfriarcel);
   output_low(calentarcel);

  }


}
}

espero me puedan ayudar, saludos.....

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: ayuda con control de temperatura
« Respuesta #1 en: 16 de Febrero de 2011, 17:40:22 »
mirandolo por encima el problema lo tendras en los if que se pueden dar varias condiciones a la vez yo emplearia else if

para probar.
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
Re: ayuda con control de temperatura
« Respuesta #2 en: 16 de Febrero de 2011, 18:47:34 »
ok lo voy a checar como dices gracias por responder...saludos

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
Re: ayuda con control de temperatura
« Respuesta #3 en: 17 de Febrero de 2011, 13:36:52 »
ya lo hice agregando unos else, pero como no se mucho de programacion no se si esta bien o no, de todos modos no pude evitar poner los if, hice el programa y lo simule y jalo pero aramdo de nuevo no funciona, estaba leyendo que tal vez por el largo del cable del sensor, cause estas variaciones, acorte el cable y disminuyo un poco el problema, que mas puedo hacer, porque al parecer es problema de conexiones en el circuito...saludos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ayuda con control de temperatura
« Respuesta #4 en: 20 de Febrero de 2011, 01:26:18 »
Hola.

Toma varias lecturas del dato analogico y promedialas.

Saludos
El papel lo aguanta todo

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: ayuda con control de temperatura
« Respuesta #5 en: 20 de Febrero de 2011, 13:22:08 »
estaba leyendo que tal vez por el largo del cable del sensor, cause estas variaciones, acorte el cable y disminuyo un poco el problema, que mas puedo hacer, porque al parecer es problema de conexiones en el circuito...saludos

si estas enviando la tension del lm35 directamente por un cable hasta la entrada del pic, es un gran problema por ruidos electronicos temperaturas radiofrecuencias etc... yo hice un proeycto algo parecido, si te fijas en la hoja de datos del LM35 hay un pequeño circuito


 ahi lo que haces es convertir la tension proporcional del LM35 a corriente, y luego en el circuito del pic le agregas una resistencia a masa en la entrada analogica (para convertir la corriente en tension)



capaz que te sirve de ayuda, yo hice un circuito parecido al tullo, pero en ves de regular la temperatura con un potenciomentro lo hice con pulsadores, pero ahi podes ver mas o menos bien como es el tema del circuito, te digo la verdad yo lo he probado  y hasta 80 mts 90 mts aprox. no tuve ningun inconveniente.
http://www.todopic.com.ar/foros/index.php?topic=32726.0

espero que te sea de ayuda.

Saludos
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: ayuda con control de temperatura
« Respuesta #6 en: 20 de Febrero de 2011, 13:41:54 »
Hola.

Toma varias lecturas del dato analogico y promedialas.

Saludos

Hola djblackmagic, lo que te sugiere MLO__  es altamente recomendable.  Además, como tienes configuradas todas las entradas análogas, deberías conectar las que no estás usando al negativo para evitar el ingreso de ruido por esos pines.  Otra posible causa además de lo anterior (ya me pasó), es que tu fuente no esté debidamente regulada.

Saludos!

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
Re: ayuda con control de temperatura
« Respuesta #7 en: 23 de Febrero de 2011, 13:48:46 »
hola a todos, antes que nada quiero agradecerles por tomarse el tiempo para leer y reponder al tema, quiero decirles que tengo conectado el lm35 a un circuito seguidor con un amplificador tl081  y despues al pic, voy a conectar las demas entradas analogicas a masa y realizare el circuito del datsheet del lm35 y comentare resultados, gracias y saludossss...

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
Re: ayuda con control de temperatura
« Respuesta #8 en: 23 de Febrero de 2011, 23:33:25 »
ya lo probe con el circuito del datasheet y aun asi me sigue presentando el mismo error, no se si la falla este en mi programa puesto que soy nuevo programando y el codigo que muestro lo hice basandome en varios aportes de este foro.

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: ayuda con control de temperatura
« Respuesta #9 en: 23 de Febrero de 2011, 23:42:41 »
nose si estoy en lo correcto, pero  no se si hace falta declarar las variables como float, yo en mi ejemplo que te deje en el enlace mio de mi proyecto, la he declarado a las variables de temperatura como signed long, o mejor dicho variables enteras sin usar punto flotante porque no lo vi necesario, podrias adjuntar el esquema en proteus con el archivos cof? si no te es molstia.

Saludos!!
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: ayuda con control de temperatura
« Respuesta #10 en: 23 de Febrero de 2011, 23:57:25 »
aun mas, con variables int16 y un AOP a la entrada del micro, podes llegar hasta usar decimales en las mediciones de temperaturas.
pero bueno, como se dice siempre, opciones son opciones, cada uno toma la que mas le convenga ( o la q mas quiera)

Saludos!!
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
Re: ayuda con control de temperatura
« Respuesta #11 en: 24 de Febrero de 2011, 00:03:21 »
no es molestia al contrario gracias por tu ayuda, no entendi muy bien lo que me pides, te adjunto el archivo .cof de mi codigo en C y no se como pasarte el esquema del circuito en proteus pues en windows no me lo muestra y al abrirlo desde isis proteus me sale con un candado, no se cual sea el problema...al codigo le eh hecho varias modificaciones y aun asi no queda..saludos

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: ayuda con control de temperatura
« Respuesta #12 en: 24 de Febrero de 2011, 00:08:39 »
ok, ahora me lo monto en el proteus, y si me aguantas 15 minutos te comento la experiencia
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado djblackmagic

  • PIC10
  • *
  • Mensajes: 12
Re: ayuda con control de temperatura
« Respuesta #13 en: 24 de Febrero de 2011, 00:14:33 »
gracias ya pude obtener el archivo .dsn del diagrama, te paso el diagrama en proteus del control para que cheques el funcionamiento

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: ayuda con control de temperatura
« Respuesta #14 en: 24 de Febrero de 2011, 00:30:44 »
duda que tengo, en las operacion que utilizas luego de leer los canales?
porque haces por ejemplo:

pot=pot*50/1023;
t1=pot-(pot*20/100);

a vos realemente te funciona con ese tipo de calculos?

mejor dicho, vos inventaste ese tipo de calculos o lo sacaste de otra parte del foro, dsiculpa mi ignoracion sino.

yo lo hubiese hecho asi

pot=((pot*488)/1000)
488 es la cantidad de milivolts por paso del conversor, pero capaz que me estoy llendo por las ramas.
por otro lado, yo habilitaria solo las entradas analogicas que utilizaria, ah y otro pequeño gran consejo que me ha ocurrido ami, has puesto un capacitor (de unos 10uf capaz) bien cerca de los pines de alimentacion del micro??
yo en el proyecto (del hilo mio jeje) tuve exactamente el mismo problema que me aparecian cualquier variable (en mi caso en un display) y es como que se volvia loco el sistema, pero se soluciono con ese capacitor.
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo


 

anything