Sei sulla pagina 1di 8

19/06/12

SENSOR DE TEMPERATURA CON LAUNCHPAD MSP430 (TEXAS)


W. Gmez (273558), J. Barrera (273219), C. Castaeda (416044), y K. Nez (274345) Facultad de Ingeniera, Ciencias, Fundamentos de Electricidad y Magnetismo Grupo 12 Universidad Nacional de Colombia, Bogot 19 de Junio de 2012 RESUMEN Este proyecto es la aplicacin de todos los temas vistos del curso electricidad y magnetismo, el cual consiste en medir la temperatura del ambiente por medio del sensor LM35, cuyo voltaje de salida es linealmente proporcional a la temperatura en grados Centgrados. (55 C a 150 C ). El circuito consta de una tableta Launchpad MSP430 la cual consta de un microcontrolador programable, capaz de ejecutar las rdenes grabadas en su memoria. Finalmente el dato de la temperatura es mostrado en una tarjeta LCD.

1. INTRODUCCIN La temperatura es una de las magnitudes fsicas que ms se miden. Los sensores de temperatura convierten una magnitud fsica en una resistencia o tensin elctrica. El uso de sensores de temperatura es muy amplio. Sea que se trate de la temperatura ambiental en la casa o en la oficina o la temperatura precisa de un material en proceso de ebullicin, la medicin de temperatura en el mbito privado o industrial es muy importante. Los sensores de temperatura usan diferentes efectos fsicos para convertir la temperatura en una magnitud elctrica. Los sensores de resistencia cambian su resistencia elctrica al cambiar la temperatura. Como la curva caracterstica no es siempre lineal, la electrnica debe hacer tales correcciones para adquirir la mayor precisin posible.

Si una seal contnua, S(t), tiene una banda de frecuencia tal que fm sea la mayor frecuencia comprendida dentro de dicha banda, dicha seal podr reconstruirse sin distorsin a partir de muestras de la seal tomadas a una frecuencia fs siendo fs > 2 fm. En la figura se muestra un esquema simplificado del proceso de muestreo.

Figura 1. Seal de muestreo El interruptor no es del tipo mecnico, puesto que por lo general fs es de bastante valor. Suelen emplearse transistores de efecto campo como interruptores, para cumplir los requerimientos que se le exigen entre los que se encuentran: Una elevada resistencia de aislamiento cuando los interruptores (transistores) estn desconectados. Una baja resistencia si los interruptores estn conectados o cerrados. Una elevada velocidad de conmutacin entre los dos estados de los interruptores. En la siguiente figura se ofrece las formas de las tres seales principales: -S(t) seal a muestrear -seal muestreadora -S(t) seal muestreada

2. TEORA RELACIONADA Convertidores analgicos-digitales. Los convertidores A/D son dispositivos electrnicos que establecen una relacin biunvoca entre el valor de la seal en su entrada y la palabra digital obtenida en su salida. La relacin se establece en la mayora de los casos, con la ayuda de una tensin de referencia. La conversin A/D tiene su fundamento terico en el teorema de muestreo y en los conceptos de cuantificacin y codificacin. Una primera clasificacin de los convertidores A/D, es la siguiente: -Conversores de transformacin directa. -Conversores con transformacin (D/A) intermedia, auxiliar. Teorema del Muestreo Enunciado:

SENSOR DE TEMPERATURA W. Gmez, J. Barrera, C. Castaeda, y K. Nez

Figura 4. Representacin del multiplexor y el demultiplexor En la figura anterior el multiplexor y el demultiplexor se han representado mediante conmutadores rotativos sincronizados, los cuales, evidentemente no son adecuados, dada la gran frecuencia de giro fs, necesaria en este sistema. Para ello se emplean multiplexores y demultiplexores electrnicos. En este sistema de transmisin de seales es imprescindible, el perfecto sincronismo entre los dos extremos del canal. Error de codificacin Si la naturaleza de los datos es analgica y queremos convertirla en digital necesitaremos realizar en ellos una transformacin para obtener un formato digital. Este proceso para cambiar el formato de la seal conlleva los siguientes pasos: Muestreo Cuantificacin Codificacin En primer lugar es necesario muestrear la seal analgica a la frecuencia de Nyquist (doble del ancho de banda), obtenindose la seal muestreada. En este caso podemos encontrar un error ya que si no muestreamos a la frecuencia de Nyquist aparecer aliasing y esto nos producir un solape de la seales lo que nos repercutir en que no podremos recuperar la seal original. Por lo tanto es importante tener siempre presente como tenemos que realizar el muestreo. Pero ahora lo que nos interesan son los errores que se producirn en los dos siguientes pasos para pasar una seal analgica a digital. Cuantificar significa que a la seal que hasta ahora tenamos y tomaba valores infinitos dentro de un margen del voltaje en nuestro caso 5v y necesitamos que pase slo a tomar una serie de valores determinados dentro del rango que tenamos. La cantidad de valores que tiene que tomar viene directamente determinada por la cantidad de bits del conversor A/D ya que cuantos ms bits tenga ms cantidad de valores podr tomar dentro del rango.

Figura 2. Seales principales Desde el punto de vista de la cuantificacin de la seal muestreada, lo ideal sera que el tiempo en que el interruptor est cerrado, fuese prcticamente cero, ya que de otro modo, la seal muestreada puede variar en dicho tiempo y hacer imprecisa su cuantificacin. Debe tenerse en cuenta que para la reconstruccin de la seal original, a partir de la muestreada, se emplea un filtro de paso bajo, el cual deber tener una funcin de transferencia como se indica en la figura siguiente:

Figura 3. Funcin de transferencia Obsrvese que la respuesta del filtro, debe ser plana hasta una frecuencia, como mnimo, igual a fm, para caer posteriormente de forma brusca a cero, antes de que la frecuencia alcance el valor de fs-fm. Mediante la aplicacin del Teorema del Muestreo, se pueden transmitir varias seales, por un mismo canal de comunicacin. Para ello se muestrea sucesivamente varias seales S1, S2, S3,.... y las seales muestreadas se mandan por el canal de comunicacin. A este sistema se le denomina "multiplexado en el tiempo" Al otro extremo del canal habr que separar las distintas seales muestreadas para hacerlas pasar despus por el filtro paso bajo que las reconstruya

SENSOR DE TEMPERATURA W. Gmez, J. Barrera, C. Castaeda, y K. Nez

La conclusin que podemos observar en el dibujo es que cada vez que cuantifiquemos un punto de la seal si no es exactamente en las divisiones que realiza el conversor se va a producir un error pero que el error mayor ser cuando se encuentre en la mitad de dos de estas divisiones que en nuestro caso si realizamos los clculos encontraremos que el error mximo de cuantificacin ser de 0.0097v. 3. MONTAJE Y PROCEDIMIENTO Materiales: Protoboard Launchpad MSP430 Tarjeta LCD Sensor LM35 Cables conectores Cable UBS

Figura 5. Error de codificacin Como se puede claramente observar de aqu aparece un error ya que los valores que tenamos de la seal no se van a quedar como antes y pasarn a tomar el valor discreto ms cercano producindose un error con respecto a la seal original. Como antes habamos dicho el error depender de los valores discretos que se puedan tomar y estos a su vez de los bits de que disponga el conversor. Un ejemplo claro de la cuantificacin lo podemos observar cuando reproducimos msica MP3, ya que esta es un formato digital de seales analgicas que ha pasado por el proceso que antes hemos detallado. La calidad de la msica ser proporcional a la cantidad de bits con que hayamos cuantificado. Actualmente la calidad de los CDs es de 16 bits ya que los errores que aqu se producen son casi imperceptibles para el odo humano pero tambin se esta trabajando con 24 bits. Una vez entendida la importancia de la cantidad de bits a la hora de cuantificar debemos de sealar que el conversor que a nosotros nos interesa tiene 10 bits tambin produce un error determinado. El conversor puede tomar 2 elevado a 10 = 1024 muestras de los 5v de pico. Con lo que se podr tomar una muestra cada 0.01953125v.

Protoboard: Se llama protoboard o tarjeta para prototipos, a un elemento auxiliar en el estudio, desarrollo y diseo de circuitos analgicos o digitales. Se encuentra compuesta de un material aislante, generalmente de plstico, la cual presenta perforaciones para permitir insertar algn componente electrnico sin la necesidad de soldadura. LaunchPad MSP430: Forma parte de una serie de productos de microcontroladores de Texas. Posee un zcalo DIP integrado que soporta dispositivos de la serie MPS430 de hasta 20 pines. Adems, contiene una herramienta de emulacin que permite una conexin directa con una PC para la programacin, debugeo y evaluacin. Texas provee un software gratuito para el desarrollo de aplicaciones. LaunchPad puede ser usado para crear soluciones interactivas gracias a los pulsadores incluidos en la placa, LEDs, y pines de entrada / salida extra que permiten una fcil integracin con dispositivos externos.

Algunos Precios ($) Protoboard Launchpad MSP430 (importada) Tarjeta LCD Sensor LM35 Cables conectores Cable UBS Fuente Total
Tabla 1. Costo del montaje realizado

Figura 6. Grfica de Voltaje Vs tiempo

15000 25000 15000 3000 3000 3000 5000 69000

SENSOR DE TEMPERATURA W. Gmez, J. Barrera, C. Castaeda, y K. Nez

Finalmente el montaje utilizado fue el siguiente:

Figura 9. Construccin del montaje realizado

Figura 7. Partes de la tableta LaunchPad MSP430 Sensor LM35: El LM35 es un sensor de temperatura con una precisin calibrada de 1C y un rango que abarca desde -55 a +150C. El sensor se presenta en diferentes encapsulados pero el mas comn es el to-92 de igual forma que un tpico transistor con 3 patas, dos de ellas para alimentarlo y la tercera nos entrega un valor de tensin proporcional a la temperatura medida por el dispositivo. La salida es lineal y equivale a 10mV/C por lo tanto: +1500mV = 150C +250mV = 25C -550mV = -55C Algunas de las caractersticas del sensor son: Es econmico Entrega una salida lineal de voltaje para la lectura de humedad que va de 0 a 5 volts Tamao reducido Se alimenta con 5 voltios Bajo consumo de corriente

Figura 10. Montaje del sensor en funcionamiento

4. ANLISIS Y RESULTADOS El mundo real es bsicamente analgico. La medida directa de una magnitud fsica (sonido, temperatura, presin, etc.) es convertida por el correspondiente transductor (sensor) a un valor de tensin analgica capaz de ser procesada por un sistema electrnico. Asimismo, el sistema electrnico proporcionar a los correspondientes efectores (altavoces, motores, calefactores, etc.) una tensin analgica que determine su actuacin. Figura 8. Especificaciones del sensor LM35

19/06/12

Figura 11. Esquema del circuito para el sensor de temperatura realizado en el programa Proteus versin 7.0

19/06/12

4. ANLISIS Y RESULTADOS El mundo real es bsicamente analgico. La medida directa de una magnitud fsica (sonido, temperatura, presin, etc.) es convertida por el correspondiente transductor (sensor) a un valor de tensin analgica capaz de ser procesada por un sistema electrnico. Asimismo, el sistema electrnico proporcionar a los correspondientes efectores (altavoces, motores, calefactores, etc.) una tensin analgica que determine su actuacin. No todas las aplicaciones requieren un resultado de 10-bits de resolucin, pero si pueden requerir una conversin A/D ms rpida. El mdulo A/D permite qu el usuario realice la compensacin de velocidad de la conversin. Figura 12. Resultados obtenidos por la computadora en tiempo real, mediante el programa IAR embedded workbench

Figura 13. Resultados obtenidos por la computadora en tiempo real, mediante el programa IAR en nmeros binarios

SENSOR DE TEMPERATURA W. Gmez, J. Barrera, C. Castaeda, y K. Nez

6. CONCLUSION Los sistemas digitales emplean los valores numricos codificados en binario, en palabras digitales compuestas por ceros y unos; ello proporciona a los sistemas digitales alta fiabilidad y precisin, conseguidas por la perfecta distincin fsica entre el 0 y el 1, y una gran potencia de clculo, derivada de la utilizacin de un sistema de numeracin y de la capacidad de integracin de funciones booleanas de altsima complejidad. 7. REFERENCIAS

Convertidores analgicos-digitales [Visitado 15 de junio de 2012] disponible en internet: <http://serverdie.alc.upv.es/asignaturas/PAEEES/2004-05/B01B02%20%20Conversor%20AD%20del%20PIC16F877.pdf> Sensores de temperatura [Visitado 15 de junio de 2012] disponible en internet: <http://www.pceiberica.es/instrumentos-de-medida/sistemas/sensorestemperatura.htm> Tutorial sensor temperatura en LCD [Visitado 15 de junio de 2012] disponible en internet: <http://www.comunidadatmel.com/attachments/File/TUT ORIAL_SENSOR_DE_HUMEDAD_Y_TEMPERATUR A_EN_LCD_CON_ATMEGA32.pdf> TEXAS INSTRUMENTS: [Visitado 15 de junio de 2012] disponible en internet: <http://www.ti.com/general/docs/prod.tsp?DCMP=TIHo meTracking&HQS=Other+OT+home_p_allsc>

8. ANEXO Programa Principal


//#include "io430.h" #include <msp430g2553.h> #include "ADC10_2553.h" //void write_SegC (char value) // LCD Port assignement #define LCD_DIR P1DIR #define LCD_OUT P1OUT // Lcd Pin assignement #define LCD_PIN_RS BIT5 //#define LCD_PIN_RW BIT7

#define LCD_PIN_EN BIT6 #define LCD_PIN_D4 BIT1 #define LCD_PIN_D5 BIT2 #define LCD_PIN_D6 BIT3 #define LCD_PIN_D7 BIT4 //#define MAT_PIN BIT6 #define forever for(;;) // Procedure to strobe data to LCD register void LCDPulseEN(void) { // Set Enable active __delay_cycles(20); LCD_OUT |= LCD_PIN_EN; __delay_cycles(20); // Release Strobe LCD_OUT &= (~LCD_PIN_EN); } // this send 4 bit of data void SendNibble(char data) { // Clear all data bit LCD_OUT &= ~(LCD_PIN_D4|LCD_PIN_D5|LCD_PIN_D6|LCD_PIN_D7); // Set data bit on port bit if(data & 0x01) LCD_OUT |= LCD_PIN_D4; if(data & 0x02) LCD_OUT |= LCD_PIN_D5; if(data & 0x04) LCD_OUT |= LCD_PIN_D6; if(data & 0x08) LCD_OUT |= LCD_PIN_D7; // Nibble set complete, send to LCD LCDPulseEN(); __delay_cycles(500); } // Send a byte of data to LCD register void SendByte(unsigned char data) { SendNibble((data>>4) & 0x0F); SendNibble((data) & 0x0F); __delay_cycles(500); } // send a byte to command register void SendInstruction(unsigned char data) { // Set Register to command LCD_OUT &= ~LCD_PIN_RS; SendByte(data); __delay_cycles(80000); } // Send a byte of data to LCD register void LCDputch(unsigned char data) { // Set Register to data LCD_OUT |= LCD_PIN_RS; SendByte(data); __delay_cycles(500); } void InitLCD(void) { // clear all bit of LCD control & data Lines LCD_OUT &= ~(LCD_PIN_EN|LCD_PIN_RS); //|LCD_PIN_RW); // Set LCD pins to output LCD_DIR |=(LCD_PIN_EN|LCD_PIN_RS|LCD_PIN_D4|LCD_PIN_D5|LCD_PIN_D6| LCD_PIN_D7); // |LCD_PIN_RW // wait Powerup __delay_cycles(100000); // LCD can be in an unknown state so set to a known state sending 3 times LCD set to 8 bit mode SendNibble(3);

SENSOR DE TEMPERATURA W. Gmez, J. Barrera, C. Castaeda, y K. Nez

__delay_cycles(16000); // Wait for init SendNibble(3); __delay_cycles(400); SendNibble(3); __delay_cycles(400); // now is 8 bit, sending 2 set mode to 4 bit (0x2n) SendNibble(2); __delay_cycles(800); // Now set to mode 4 bit 2 line 5x7 char SendInstruction(0x28); __delay_cycles(8000); // Make cursor visible one line set to 0x0c to invisible cursor SendInstruction(0x0e);//c __delay_cycles(800); // Clear screen SendInstruction(0x01); __delay_cycles(8000); // Increment address mode SendInstruction(0x06); __delay_cycles(8000); // Set write data address to 0 SendInstruction(0x80); } // Set write cursor to Row and Col void LCDSetPosition(char Row, char Col) { // if row is not 0 add 0x40 (4 line models require adding 0 20 60 40) if(Row) Col+=0x40; SendInstruction(0x80 | Col); __delay_cycles(800); } // Clear LCD void LCDClear(void) { SendInstruction(0x01); __delay_cycles(100000); } // Lcd cursor to first row first column void LCDGoToHome(void) { SendInstruction(0x02); __delay_cycles(100000); } // Shift left mode void LCDShiftLeft(void) { SendInstruction(0x18); } // Shift right mode void LCDShiftRight(void) { SendInstruction(0x1C); } // Cursor blinking mode void LCDBlinkCursor(void) { SendInstruction(0x0F); } // Print a text line to LCD screen void LCDPrintString(const char * Text) { while (*Text) LCDputch(*Text++); } void delay0(unsigned long i);//function for delays int temperatura; char temperaturad,temperaturau,temperaturaReal; char temperature; //char *pointer=&temperatura; void main (void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ;

DCOCTL = CALDCO_1MHZ; InitLCD(); ADC10_Init(); //configure TIMER A TACTL = TASSEL_2 + ID_3 + MC_1; // Set up Timer A: Clock : SMCLK/8; //Mode : Up (counts from zero to the value of CCR0) CCR0 = 65000; // TAR counts up to CCR0 and resets to 0 (313*8 = 2504 us : ~ 2.5 ms) CCTL0 = CCIE; // CCR0 interrupt enabled _EINT(); // enable interrupts

temperatura=ADC10_Read(0);///LECTURA DEL CANAL LCDClear(); ////////////////PROGRAMA PRINCIPAL forever{ temperature = (3.6*(float)temperatura*100)/1024.0; temperaturaReal=temperatura+48; //2-1; temperaturad=temperature/10+48; temperaturau= temperature%10+48; //LCDputch(temperature); //LCDputch(temperaturaReal); LCDputch('T'); LCDputch('e'); LCDputch('m'); LCDputch('p'); LCDputch('e'); LCDputch('r'); LCDputch('a'); LCDputch('t'); LCDputch('u'); LCDputch('r'); LCDputch('a'); LCDputch(':'); LCDSetPosition(2,1); LCDputch(temperaturad); LCDputch(temperaturau); LCDputch('.'); LCDputch(temperaturau+2); LCDputch(temperaturad+3); LCDGoToHome(); delay0(140000); // LCDClear(); }//end forever }//end main void delay0(unsigned long i){ do (i--); while (i != 0); } //////////////////////////// Timer_A Interrupt Vector handler//////////////// #pragma vector=TIMER0_A0_VECTOR //Interrupt vector for channel CCR0 __interrupt void Timer_A(void) { temperatura=ADC10_Read(0); }

Potrebbero piacerti anche