TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: leon-01 en 05 de Marzo de 2008, 22:08:27

Título: control automatico de temperatura
Publicado por: leon-01 en 05 de Marzo de 2008, 22:08:27
hey hola.
soy nuevo. tengo que hacer unproyecto en donde se controle la temperatura de un estanque de agua con un lm35
ya tengo el diagrama de control. solo quiero saber  de que manera puedo conectar un lcd para visualizar la temperatura en tiempo real.
si aiguien me puede ayudar se lo agradecere.
saludos.
Título: Re: control automatico de temperatura
Publicado por: ema en 05 de Marzo de 2008, 22:24:03
Este es un simple programa que lee un LM35 y con eso controla el pwm de un motor

Código: [Seleccionar]
#include "16f877a.h"
#device adc=8
#fuses HS, NOWDT, NOPUT, NOBROWNOUT, NOLVP, NOPROTECT
#use delay(clock = 20000000)
#use standard_io (A)
#use standard_io (B)
#use standard_io (C)
#use standard_io (D)
#use standard_io (E)

/*
Definición de pines:
AO: INPUT ANALOG
A3: VREF
B4: MOTOR ENABLED
C2: PWM OUTPUT
      D0: EN LCD
        D1: RS LCD
        D2: RW LCD
        D4: D4 LCD
        D5: D5 LCD
        D6: D6 LCD
        D7: D7 LCD
*/

#include "lcd.c"

void main()
{
    int analogico;

lcd_init(); //Inicializamos el LCD

setup_ccp1(CCP_PWM);    //Configuramos CCP1 como PWM

    /*
El ciclo de tiempo se calcula como: (1 / clock) * 4 * t2div * (periodo + 1).
    En este caso: (1/20000000) * 4 * 16 * 128 =  409.6 us o 2.441 Khz.
*/

setup_timer_2(T2_DIV_BY_16, 127, 1); //Configuramos el timer 2 para 2.441 Khz

setup_port_a(AN0_AN1_VSS_VREF); //Seteamos el puerto analógico
  setup_adc(adc_clock_internal);
  set_adc_channel(0);

lcd_gotoxy(1, 1);
lcd_putc("Frec: 2.441 Khz"); //Mostramos la frecuencia en el LCD
lcd_gotoxy(1, 2);
lcd_putc("Temp:"); //Mostramos "Temp:" en el LCD

  while(TRUE)
{
delay_ms(1000);
    analogico = read_adc(); //Leemos la temperatura

lcd_gotoxy(6, 2);
lcd_putc("       ");
lcd_gotoxy(6, 2);
printf(lcd_putc," %d ºC", analogico); //Mostramos el valor de la temperatura en el LCD

if(analogico > 18)
output_high(pin_b4); //Habilitamos el PWM
else
output_low(pin_b4); //Deshabilitamos el PWM

/*
El tiempo en que el pulso esta en alto durante el ciclo
            esta determinado por: analogico * 4 * (1 / clock) * t2div.
*/

set_pwm1_duty(analogico); //Seteamos el valor del PWM
  }
}


Te adjunto la simulacion en proteus. y te aconsejo que leas la reglas del foro porque sino te van a retar.

Saludos
Título: Re: control automatico de temperatura
Publicado por: leon-01 en 05 de Marzo de 2008, 22:53:35
gracias
Título: Re: control automatico de temperatura
Publicado por: juancomcel en 08 de Junio de 2012, 13:08:23
cordial saludo,

tienes algun software en assembler para control de temperatura con un sensor de temperatura resistivo con coeficiente negativo (NTC). Para controla temperatura de 3°c  a 15°c. de antemano gracias