top of page

SENSOR DE TEMPERATURA CON UN TERMISTOR NTC 100k y PIC18F4550 MPLAB IDE XC8

Hola comunidad, espero esten bien. El dia de hoy les traigo un proyecto interesantisimo. Consiste en un sensor de temperatura con un termistor NTC de 100k.

En este proyecto me encontré con muchos problemas, primeramente como se comporta el Termistor en función de la temperatura y cual es la ecuación característica que lo representa. Estuve revisando los datasheet pero con muy poca información así que me tope con un página web que ayuda mucho para calcular de coeficientes de Steinhart-Hart:

https://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm

Imagen N° 1 .- Web para Calculo de coeficientes de Steinhart-Hart

La formula relacióna la resistencia del termistor con la temperatura.

Para ello vamos a utilizar un microcontrolador PIC18F4550 y usaremos los módulos ADC, LCD

para que extraer los datos del pin del PuertoAbits.RA0 como entrada analógica, donde se obtendrán valores analógicos del divisor de tensión que se muestra en la imagen #2 en Proteus. Ademas, se ha integrado un LCD16x2 para dicho proyecto.

Imagen N° 2 .- Diagrama electronico en Proteus V8.0

El programa en lenguage C quedara de esta manera:

#include <xc.h> #include "LCD.h" #include "CONF.h" #include <stdio.h> #include <adc.h> #include <math.h> #include <string.h>

void main (void) {

// variables unsigned char s[16]; // Array de 8 bits double TEMP; int Vo; double R1 = 100000; // resistencia fija del divisor de tension double logR2, R2, TEMPERATURA; double c1 = 0.6973924590e-03, c2 = 2.189737381e-04, c3 = 0.8720228032e-07;

// coeficientes de S-H en pagina: de un NTC //http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm

// Configuracion de Puertos TRISA=0xFF; // PUERTO A COMO ENTRADA TRISD = 0x00; // PUERTO D SALIDA LCD

// CONFIGURACION ADC // Oscilador externo de 4MHz OpenADC(ADC_FOSC_64 & ADC_RIGHT_JUST & ADC_16_TAD, ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD &ADC_VREFMINUS_VSS,14);

// RETARDO DE 50 Tcy (50 * Fosc/4) __delay_ms(100); // UN TIEMPO DE ESPERA.

// inicio LCD Lcd_Init(); Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Write_String("Curso PIC18F"); Lcd_Set_Cursor(2,1); Lcd_Write_String("MICROTECSD"); __delay_ms(2000); // UN TIEMPO DE ESPERA.

// BUCLE

while(1){ // Iniciamos la Conversión ConvertADC(); // esperamos que se complete la conversión while(BusyADC()); Vo = ReadADC(); // lectura de A0 double V = Vo *(5.0/1023.0); // Valor del Voltaje de entrada. // Calculo de la temperatura

R2 = (R1*V)/(5-V); // conversion de tension a resistencia logR2 = log(R2); // logaritmo de R2 necesario para ecuacion TEMPERATURA = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // ecuacion S-H TEMP = TEMPERATURA - 273.15; // Kelvin a Centigrados (Celsius)

// MOSTRAMOS EN LA LCD EL VALOR DEL VOLTAJE

Lcd_Clear(); sprintf(s,"Temp: %2.2f", TEMP); /* convert integer to ASCII string */ Lcd_Set_Cursor(1,1); Lcd_Write_String(s); sprintf(s,"Res.: %2.2f", R2); Lcd_Set_Cursor(2,1); Lcd_Write_String(s); sprintf(s,"V: %2.2f", V); Lcd_Set_Cursor(2,13); Lcd_Write_String(s); __delay_ms(1000); // UN TIEMPO DE ESPERA. } }

La simulacion la hicimos con Proteus Version 8.0 la puedes ver a continuacion:

Les dejo el programa:

https://www.dropbox.com/sh/3y2o34jhlkmoxii/AADwjp_9xP9Hqkq3YZkZjCPLa?dl=0

👉Suscribete

👉Dale me gusta, sìguenos en nuestra Fan-Page y dale me encanta a esta publicaciòn y Compartela en Modo Pùblico en tu Perfil.

▶Te esperamos!

MICROTECSD Piensa en Grande!!!

Visitanos en :

Blog: https://contacto3dtec.wixsite.com/microtecsd Facebook: https://www.facebook.com/MICROTECSD/

Email: microtecsd123@gmail.com or contacto3dtec@gmail.com


About Me.

I'm a paragraph. Click here to add your own text and edit me. I’m a great place for you to tell a story and let your users know a little more about you.

  • Black Facebook Icon
  • Black Instagram Icon
  • Black Twitter Icon
Never Miss a Post!
bottom of page