Sei sulla pagina 1di 21

CARLOS OCAMPO

2010 UNIVERSIDAD
POLITECNICA
FERNANDO ITAS SALESIANA
2010-05-18 PRACTICA #6

SISTEMAS MICROPROCESADOS I
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

TEMA CONVERSION ANALOGA DIGITAL Y DIGITAL ANALOGA

OBJETIVO
• UTILIZAR LOS CONVERSORES A/D Y D/A DEL MICROCONTROLADOR
PIC

Ejercicio Nº 1:

Conversor A/D con el Microcontrolador PIC 16F877


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.

A LGO R IT M O

Entradas:

• Señal análoga

Salidas:

• Escribir en el LCD
• Señales de datos

Proceso:

• Dimensiono la variable voltaje como palabra.


• Dimensiono la variable valor como String con un array de diez elementos.
• Inicializó un sub procedimiento.
• Configuro entrada análoga y voltaje de referencia.
• Configuro el puerto A como entrada
• Configuro los registros internos del LCD
• Apago el cursor
• Termino el sub proceso
• Guardo en la variable voltaje los datos de entrada
• Borro el lcd
• Cambio la variable voltaje a string
• Presento el resultado en el LCD
• Retardo de 300ms
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

DIGRAMA DE FLUJO

CÓDIGO

program Voltaje
DIM voltaje as word
dim valor as string [10]
sub procedure init
Siste m a s Microproc e sa d osI
29
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)
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.

SIMULACION

Ejercicio Nº 2

Conversión A/D con el Microcontrolador PIC 16F877. Se adquiere un


valor entre 0 y 5
voltios y se observa, en el LCD el valor entre 0 y 5 voltios

ALGORITMO

Entradas:
• Señal análoga
Salidas:
• Escribir en el LCD
• Señales de datos
Proceso:
• Dimensiono la variable voltaje como float.
• Dimensiono la variable valor como String con un array de diez elementos.
• Inicializó un sub procedimiento.
• Configuro el option_reg
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

• Configuro entrada análoga y voltaje de referencia.


• Configuro el puerto A como entrada
• Configuro los registros internos del LCD
• Apago el cursor
• Termino el sub proceso
• Guardo en la variable voltaje los datos de entrada
• Realizo una conversión para obtener el voltaje en voltios
• Cambio la variable voltaje a string
• Presento el resultado en el LCD
• Retardo de 300ms

DIAGRAMA DE FLUJO

CÓDIGO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

program Conversor
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)
Siste m a s Microproc e sa d osI
32
voltaje=(voltaje*5)/1024
FLOATTOSTR(voltaje,valor)
lcd_cmd(lcd_clear)
LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.

SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Ejercicio Nº 3:
Medición de temperatura con LM35
ALGORITMO
Entradas:
• Señal análoga del lm35
Salidas:
• Escribir en el LCD
• Señales de datos
Proceso:
• Dimensiono la variable temp_res y resultado como palabra.
• Dimensiono la variable outtxt como byte de 5.
• Configuro entrada análoga y voltaje de referencia.
• Configuro el puerto A como entradas
• Configuro el puerto b como salidas
• Configuro los registros internos del LCD
• Apago el cursor
• Limpiamos el lcd
• Mostramos “temp” en el lcd
• Guardo en la variable temp_res los datos de entrada analogica
• Guardo en una variable resultado la conversión ADC a temperatura
• Cambio la variable resultado a string
• Presento el resultado en el LCD
• Retardo de 1000ms

CÓDIGO

program temperatura
dim temp_res as word
Resultado as word
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,"Temperat:")
WHILE TRUE
temp_res=Adc_Read(0)
Resultado=temp_res*48
wordtostr(Resultado,OutTxt)
Siste m a s Microproc e sa d osI
35
Lcd_Chr(1,11,OutTxt[0])
Lcd_Chr(1,12,OutTxt[1])
Lcd_Chr(1,13,OutTxt[2])
Lcd_Chr(1,14,".")
Lcd_Chr(1,15,OutTxt[3])
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Lcd_Chr(1,16,OutTxt[4])
delay_ms(1000)
wend
end

DIAGRAMA DE FLUJO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

SIMULACION

Ejercicio Nº 4:

Conversión Digital Análoga

ALGORITMO

Entradas:
• Señal de entrada

Salidas:
• Señal Triangula (Osciloscopio)

Proceso:
• Inicio sub procedimiento init
• Puerto D como salidas
• Dimensiono la variable i, a como byte
• Lazo
• Condición for 1<j<255 ,
• Sumo uno a la variable
• Escribo el valor de la Variable en el Puerto D
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

CODIGO

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.

DIAGRAMA DE FLUJO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Ejercicio Nº 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.

ALGORITMO

Entradas:

• no hay entradas

Salidas:

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

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

CÓDIGO.

program conversor_12

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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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.
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

DIAGRAMA DE FLUJO

SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

CONCLUSIONES

Esta práctica nos permite utilizar el conversor A/D Y D/A del


microcontrolador facilitando la conversión.

Se debe tener cuidado con el hadware ya que si se conecta


mal no funciona en el caso del conversor de 12 bits no se
debe olvidar de conectar el reset del microcontrolador.

BIBLIOGRAFÍA

• MICROCONTROLADORES PIC. Diseño práctico de


aplicaciones
SEGUNDA PARTE: PIC 16F87X PIC 18FXXXX. Segunda
edición.
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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.
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Potrebbero piacerti anche