Practica6

20
INFORME #6 ERICK PEÑAHERRERA JOSE BUCHELI XAVIER MUÑOZ SEPTIEMBRE - FEBRERO 2011

Transcript of Practica6

Page 1: Practica6

INFORME #6

ERICK PEÑAHERRERA JOSE BUCHELI XAVIER MUÑOZ

SEPTIEMBRE - FEBRERO 2011

Page 2: Practica6

DATASHEETS

PIC16F877A

LCD 16x2

Page 3: Practica6

SENSOR LM35

DAC 0808

AMPLIFICADOR OPERACIONAL 741

Page 4: Practica6

DESARROLLO PRÁCTICO

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

1. EJERCICIO 1

PROBLEMA:

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.

ALGORITMO:

Entradas: El puerto A que ingresa la señal del potenciómetro. 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) end sub main: init while true

Page 5: Practica6

voltaje = adc_read(0) wordtostr(voltaje, valor) lcd_cmd(lcd_clear) lcd_out(1,1,valor) delay_ms(300) wend end.

DIAGRAMA DE FLUJO

INICIO

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

Realizo subrutina

Configuro el LCD

Leo valor de voltaje en el

Puerto A

Muestro la conversión el

LCD

Page 6: Practica6

ESQUEMÁTICO

FOTOS

Page 7: Practica6

2. EJERCICIO 2

PROBLEMA:

S 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.

ALGORITMO:

Entradas: El puerto A que ingresa la señal del potenciómetro. 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) 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: Practica6

DIAGRAMA DE FLUJO

INICIO

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

Realizo subrutina

Configuro el LCD

Leo valor de voltaje en el

Puerto A

Muestro el voltaje en el

LCD

Retardo de 300 ms

Page 9: Practica6

ESQUEMÁTICO

FOTOS

Page 10: Practica6

3. EJERCICIO 3

PROBLEMA:

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.

ALGORITMO:

Entradas: El puerto A que ingresa la señal del potenciómetro. 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

Page 11: Practica6

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

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 12: Practica6

DIAGRAMA DE FLUJO

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 Analógica

Leo valor de voltaje en el

Puerto A

Realizamos la conversión

ADC/temperatura

Muestro la conversión en

el LCD

Retardo de 100 ms

Page 13: Practica6

ESQUEMÁTICO

FOTOS

Page 14: Practica6

4. EJERCICIO 4

PROBLEMA:

Conversión digital análoga

ALGORITMO:

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

a=a+1

portd=a

next i

wend

end.

Page 15: Practica6

ESQUEMÁTICO

FOTOS

Page 16: Practica6

5. EJERCICIO 5

PROBLEMA:

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: 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

Page 17: Practica6

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.

Page 18: Practica6

DIAGRAMA DE FLUJO

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

Page 19: Practica6

ESQUEMÁTICO

FOTOS

Nota: Esta parte no tenemos fotos a causa de que la práctica se hizo

solamente en simulador proteus 7.7 por la razón de que no encontramos el

circuito integrado MCP 3202

CONCLUSIONES

La operación de lectura o de adquisición de datos no representa ningún tipo de problema; solamente se deberá cambiar el orden de los operando en la instrucción respecto a la de escritura, el ejercicio de la temperatura fue una aplicación muy práctica de las conversiones.

Que la elaboración nos sirve para comprender un poco más la teoría de los

microcontroladores y su aplicación; de ahí la importancia del mismo, pues a través de él se puede apreciar lo interesante de la construcción de los microcontroladores y utilizamos los conversores A/D y D/A del microcontrolador PIC

Como los puertos están asignados a un espacio separado de la memoria, se tiene

disponible la capacidad total de direccionamiento del microprocesador para circuitos de

memoria.

Page 20: Practica6

BIBLIOGRAFIA

http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf. datasheet. microcontrolador 16f877A

fecha de revisión: 07/12/2010.

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

http://www.national.com/ds/DA/DAC0808.pdf, Microchip, datasheet conversor DAC0808,

fecha de revisión: 07/12/2010.

http://www.national.com/ds/LM/LM35.pdf, datasheet, Sensor de temperatura LM35, fecha de

revisión: 07/12/2010.