reporte sensor temperatura.docx

Upload: erick-robles

Post on 10-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Reporte Sensor Temperatura.docx

    1/13

    REPORTE SENSOR DE

    TEMPERATURA DIGITALINSTRUMENTACIN VIRTUAL

    PROFESOR:

    CESAR ALBERTO GOMEZ GUZMAN

    ALUMNOS:

    ERICK YSMAEL ROBLES PACHECO

    SAUL IBARRA ROSALES

    CHRISTIAN VALENTIN HERRERA ALCARAZ

    YAIR ESA LPEZ MEDINA

    GRUPO:

    IMT-72

    FECHA: 14/SEP./2012

  • 7/22/2019 Reporte Sensor Temperatura.docx

    2/13

    INTRODUCCIN

    Este reporte describe como lograr convertir una seal analgica de un sensor detemperatura (LM35) a una seal digital con el uso del ADC (Convertidor Analgico Digital)

    de un pic 16F887 mediante el lenguaje de programacin en C; Acoplando la seal

    convertida para que la muestre en un display LCD de una forma precisa y exacta; es decir,

    al final tendremos un termmetro digital el cual nos mostrara la temperatura ambiente de

    cualquier lugar con exactitud y precisin.

  • 7/22/2019 Reporte Sensor Temperatura.docx

    3/13

    DESARROLLO

    Materiales

    Para la construccin del circuito es necesario de los siguientes materiales:

    PIC16F887

    Display LCD de 2X16 (JHD162A SERIES)

    Potencimetro 10k

    Sensor LM35

    Resistencias (3 10k, 2 2.2k)

    Capacitor 25v 100uf

    Cable UTP

    Descripcin y funcionamiento del 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. Observando la figura 1.1 podemos ver la configuracin de los

    pines.

    La salida es lineal y equivale a 10mV/C por lo tanto:

    +1500mV = 150C

    +250mV = 25C

    -550mV = -55CG

    Figura 1.1 Configuracin Pines LM35

  • 7/22/2019 Reporte Sensor Temperatura.docx

    4/13

    Para hacernos un termmetro lo nico que necesitamos es un voltmetro bien calibrado y

    en la escala correcta para que nos muestre el voltaje equivalente a temperatura.

    El LM35 funciona en el rango de alimentacin comprendido entre 4 y 30 voltios. Podemos

    conectarlo a un conversor Analgico/Digital y tratar la medida digitalmente, almacenarla o

    procesarla con un microcontrolador o similar. Que es exactamente de la manera en quese har en este proyecto.

    Distribucin de pines y funcionamiento del Display LCD 2X16

    Veamos que funcin cumple cada uno de los pines del display:

    Pines 1, 2 y 3: Estos pines estn dedicados a la alimentacin y contraste del LCD.Efectivamente, el pin 1 (VSS) es el que se debe conectar al negativo (masa) de la

    alimentacin, y el pin 2 (Vdd/Vcc) es el que va unido al positivo (5 voltios). El pin 3 permite

    el ajuste del contraste del panel. Ver figura 1.2.

    Pines 4, 5, 6: Estos pines son de alguna manera los que controlan el funcionamiento del

    display. El pin 4, tambin llamado RS (Registration Select) es el que le indica al controlador

    interno del LCD que el valor presente en el bus de datos es un comando (cuando RS=0) o

    bien un carcter para representar (cuando RS=1).

    Figura 1.2 Pines alimentacin LCD

  • 7/22/2019 Reporte Sensor Temperatura.docx

    5/13

    El pin 5 (R/W por Read/Write o Leer/Escribir) permite decidir si queremos envi ar

    datos al display (R/W=0) o bien nos interesa leer lo que el display tiene en su memoria o

    conocer su estado (R/W=1). Por ultimo, el pin 6(E por Enable o habilitado) es el que

    selecciona el display a utilizar. Es decir, podemos tener varios LCD conectados a un mismo

    bus de datos (pines 7-14) de control, y mediante E seleccionar cual es el que debe usarse

    en cada momento.

    Pines 7, 8, 9, 10, 11, 12, 13, 14: Estos ocho pines son el bus de datos del controlador de

    la pantalla. Llamados DB0-DB7 son los encargados de recibir (o enviar) los comandos o

    datos desde o hacia el display. DB0 es el bit de menor peso y DB7 es el ms significativo.

    Funcionamiento 8 y 4 bits:

    Estos displays soportan dos modos de trabajo: en uno de ellos reciben en DB0-DB7 los 8

    bits del dato, y en el otro, llamado modo de 4 bits reciben los datos en dos mitades

    (nibbles) por los pines DB4-DB7, en dos pasos sucesivos. Si bien esto puede complicar

    ligeramente la programacin, supone un ahorro de 4 pines en el bus de datos, y esto en

    microcontroladores con pocos pines de I/O es muy til.

    Figura 1.3 Esquema de posicin y funcin de pines LCD

  • 7/22/2019 Reporte Sensor Temperatura.docx

    6/13

    Funcionamiento y distribucin de pines a usar en PIC 16F887

    El pic tiene 40 pines de los cuales la mayora son de multipropsito como podemos

    observar en la figura 1.4.

    Los pines a usar en este proyecto sern los siguientes:

    Pin 1 (MCLR): Este pin es usado para poner un botn para hacer un reset al pic.

    Pin 2 (AN0): Este pin es el que estar configurado para ser una entrada analgica, es decir

    aqu conectaremos la seal del sensor LM35.

    Pin 3 (-VREF) y 4 (+VREF): Estos pines sern utilizados para introducir el voltaje de

    referencia para la conversin de la seal analoga a digital.

    Pin 11 (Vdd) y 12 (Vss): Estos pines son la alimentacin del pic la cual debe ser de 5v y no

    mayor ya que si no se podra daar el pic.

    Figura 1.4 Distribucin de pines y funcin PIC 16F887

  • 7/22/2019 Reporte Sensor Temperatura.docx

    7/13

    Pin 33 (RB0), 34 (RB1) y 35 (RB2): Estos pines sern utilizados para la comunicacin del pic

    con el LCD en los pines de control del mismo.

    Pin 37-40 (RB4-RB7): Estos pines sern los 4 bits enviados al LCD para su interpretacin y

    prximo muestreo en pantalla.

    Instrucciones clave para la conversin de la seal analgica a digital en C

    Configuracin de puertos

    Una de las instrucciones principales es la configuracin de los puertos, para as decirle al

    pic cuales trabajaran como puertos de entrada y cuales como salida.

    Con la siguiente instruccin se configuran los pines que necesitamos como entrada los

    cuales son RA0, RA2 y RA3:

    SET_TRIS_A (0x0D); // RA0, RA2 y RA3 como entradas y las sobrantes como salidas.

    Donde:

    SET_TRIS_A: Es la instruccin para la configuracin del puerto A.

    (0x0D): Es el nmero hexadecimal que indica que pines sern activados como entradas.

    Configuracin del ADC (Convertidor Analgico Digital)

    Antes de comenzar con la conversin se tiene que configurar el ADC para su correcto

    funcionamiento para esto se utilizan las siguientes instrucciones:

    SETUP_ADC_PORTS (sAN0 | VREF_VREF); // Pin AN0 como entrada analgica y pin 3 y 4

    como entrada de referencia.

    Donde:

    SETUP_ADC_PORTS: Es la instruccin para la configuracin de los pines que sern usados

    como analgicos y los pines de voltaje de referencia.

    (sAN0 | VREF_VREF): Son los pines que sern utilizados para la conversin, SAN0 es el pin

    de la entrada analgica y VREF_VREF son los pines de referencia.

  • 7/22/2019 Reporte Sensor Temperatura.docx

    8/13

    Otra instruccin importante es el reloj con el que trabajara el ADC para su conversin y

    pertenece a la siguiente instruccin:

    SETUP_ADC (ADC_CLOCK_DIV_8); // se inicializa el ADC y se selecciona el reloj a utilizar

    Fosc/8 Fosc=4Mhz.

    Se define los bits a utilizar para la conversin en el ADC, para tener un mejor resultado se

    debe elegir 10 bits:

    #device adc=10 // esta instruccin configura el adc a 10 bits, poner al principio de todo el

    programa.

    Calibracin de la seal convertida por el ADC

    Si tenemos que el sensor LM35 su temperatura mxima a censar es de 150 grados y porcada grado te entrega 10mv entonces obtenemos un voltaje mximo entregado por el

    sensor de:

    10mv x 150 grados = 1.5V

    Para obtener una gran precisin en la conversin tenemos que poner el mismo voltaje

    como referencia; es decir, tenemos que poner un voltaje de referencia entre los pines 4 y

    5 de 1.5V para as ese valor dividirlo entre los bits del ADC entonces tenemos que:

    1.5V/1024= 0.001464

    Entonces tendremos un salto de 0.001464 por cada bit que se tomara en cuenta en la

    conversin. Hacindola muy precisa.

    Para lograr poner como referencia 1.5v en los pines 4 y 5 se tuvo que implementar un

    divisor de tensin resistivo; el cual, como su nombre lo dice divide la tensin de entrada

    segn el arreglo de resistencias con las que cuente. El circuito es el siguiente:

    Figura 1.5 Circuito divisor de tensin resistivo

  • 7/22/2019 Reporte Sensor Temperatura.docx

    9/13

    Y su formula para calcular el voltaje de salida es el siguiente:

    Con la ayuda de esta formula podemos dividir el voltaje a 1.5v y el Voltaje de salidaconectarlo al pin 5 y el pin 4 a GND.

    Conversin del valor obtenido por el ADC a grados

    Una ves que ya tenemos con los bits que se va a trabajar para la conversin en el ADC y

    con el voltaje de referencia de 1.5v en los pines 4 y 5, se emplea la siguiente formula para

    obtener el valor en grados y as ya enviarlo al LCD para mostrarlo en pantalla.

    ( )

    Donde:

    Temperatura: Valor en grados centgrados.

    1.5: Tensin de referencia en pines 4 y 5.

    1024: Valor en decimal de los 10 bits del conversor

    ADC: Valor Ledo por el ADC del pin 2 (AN0).

    0.01: Divisin para convertir de mV a Grados.

    Ya calculado el valor de la temperatura en grados se da por terminado la etapa de

    conversin de la seal analgica entregada por el sensor LM35 a la seal digital entregada

    por el pic para su procesamiento y prximo muestreo.

  • 7/22/2019 Reporte Sensor Temperatura.docx

    10/13

    Circuito sensor de temperatura digital

    Figura 1.6 Sensor de temperatura digital

  • 7/22/2019 Reporte Sensor Temperatura.docx

    11/13

    Cdigo en C para la programacin del PIC16F887

    #include

    #device adc=10

    #use delay(clock=8000000,RESTART_WDT)

    #include

    void init_io()

    {

    // Configurar Puerto A, Entrada y Salidas

    SET_TRIS_A(0x0D); // bit 0 = output, 1 = input

    }

    void init_adc()

    {

    // Configurar RA0 como entrada analogica, usar pines de VREF

    // Como tensin de referencia

    SETUP_ADC_PORTS(sAN0 | VREF_VREF);

    SETUP_ADC(ADC_CLOCK_DIV_8);

    }

    float leer_temp()

    {

    int16 adc;

    float temp;

    if (adc_conversion.new_flag == 1)

    {

    adc=adc_conversion.value;

    adc_conversion.new_flag=0;

    }

    temp=(((1.5/1024.0)*adc)/0.01); // conversin del valor del ADC a grados

    return temp;

  • 7/22/2019 Reporte Sensor Temperatura.docx

    12/13

    }

    void main()

    {

    // Inicializar variables globales

    float temp

    adc_conversion.value = 0;

    adc_conversion.new_flag = 0;

    init_io();

    init_adc();

    //Configuraciones del pic

    ENABLE_INTERRUPTS(GLOBAL); // Habilitar todo los interruptores en general

    ENABLE_INTERRUPTS(INT_RTCC); // Habilitar interruptor 0

    lcd_init();

    setup_oscillator(OSC_8MHZ|OSC_INTRC);

    setup_spi(FALSE);

    setup_timer_1(T1_DISABLED);

    setup_timer_2(T2_DISABLED,0,1);

    //Inicio de cdigo del programa

    //Instrucciones a mostrar en pantalla LCD

    lcd_gotoxy(1,1);

    printf(lcd_putc,"MECATRONICA IMT72");

    delay_ms(700);

    lcd_gotoxy(1,1);

    printf(lcd_putc," SENSOR \n LA TURBIA ");

    delay_ms(700);lcd_gotoxy(1,1);

    printf(lcd_putc,"INICIANDO... ");

    delay_ms(700);

    printf(lcd_putc,"\f");

  • 7/22/2019 Reporte Sensor Temperatura.docx

    13/13

    while (1)

    {

    temp=leer_temp();

    lcd_gotoxy(1,1);

    printf(lcd_putc,"TEMPERATURA ACT.\n %2.1f C ",temp);

    delay_ms(100);

    printf(lcd_putc,"\f");

    }

    }

    Imagen del circuito real funcionando

    Figura 1.7 Circuito elaborado en protoboard