Está en la página 1de 8

UNIVERSIDAD NACIONAL AUTNOMA DE

MXICO

Facultad de Ingeniera

Microprocesadores y microcontroladores

Proyecto Final.

Sistema de control de temperatura.


Alumnos:

Eduardo Ponce lvarez.


Ivn Martnez Lpez.
Gerardo Gmez Guzmn.
OBJETIVO

Desarrollar un sistema que permita medir de manera automtica la temperatura de


algn proceso.

INTRODUCCIN
ML35
El sensor LM35, es un sensor de temperatura integrado de precisin cuyos rangos de
operacin oscilan desde los -55C hasta los 150C, teniendo en cuenta que este tipo
de sensores ofrecen una precisin de +- 1.4C a
temperatura ambiente. Adems de ello, son del tipo lineal;
es decir, que no es necesario forzar al usuario a realizar
conversiones debido a que otros sensores estn basados
en Kelvin.

Fig. 1 Patigrama del LM35

Un LM35 puede funcionar a partir de los 5 V (en corriente continua), sea por
alimentacin simple o por doble alimentacin (+/-). Sus caractersticas ms
importantes se describen a continuacin:

1) Factor de escala lineal de +10 mV / C


2) Rango de trabajo entre -55 C hasta 150 C
3) Apropiado para aplicaciones remotas
4) Bajo costo
5) Funciona con tensiones entre 4 V hasta 30 V
6) Menos de 60 uA de consumo
7) Baja impedancia de salida, 0.1 W, para cargas de 1 mA
TM4C194XL

Para la seleccin y conexin de nuestros puertos nos ayudamos del siguiente


diagrama.

Fig. 2 Diagrama

DESARROLLO

Utilizando la TIVA TM4C1294 se registrar y procesara la seal de un sensor de


temperatura, el sensor elegido para este ejemplo es el LM35DZ, el cual tiene una
resolucin de 10 [mV] por cada grado centgrado, lo cual permite un control
relativamente del proceso. La temperatura se visualizar en un par de Display de 7
segmentos, por lo tanto, la resolucin del instrumento ser de 1 grado centgrado.
El LM35 se conectar al puerto E3 para poder usar el ADC de la TIVA.

Los puertos E se habilitarn como salidas, los puertos K y M se usarn para mandar la
informacin a los Display.
Fig. 3 Lectura de variables unidades decenas y temperatura.

Fig. 4 Lectura de Temperatura.

ELEMENTOS:
2 Display de 7 segmentos
1 Sensor LM35
Fig. 5 Diagrama esquemtico.

CDIGO USADO:
#include<stdint.h>
#include<stdbool.h>
#include "tmc129.h"

#define RCGCGPIO (*((volatile unsigned int*)0x400FE608))


#define PORTKDAT (*((volatile unsigned int*)0x400613FC))
#define PORTKDIR (*((volatile unsigned int*)0x40061400))
#define PORTKDEN (*((volatile unsigned int*)0x4006151C))
#define PORTKPUR (*((volatile unsigned int*)0x40061510))

#define PORTMDAT (*((volatile unsigned int*)0x400633FC))


#define PORTMDIR (*((volatile unsigned int*)0x40063400))
#define PORTMDEN (*((volatile unsigned int*)0x4006351C))
#define PORTMPUR (*((volatile unsigned int*)0x40063510))

void delayMs(int n);


void GPOI_init(void);
int salida(int t);
volatile int r, d, u;
int main (void)
{
GPOI_init();
volatile int resul;
volatile int temp, d, u;

//habilitar reloj
SYSCTL_PLLFREQ0_R |= SYSCTL_PLLFREQ0_PLLPWR;
while(SYSCTL_PLLSTAT_R == 0);
SYSCTL_PLLFREQ0_R &=~SYSCTL_PLLFREQ0_PLLPWR;

SYSCTL_RCGCGPIO_R |= 0x10; //reloj para puerto E


SYSCTL_RCGCADC_R |= 0x011; //reloj para el ADC
//inicializar PE3 para que sea AN0
GPIO_PORTE_AFSEL_R |= 0x08;
GPIO_PORTE_DEN_R &= ~0x08;
GPIO_PORTE_AMSEL_R |= 0x08;

//inicializar adc
ADC0_ACTSS_R &=~0x08;
ADC0_EMUX_R &=~0xf000;
ADC0_SSMUX3_R = 0x00;
ADC0_SSCTL3_R |= 0x06;
ADC0_ACTSS_R |= 0x08;

while(1)
{
ADC0_PSSI_R |= 0x08;
while((ADC0_RIS_R & 0x08 == 0));
resul = ADC0_SSFIFO3_R;
ADC0_ISC_R = 0x08;

temp=((25*resul)/310)-8;

d=temp/10;
salida(d);
PORTMDAT = r;
delayMs(150);
u=temp-(d*10);
salida(u);
PORTKDAT = r;
delayMs(150);
}
}

void GPOI_init(void)
{
NVIC_EN1_R = 0X400;
RCGCGPIO = 0x2E00;

PORTKDIR = PORTKDIR + 0xff;


PORTKDEN = PORTKDEN + 0xff;
PORTKPUR = PORTKPUR + 0xff;

PORTMDIR = PORTMDIR + 0Xff;


PORTMDEN = PORTMDEN + 0Xff;
PORTMPUR = PORTMPUR + 0xff;

}
/* retarda n milisegundos (16 MHz CPU clock) */
void delayMs(int n)
{
int i, j;
for(i = 0 ; i < n; i++)
for(j = 0; j < 3180; j++)
{} /* no hacer nada por 1 ms */
}
int salida(int t)
{
switch(t)
{
case 0:
r = 0b0111111; //0 0x3f 0111111
break;
case 1:
r = 0b0000110; //1 0x06 00000110
break;
case 2:
r = 0b1011011; //2 5c 010111011
break;
case 3:
r = 0b1001111; //3 4f 01001111
break;
case 4:
r = 0b1100110; //4 66 01100110
break;
case 5:
r = 0b1101101; //5 6d 01101100
break;
case 6:
r = 0b1111100; //6 7d 01111100
break;
case 7:
r = 0b0000111;//7 07 00000111
break;
case 8:
r = 0b1111111; //8 ff
break;
case 9:
r= 0b1100111; //9 67 01100111
break;
default:
r=0x00;
break;
}
return r;
}

CONCLUSIONES:
Se presentaron oscilaciones en la lectura del sensor debido a un falso en alguna de las
conexiones, ya que los Display tambin tienen ligeras fallas en su funcionamiento.
Este sistema no considera un sensor que soporte mayores temperaturas y no permita
una resolucin mayor, ya que el ADC de la TIVA resulto estar sobrado para este caso,
con una resolucin de 805 [uV] es muy preciso para la salida de 10 [mV] del LM35.
BIBLIOGRAFA
Jonathan W. Valvano Introduction to ARM CORTEX M Mocrocontrollers
Datasheet LM35