Control de temperatura !

Hola, necesito ayuda urgente, necesito hacer un horno electrico que pueda ser controlada su temperatura, es decir, que uno por medio de botoneras colocar la temperatura deseada y que tenga una precision de 0.2 ºC. Lo que encontre en la red fue lo siguiente pero trabaja en un intervalo de temperatura que en mi caso necesito una temperatura fija que sea controlada.

http://www.pablin.com.ar/electron/circuito/mc/termost/index.htm

:LOL: :LOL: :LOL:
 
Es muy importante que especifiques, el rango de temperaturas de trabajo, para elegir el sensor adecuado y la cantidad de bits necesarios para manejar el sistema, dada la resolución de 0,2 º.
 
Otra cosa que debe llevar el termostato es que trabaje con ciclos completos, es decir, que cuando abra el rele se abra juntos al finalizar un ciclo (n*20 ms).

¿Se puede hacer con un PIC? :LOL:
 
Hola un saludo , les dejo una duda que tengo , estoy programando un PIC16F819, creo haber programado bien el oscildor y la división para la lectura del adc, pero cuando lo simulo en Proteus tengo el problema que cuando varío el termisntor para el cambio de temperatura el ADC se demora mucho en actualizar el valor. Les pido de ante mano disculpas, soy nuevo en esto de programar PIC y estoy aprendiendo C almismo momento, queiro ir poco a poco si me pudieran ayudar.
Gracias
les dejo lo que tengo de programa hasta ahora.

// INCUBADORA CON PIC16F819

#include <xc.h>
#define _XTAL_FREQ 8000000
#include "configurar_pic.h"
#include "flex_lcd.h"
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
ADCON1 = 0x8E;
ADCON0 = 0x45;
OSCCON = 0b01110101;
TRISA = 0x01;
TRISB = 0x00;
PORTB = 0x00;
Lcd_Init ();
Lcd_Cmd(LCD_CLEAR);
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(1,1, "*-Bienvenido-*");
__delay_ms(500);

int dato;
int str [10];

while (1)
{

{
if (ADCON0bits.GO_DONE==0);
ADCON0bits.GO_DONE=1;
dato=ADRESH<<8 | ADRESL;
sprintf(str,"%d",dato);
Lcd_Out(1,0,"Lectura ADC=");
Lcd_Out2(1,12,str);
__delay_ms(100);

if (dato > 445)
PORTBbits.RB7 =1;
else if (dato <=392)
PORTBbits.RB7 =0;
else
PORTBbits.RB7 =0;

}
PORTBbits.RB3 = 1;
__delay_ms(500);
PORTBbits.RB3 = 0;
__delay_ms(500);
PORTBbits.RB1 = 1;
__delay_ms(500);
PORTBbits.RB1 = 0;
__delay_ms(500);
PORTBbits.RB4 = 1;
__delay_ms(500);
PORTBbits.RB4 = 0;
__delay_ms(500);
}
return;
}
 

Adjuntos

  • PIC 16F819.png
    PIC 16F819.png
    64.7 KB · Visitas: 3
El problema es que tienes muchos delays.
Gracias colega, el problema era ese, pero tengo mi duda, si yo tuviera que hacer un programa grande donde por alguna razón debo tener esos tiempos de demora , cómo me recomiendas que lo haga?, por alguna interrupcion o de que forma?, porque si además usara el resto de los convertidores analógicos se demoraría, o habría que poner el oscilador a más frecuencia?.
un saludo
 
Arriba