F. Hugo Ramírez Leyva Microcontroladores Convertidor ADC Práctica No. 4 del Curso "Microcontroladores" Uso del Convertidor ADC Objetivos Caracterizar el convertidor ADC del Microcontrolador MSP430 y con base en él realizar algunas aplicaciones para la medición y control de la temperatura. Material • • • • • Sensor de temperatura LM35 y/o LM335 Relevador de con voltaje de activación de 5V, 9 o 12V Transistor BC547 Resistencias MSP430 Launchpad Planteamiento El MSP430 internamente posee un convertidor analógico digital (ADC) de 10 bits. Con él se puede digitalizar una señal analógica en el rango del voltaje de alimentación o menor. Internamente posee una referencia de voltaje que también puede ser usada, así como un sensor de temperatura. La máxima frecuencia de conversión es de 200 kmuestras/seg. El MSP430G2553 que es el microprocesador que posee el Launchpad, tiene 8 entradas externas al ADC, del A0 al A7 (terminales 2, 3, 4, 5, 6, 7, 14 y 15), que se configuran con sus registros de control. También internamente tiene un convertidor analógico digital, en la tabla 1 se muestra el código que programa que configura al convertidor con una frecuencia de muestreo de 1 muestra por segundo de la señal que convierte la temperatura del sensor interno (entrada 10), el voltaje de referencia es de 2.5V. Tabla 1 Código del programa que usa al sensor interno #include "msp430g2553.h" #ifndef TIMER0_A1_VECTOR #define TIMER0_A1_VECTOR TIMERA1_VECTOR #define TIMER0_A0_VECTOR TIMERA0_VECTOR #endif volatile long tempRaw; void FaultRoutine(void); void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 1 F. Hugo Ramírez Leyva Microcontroladores Convertidor ADC P1DIR = 0x41; // P1.0&6 outputs P1OUT = 0; // LEDs off if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) FaultRoutine(); // If cal data is erased // run FaultRoutine() BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO IFG1 &= ~OFIFG; // Clear OSCFault flag BCSCTL2 |= SELM_0 + DIVM_3 + DIVS_3; // MCLK = DCO/8 while(1) { ADC10CTL1 = INCH_1 + ADC10DIV_0; // Temp Sensor ADC10CLK ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON; _delay_cycles(5); // Wait for ADC Ref to settle ADC10CTL0 |= ENC + ADC10SC; // Sampling & conversion start P1OUT = 0x40; // green LED on _delay_cycles(100); ADC10CTL0 &= ~ENC; ADC10CTL0 &= ~(REFON + ADC10ON); tempRaw = ADC10MEM; P1OUT = 0; // green LED off _delay_cycles(125000); } } void FaultRoutine(void) { P1OUT = 0x01; // red LED on while(1); // TRAP } Par la medición de temperatura existen varios tipos de sensores para realizarlos como son termopares, RTD, o sensores de semiconductor, estos últimos son más baratos y fáciles de usar. El circuito LM35, es un circuito diodo Zener cuyo voltaje de salida es proporcional a la temperatura que detecta, teniendo un voltaje de 10mV/°C, de tal manera que si la temperatura es de 0°C el vo ltaje a la salida es de 0V. Si la temperatura es de 100°C, el voltaje es de 1V. En la figura 1 se muestra el diagrama de conexiones y como se monta en un protoboard. El sensor de temperatura LM335 es similar al anterior, la diferencia es su voltaje de salida es de 10mV/°K, por lo que a 0°C (273 °k) se tiene un voltaje de 2.73V 2 F. Hugo Ramírez Leyva Microcontroladores (a) Convertidor ADC (b) Figura 1. (a) Diagrama de conexiones. (b) Conexiones en el protoboard Una incubadora es un recinto en el cual la temperatura se mantiene constante en cierto rango y es utilizada para incubar huevos de aves. Con la presente práctica se pretende realizar la circuitería necesaria para controlar la temperatura en cierto rango usando el Microcontrolador MSP430, con el fin de demostrar la factibilidad de realizar un control con los conocimientos vistos en clase. En la figura 1 se muestra el diagrama a bloques del control de la incubadora, el cual utiliza el sensor de temperatura LM335 para tener un voltaje en función de la temperatura, y un foco de 60 Watts como elemento de calefacción. Los bloques que componen al control de la incubadora son: • • • • • • Temperatura deseada. Es un registro dentro del MSP430 que determina la temperatura deseada. Temperatura medida. Es la temperatura que se mide con el sensor de temperatura interno o externo al MSP430. Sensor de temperatura LM335. Proporciona un voltaje proporcional a la temperatura de la incubadora. Comparador de Histéresis. Cuando la temperatura es mayor a 35 ºC se apaga el foco, cuando ésta es menor a 30 ºC enciende el foco Control de encendido. Activa o desactiva al foco con base en la salida del comparador de histéresis, lo más sencillo es usar un relevador, si se usa un triac es un poco más complejo Calefactor. Es un foco el cual con el calor que genera se incrementa la temperatura en la incubadora. 3 F. Hugo Ramírez Leyva Microcontroladores Convertidor ADC Figura 2. Diagrama a bloques de la incubadora El control de encendido se utilizara un foco de 60 Watts, el cual se alimenta con voltaje de corriente alterna. Como el circuito de control funciona con fuentes de voltaje de +12V, es necesario utilizar un relevado de DC para controlar el encendido del foco, y aislar eléctricamente la parte de potencia de los circuitos de control. En la figura 6 se muestra el diagrama esquemático del circuito de control del relevador. Cuando la salida digital es 1 el transistor se polariza directamente y funciona como interruptor, haciendo circula corriente por la bobina del relevador, lo cual hace que se conmute el relevador, y con ello se cierre el circuito de AC activando el foco. Cuando el voltaje de salida es 0 el transistor no conduce y no se activa el relevador. Procedimiento. 1. Realzar el programa para el Microcontrolador MSP430 que lea una entrada analógica A4 (pin 6). Configura el convertidor analógico digital (ADC) con de una sola medición con dentro de un ciclo for o while infinito, con un rango de 0 a Vref=1.5V, y que almacene el valor digitalizado en una variable. Con una fuente de voltaje externo, aplicarle voltaje a esta entrada y ver qué valor digitalizado se obtiene. Capturar las mediciones en la tabla 1. Repetir las mismas mediciones con el voltaje Vref=Vcc. ¡Tener cuidado en no aumentar el voltaje mas al de alimentación del Launchpad, ya que lo pueden dañar!. 4 F. Hugo Ramírez Leyva 2. Voltaje de la fuente (V) Microcontroladores Convertidor ADC 3. Figura 3. Control de encendido del foco Tabla 2. Caracterización del convertidor ADC Dato Medido del Dato del ADC Dato Medido del ADC Decimal teórico ADC Decimal Vref=1.5V Vref=1.5V Vref=Vcc Dato del ADC teórico Vref=Vcc 0.00 0.25 0.50 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 4. Armar el circuito de la figura 3 en un protoboard, verificar que cuando se le envía un 0 lógico al resistor R4 el relevador debe estar apagado, cuando se le pone en 1 lógico el relevador se enciende y con ello el foco. ¡Tener cuidado con la 5 F. Hugo Ramírez Leyva Microcontroladores Convertidor ADC corriente alterna, ya que les puede dar toques o si hace contacto con el Launchpad lo pueden dañar! 5. Una vez que funcione el paso 2 hacer un programa para el MSP430 para que encienda al foco durante 10 segundos y lo apague durante 10segundos. 6. Ya que se completen los pasos 1 al 3, hacer un programa en el MSP430 que cuando la temperatura actual sea mayor a 35ºC encienda al foco, cuando ésta sea mayor a 30 ºC apague al foco y lo vuelva a encender una vez que la temperatura sea mayor a 35 ºC. Hacer las conexiones y montar el sensor y el foco dentro de una caja para que se vea el efecto más rápido. Reporte El reporte se va a entregar en 1 semanas después de concluida la práctica. No se les olvide incluir, la introducción, el procedimiento, resultado, conclusiones y bibliografía en el formato especificado. Referencias. [URL1] Sensor LM35, http://www.agspecinfo.com/pdfs/L/LM335Z.PDF Fecha del último acceso 14 de noviembre de 2012. 6 F. Hugo Ramírez Leyva Microcontroladores Convertidor ADC 7