Está en la página 1de 23

MARZO JULIO 2010

UNIVERSIDAD POLITCNICA SALESIANA


SISTEMAS MICROPROCESADOS 1

INFORME PRCTICA #06 TEMA: Conversin anloga digital y digital anloga.

DAVID ESPIN ANDRS MOGRO

QUITO - ECUADOR

PRCTICA 05 OBJETIVO: Utilizar los conversores A/D y D/A del microcontrolador PIC 1. Conversin A/D con el microcontrolador pic 16f877a. Se adquiere la seal de un potencimetro entre 0 y 5 voltios y se observa en el LCD un valor entre 0 y 1024. Entradas: El puerto A que ingresa la seal del potencimetro. Datos que se guardan en el microcontrolador Procesos: Configuro el LCD en el puerto B Leo la seal del potencimetro. Transformo la seal y la envo al LCD Salidas: La salida del puerto B hacia el LCD. CDIGO. program AnalogoDigital dim voltaje as word dim valor as string[10] sub procedure init adcon1=$80 trisa=$FF lcd_config(portb,7,6,5,4,portb,0,1,2) lcd_cmd(lcd_cursor_off)

end sub main: init while true voltaje = adc_read(0) wordtostr(voltaje, valor) lcd_cmd(lcd_clear) lcd_out(1,1,valor) delay_ms(300) wend end.

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto A como entrada y el puerto B como salida

Realizo subrutina

Configuro el LCD

Leo valor de voltaje en Puerto A

Muestro la conversin el LCD

ESQUEMTICO.

FOTOS.

2. Conversin A/D con el microcontrolador pic 16f877A Se requiere un valor entre 0 y 5 voltios y se observa en el LCD el valor entre 0 y 5 voltios. Entradas: El puerto A que ingresa la seal del potencimetro. Datos que se guardan en el microcontrolador Procesos: Configuro el LCD en el puerto B Leo la seal del potencimetro. Muestro el voltaje en el LCD Salidas: La salida del puerto B hacia el LCD.

CDIGO. program analogdig1 dim voltaje as float dim valor as string[10] sub procedure init option_reg=$80 adcon1=$80 trisa=$FF lcd_config(portb,7,6,5,4,portb,0,1,2)

lcd_cmd(lcd_cursor_off) end sub main: init while true voltaje = adc_read(0) voltaje=(voltaje*5)/1024 floattostr(voltaje, valor) lcd_cmd(lcd_clear) lcd_out(1,1,valor) delay_ms(300) wend end.

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto A como entrada y el puerto B como salida

Realizo subrutina

Configuro el LCD

Leo valor de voltaje en Puerto A

Muestro el voltaje en el LCD

Retardo de 300 ms

ESQUEMTICO.

FOTOS.

3. Medicin de temperatura con LM35 El LM35 es un sensor analgico que devuelve la temperatura en forma de tensin esta tensin devuelta es proporcional a la temperatura, Su rango comprende desde -55 hasta 150 C y el valor devuelto es el equivalente a la temperatura dividida por 10. Entonces es su salida se obtiene valores como estos: 1000mv=100 C 240mv=24 C -300mv=-30 C En el Microcontrolador hay que implementar una regla de tres con el valor analgico ledo, de forma que podamos trabajar con el valor devuelto en formato de temperatura real, ya sea para hacer un termmetro con avisador o simplemente para mostrar la lectura en un LCD. Los ADC en el pic 18f452 devuelven valores con 10bits de resolucin, se entiende que este valor comprende de 0-5v por lo tanto su valor mximo es 1023y equivale a los 5voltios para el ejemplo que mostraremos ms abajo utilizaremos el sensor LM35 sin realimentacin negativa con el cual solo podemos obtener lectura de temperatura mayores a 0. Para esto utilizaremos esta expresin: Resolucin por paso=Voltaje/Resolucin ADC Donde 5v/1024(bits)=0.00488+1000=4.88 Ahora se multiplica por el valor de 10 devuelto para obtener un segundo decimal del resultado de la conversin ADC/Temperatura, con esto tenemos un valor que hemos redondeado a 48. Entradas: El puerto A que ingresa la seal del potencimetro. Datos que se guardan en el microcontrolador Procesos: Configuro el LCD en el puerto B Leo la seal del potencimetro. Configuro Vref y AN0 Leo la entrada analgica Realizamos la conversin ADC/temperatura

Muestro la conversin en el LCD Salidas: La salida del puerto B hacia el LCD.

CDIGO. program LM35 dim temp_res as word dim resultado as word dim outtxt as byte [5] main: adcon1=%10001110 trisa=%00000001 trisb=0 lcd_config(portb,7,6,5,4,portb,0,1,2) lcd_cmd(lcd_cursor_off) lcd_cmd(lcd_clear) lcd_out(1,1,"temperatura: ") while true temp_res = adc_read(0) resultado = temp_res*48

wordtostr(resultado, outtxt) lcd_chr(1,6,outtxt[0]) lcd_chr(1,7,outtxt[1]) lcd_chr(1,8,outtxt[2]) lcd_chr(1,9,".") lcd_chr(1,10,outtxt[3]) lcd_chr(1,11,outtxt[4]) wend


end.

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto A como entrada y el puerto B como salida. Configuro Vref y AN0.

Mostramos Temp en el LCD

Leo la entrada analgica

Realizamos la conversin ADC/temperatura

Muestro la conversin en el LCD

Retardo de 100 ms

ESQUEMTICO.

FOTOS.

4. Conversin digital anloga Entradas: Para este ejercicio no hay entradas Procesos: Configuro el puerto D como salida Realizo un lazo while para hacer un contador El puerto D ser igual al valor del contador Salidas: La salida del puerto D hacia el DAC 0808 y del DCA 0808 hacia el LM 741 para observar la conversin.

CDIGO.
program DAC sub procedure init trisd=0 end sub dim i as byte dim a as byte main: init while true a=0 i=0 for i=1 to 255

a=a+1 portd=a next i wend end.

ESQUEMTICO Y SIMULACIN.

FOTOS.

5. Conversin Anlogo digital de 12 bits MCP 3202 El conversor A/D 12 bits MCP320X soporta 100K muestras por segundo, consume 400mA en modo funcionamiento y 500 nA en modo espera, alimentado de 2.7V a 5.5 V y un rango de temperatura de -40C a 85C. Otras caractersticas son 1 LSB DNL y 1 LSB INL a 100k muestras/s, si prdida de cdigo y una interface de salida serie para SPI. Estos nuevos dispositivos estn disponibles de 1, 2,4, 8 canales y una gran variedad de encapsulados y nmeros de pines.

Entradas: Para este ejercicio no hay entradas Procesos: Declaro variables. Configuro puerto B como salida Configuro el LCD para el puerto B Configuro puerto C (portc.2) Leo el valor de la conversin

Salidas: La salida del puerto B hacia el LCD para visualizar la conversin.

CDIGO. program conversor12 dim i as byte dim j as byte dim k as word dim l as float dim txt1,txt2 as string[6] sub procedure ret1 delay_ms(1000) end sub sub procedure tx k=i <<8 k=k+j

k=k and %1111111111111000 k=k>>3 wordtostr(k,txt1) l=k floattostr(l,txt1) end sub main: TRISB=0 Spi_Init ' Standard configuration

Lcd_Config(PORTb,3,2,1,0,PORTB,5,6,4) Lcd_Cmd(Lcd_CURSOR_OFF) ' Turn off cursor

Lcd_Out(1, 1, " CONVERSOR ") Lcd_Out(2, 1, " TRISC = TRISC and $FB portc.2=1 while true portc.2=0 Spi_Write(%1011) i = Spi_Read(i) j = Spi_Read(j) ")

portc.2=1 tx ret1 Lcd_Out(2,7, txt1) Lcd_Out(2,11, " wend end. ")

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto B como salida

Defino variables

Configuro el LCD

Realizo lazo while para leer el puerto C

Muestro el voltaje en el LCD

ESQUEMTICO.

FOTOS.

CONCLUSIONES. Utilizamos los conversores A/D y D/A del microcontrolador PIC Con esta prctica se optimiz las conversiones tanto A/D y D/A. El ejercicio de la temperatura fue una aplicacin muy prctica de las conversiones

BIBLIOGRAFA MICROCONTROLADORES PIC. Diseo prctico de aplicaciones SEGUNDA PARTE: PIC 16F87X PIC 18FXXXX. Segunda edicin. Segundo Angulo, Susana Romero, Mc Graw Hill. Espaa. Hojas guas de la prctica. Proporcionadas por el Ing. Luis Oate Ayuda del software Mikrobasic.

También podría gustarte