23
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS 1 INFORME PRÁCTICA #06 TEMA: Conversión análoga digital y digital análoga. DAVID ESPIN ANDRÉS MOGRO MARZO JULIO 2010 QUITO - ECUADOR

Conversores DAC y ADC Con PIC16F877A

Embed Size (px)

Citation preview

Page 1: Conversores DAC y ADC Con PIC16F877A

UNIVERSIDAD POLITÉCNICA

SALESIANA

SISTEMAS MICROPROCESADOS 1

INFORME PRÁCTICA #06

TEMA: Conversión análoga digital y digital análoga.

DAVID ESPIN

ANDRÉS MOGRO

MARZO – JULIO 2010

QUITO - ECUADOR

Page 2: Conversores DAC y ADC Con PIC16F877A

PRÁCTICA 05

OBJETIVO: Utilizar los conversores A/D y D/A del microcontrolador PIC

1. Conversión A/D con el microcontrolador pic 16f877a. Se adquiere

la señal de un potenciómetro entre 0 y 5 voltios y se observa en el

LCD un valor entre 0 y 1024.

Entradas:

• El puerto A que ingresa la señal del potenciómetro.

• Datos que se guardan en el microcontrolador

Procesos:

• Configuro el LCD en el puerto B

• Leo la señal del potenciómetro.

• Transformo la señal y la envío al LCD

Salidas:

La salida del puerto B hacia el LCD.

CÓDIGO.

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)

Page 3: Conversores DAC y ADC Con PIC16F877A

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.

Page 4: Conversores DAC y ADC Con PIC16F877A

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto A

como entrada y el

puerto B como salida

Configuro el LCD

Leo valor de voltaje

en Puerto A

Muestro la conversión

el LCD

Realizo subrutina

Page 5: Conversores DAC y ADC Con PIC16F877A

ESQUEMÁTICO.

FOTOS.

Page 6: Conversores DAC y ADC Con PIC16F877A

2. Conversión 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 señal del potenciómetro.

• Datos que se guardan en el microcontrolador

Procesos:

• Configuro el LCD en el puerto B

• Leo la señal del potenciómetro.

• Muestro el voltaje en el LCD

Salidas:

La salida del puerto B hacia el LCD.

CÓDIGO.

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)

Page 7: Conversores DAC y ADC Con PIC16F877A

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.

Page 8: Conversores DAC y ADC Con PIC16F877A

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto A

como entrada y el

puerto B como salida

Configuro el LCD

Leo valor de voltaje

en Puerto A

Muestro el voltaje en el

LCD

Realizo subrutina

Retardo de 300 ms

Page 9: Conversores DAC y ADC Con PIC16F877A

ESQUEMÁTICO.

FOTOS.

Page 10: Conversores DAC y ADC Con PIC16F877A

3. Medición de temperatura con LM35

El LM35 es un sensor analógico que devuelve la temperatura en forma de

tensión esta tensión 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

analógico leído, de forma que podamos trabajar con el valor devuelto en

formato de temperatura real, ya sea para hacer un termómetro con

avisador o simplemente para mostrar la lectura en un LCD.

Los ADC en el pic 18f452 devuelven valores con 10bits de resolución, se

entiende que este valor comprende de 0-5v por lo tanto su valor máximo

es 1023y equivale a los 5voltios para el ejemplo que mostraremos más

abajo utilizaremos el sensor LM35 sin realimentación negativa con el cual

solo podemos obtener lectura de temperatura mayores a 0º.

Para esto utilizaremos esta expresión:

Resolución por paso=Voltaje/Resolución 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 conversión ADC/Temperatura, con esto

tenemos un valor que hemos redondeado a 48.

Entradas:

• El puerto A que ingresa la señal del potenciómetro.

• Datos que se guardan en el microcontrolador

Procesos:

• Configuro el LCD en el puerto B

• Leo la señal del potenciómetro.

• Configuro Vref y AN0

• Leo la entrada analógica

• Realizamos la conversión ADC/temperatura

Page 11: Conversores DAC y ADC Con PIC16F877A

• Muestro la conversión en el LCD

Salidas:

La salida del puerto B hacia el LCD.

CÓDIGO.

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

Page 12: Conversores DAC y ADC Con PIC16F877A

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.

Page 13: Conversores DAC y ADC Con PIC16F877A

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto A

como entrada y el

puerto B como salida.

Configuro Vref y AN0.

Leo la entrada

analógica

Realizamos la conversión ADC/temperatura

Muestro la conversión

en el LCD

Mostramos “Temp

en el LCD”

Retardo de 100 ms

Page 14: Conversores DAC y ADC Con PIC16F877A

ESQUEMÁTICO.

FOTOS.

Page 15: Conversores DAC y ADC Con PIC16F877A

4. Conversión digital análoga

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 conversión.

CÓDIGO.

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

Page 16: Conversores DAC y ADC Con PIC16F877A

a=a+1

portd=a

next i

wend

end.

ESQUEMÁTICO Y SIMULACIÓN.

Page 17: Conversores DAC y ADC Con PIC16F877A

FOTOS.

5. Conversión Análogo 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 características son ± 1 LSB DNL y ±1 LSB INL a 100k muestras/s, si

pérdida de código y una interface de salida serie para SPI. Estos nuevos

dispositivos están disponibles de 1, 2,4, 8 canales y una gran variedad de

encapsulados y números de pines.

Page 18: Conversores DAC y ADC Con PIC16F877A

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 conversión

Salidas:

La salida del puerto B hacia el LCD para visualizar la conversión.

CÓDIGO.

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

Page 19: Conversores DAC y ADC Con PIC16F877A

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)

Page 20: Conversores DAC y ADC Con PIC16F877A

portc.2=1

tx

ret1

Lcd_Out(2,7, txt1)

Lcd_Out(2,11, " ")

wend

end.

Page 21: Conversores DAC y ADC Con PIC16F877A

DIAGRAMA DE FLUJOS.

INICIO

Configuro el puerto B

como salida

Configuro el LCD

Realizo lazo while

para leer el puerto C

Muestro el voltaje en el

LCD

Defino variables

Page 22: Conversores DAC y ADC Con PIC16F877A

ESQUEMÁTICO.

FOTOS.

Page 23: Conversores DAC y ADC Con PIC16F877A

CONCLUSIONES.

• Utilizamos los conversores A/D y D/A del microcontrolador PIC

• Con esta práctica se optimizó las conversiones tanto A/D y D/A.

• El ejercicio de la temperatura fue una aplicación muy práctica de las

conversiones

BIBLIOGRAFÍA

• MICROCONTROLADORES PIC. Diseño práctico de aplicaciones

SEGUNDA PARTE: PIC 16F87X PIC 18FXXXX. Segunda edición.

Segundo Angulo, Susana Romero, Mc Graw Hill. España.

• Hojas guías de la práctica. Proporcionadas por el Ing. Luis Oñate

• Ayuda del software Mikrobasic.