Sensor de temperatura con NTC

Soy nuevo en foro,me pareció interesante este foro ya que vi mucho proyectos. Eh estado elaborando un sensor de temperatura con PIC 16F876 en programación C para la universidad . Esto recién lo estoy aprendiendo y se me esta haciendo complicado. Aquí les dejo la programación con el circuito con el diagrama. Tengo una consulta. ¿Como podría hacer para que cuando mi sensor me detecte mas de 50°C en el puerto B3 se me active un led?

El programa es el siguiente
Código:
#include "16f876.h"
#device adc=10
#fuses XT,NOWDT
#use delay(clock=4000000)
#include <math.h>                
#include <lcd.c>

void main() {
   float tv,tr,temp,y;                 //Variables de ecuación
   int16 value;
   lcd_init();
   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );
   delay_us(10);
   do {
      value = Read_ADC();
      tv = 5.0 * value / 1024.0;
      tr = tv * 10000.0 / (5.0 - tv);
      y = log(tr/20000.0);
       y = (1.0/298.15) + (y *(1.0/4050.0));
      temp=1.0/y;
      temp = temp -273.15;
      printf(lcd_putc,"\nT = %04.2fC", temp);
   } while (TRUE);
}
 

Adjuntos

  • T5_E2.zip
    14.2 KB · Visitas: 31
Última edición por un moderador:
Hola ditmar

Si el puerto B3 te permite utilizarlo como salida puedes:
Agregar allá;

do {
value = Read_ADC();
tv = 5.0 * value / 1024.0;
tr = tv * 10000.0 / (5.0 - tv);
y = log(tr/20000.0);
y = (1.0/298.15) + (y *(1.0/4050.0));
temp=1.0/y;
temp = temp -273.15;
printf(lcd_putc,"\nT = %04.2fC", temp);

// agregar aquí el código y establecer el limite En una variable para compararla con tu variable temp
// por ejemplo If temp es mayor que 50
// encender LED en B3
// si no apagar el LED en B3.
// hay que definir el puerto B3 como salida.

} while (TRUE);

si no te lo permite utiliza otro puerto.

saludos
a sus ordenes
 

Adjuntos

  • T5_E2 (2).zip
    14.3 KB · Visitas: 12
Justo en el punto que te ha indicado MrCarlos y de acuerdo a sus indicaciones, puedes colocar el siguiente código:
Código:
if(temp > 50)
   output_low(PIN_B3);
else
   output_high(PIN_B3);

Debes conectar el ánodo del LED al positivo y el cátodo al pin B3 a través de una resistencia de acuerdo al voltaje que estés usando. Lo que no es necesario, en este caso, es definir el puerto B3 como salida, ya que de acuerdo a la configuración actual el mismo compilador se encarga de hacer que un pin sea de entrada o salida cada vez que se use. Ver comando #use standard_io() del compilador CCS C.

Saludos!
 
Amigos del foro, antemano les agradezco por la ayuda anterior, bueno ahora mi duda es que ahora me han dicho que transmita mi temperatura recibida,con el mismo pic. Es necesario que haga algún cambio al programa ya que yo estoy pensando usa un transmisor RF. Cualquier aporte , estaré agradecido .
 
No creo que tengas que hacerle nada mas al programa, que transmisor vas a utilizar? si es algo como el de los coches RC sólo deberías activar una de las señales con el PIN que enciende el LED, puede ser a través de un transistor.

saludos.
 
Voy a utilizar un transmisor RF , mi duda era , como eh notado que el pic 16f876 tiene un pin de Tx yRx ,no se si necesariamente debo activar estos pines por medio del programa.
 
Puedes utilizar como emisor el C0503 y como receptor el C0504 que son módulos de RF distribuidos por CEBEK y cuestan alrededor de los 8 euros
Gran parte de la información que circula en la red sobre la transmisión de datos por RF entre dos PIC es algo confusa.:confused:
Si puedes utilizar la USART del PIC, estupendo, ya tienes la mitad del trabajo solucionado, sino puedes hacerte tu propio protocolo de comunicaciones, mucho más tedioso pero más reconfortante.:D

Saludos y suerte.
 
Atrás
Arriba