Informe Practica 6 PIC

19

Click here to load reader

Transcript of Informe Practica 6 PIC

Page 1: Informe Practica 6 PIC

1

UNIVERSIDAD POLITECNICA SALESIANA

SISTEMAS MICROPROCESADOS I

INTEGRANTES

OSCAR AYALA

CHRISTIAN IBARRA

ANDRES VALDIVIESO

Page 2: Informe Practica 6 PIC

2

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

OBJETIVO: Aprender a utilizar correctamente los conversores D/A y A/D del

microcontrolador PIC.

DESARROLLO: Para la practica utilizamos la placa programadora “PICTrainer” de dsPIC y

el software Microbasic ds.

PROCEDIMIENTO

EJERCICIO 1

PROBLEMA:

Conversión A/D con el microcontrolador PIC16F877A

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

un valor entre 0 y 1024

Page 3: Informe Practica 6 PIC

3

ALGORITMO:

Entrada: Voltaje en el potenciómetro ente 0 y 5voltios

Proceso:

Configurar el ADCON1

Configurar el LCD

Habilitar el Puerto A como entrada

Salida: Visualizar los datos de 0 a 1024 en 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

voltaje = adc_read(0)

wordtostr(voltaje, valor)

lcd_cmd(lcd_clear)

lcd_out(1,1,valor)

delay_ms(300)

wend

end.

Page 4: Informe Practica 6 PIC

4

Diagrama De Flujos

Establecer variables

INICIO

ADCON=$80

Iniciar subrutina

Habilitar el puerto A como entrada

Configurar LCD

Observar el valor en el LCD

Utilizar la sentencia While

Leer el voltaje a la entrada

End.

Page 5: Informe Practica 6 PIC

5

Esquemático

Grafico Anexo

Page 6: Informe Practica 6 PIC

6

Ejercicio 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: Voltaje entre 0 y 5 voltios.

Salidas: Display LCD

Procesos: Defino variables Creo subproceso Habilito ADCON1 Configuro Puerto B como entrada Configuro LCD Leo mi voltaje de entrada Despliego en el LCD Retardo de 300 ms

Código:

program ADC2 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)

Page 7: Informe Practica 6 PIC

7

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

Diagrama De Flujos

Definir variables

INICIO

Configurar el option_reg

Subrutina

Configurar el LCD

Observar el valor en el LCD

sentencia While

Leer el voltaje de entrada

End.

Puerto A como entrada

Page 8: Informe Practica 6 PIC

8

Esquemático

Grafico Anexo

Page 9: Informe Practica 6 PIC

9

Ejercicio 3 Medición de temperatura con LM35. Los ADC en el pic 18f452 devuelven valores con 10 bits de resolución , se entiende que este valor comprende de 0 a 5 V, por lo tanto su valor máximo es 1023 y equivale a los 5 v. Para el ejemplo que mostraremos más abajo utilizaremos el sensor LM35 sin realimentación negativa, con lo cual solo podremos obtener lecturas de temperaturas mayores de 0º.

Algoritmo

Entrada: La señal del LM35

Proceso:

Configurar Vref y AN0

Habilitar el puerto a0 como entrada

Habilitar el puerto b0 como salida

Configurar el LCD en el puerto B

Leer entrada analógica

Realizar la conversión

Salida: Visualizo en el LCD la “temperatura”

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) Lcd_Chr(1,11,OutTxt[0]) Lcd_Chr(1,12,OutTxt[1])

Page 10: Informe Practica 6 PIC

10

Lcd_Chr(1,13,OutTxt[2]) Lcd_Chr(1,14,".") Lcd_Chr(1,15,OutTxt[3]) Lcd_Chr(1,16,OutTxt[4]) delay_ms(1000) wend end.

Diagrama De Flujos

Definir variables

INICIO

Habilitar A0 como entrada

Configurar Vref

Habilitar B0 como salida

Configurar LCD

Visualizar en LCD

Conversión ADC/ Temperatura

Convertimos variable resultado a texto

Leer la entrada analógica

End.

Page 11: Informe Practica 6 PIC

11

Esquemático

Grafico Anexo

Page 12: Informe Practica 6 PIC

12

Ejercicio 4

Problema

Conversión Digital análoga con el DAC0808

Algoritmo

Proceso:

Definir variables

Crear una subrutina

Utilizar sentencia while-wend

Realizar un contador de 1 a 255

El DAC realiza la conversión

Salida: En la salida de C.I 741 obtenemos una señal análoga

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 13: Informe Practica 6 PIC

13

Diagrama De Flujos

INICIO

Habilitar el puerto D como salida

Subrutina

Definir variables

Retardo

Realizo el conteo en el puerto d

End.

Usando la sentencia For realizamos un contador de 1 a 255

Page 14: Informe Practica 6 PIC

14

Esquemático

Grafico Anexo

Page 15: Informe Practica 6 PIC

15

Ejercicio 5 Conversor análogo digital de 12 bits Algoritmo Entradas: Señal Análoga de 0 a 5 voltios

Salidas: LCD valores de 0 - 4096

Proceso: Definir variables Crear una subrutina Habilitar el puerto B como salida Configurar e Inicializo el LCD Habilitar el Puerto C pin 2 como Entrada Leer el valor

Código:

program AD12bits 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)

Page 16: Informe Practica 6 PIC

16

end sub main: trisb=0 spi_init 'standar configuration lcd_config(portb,3,2,1,0,portb,5,6,4) lcd_cmd(lcd_cursor_off) 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 17: Informe Practica 6 PIC

17

Diagrama De Flujos

Definir variables

INICIO

Retardo

Subrutina

Habilitar puerto B como salida

Configurar LCD

Observar el valor en el LCD

Leer los valores de entrada

End.

Page 18: Informe Practica 6 PIC

18

Esquemático

Grafico Anexo

Page 19: Informe Practica 6 PIC

19

Conclusiones

Los ejercicios realizados en el laboratorio fueron de mucha ayuda porque nos

permitieron tener conocimientos sobre el manejo de los puertos del PIC y sus

conversores internos.

El conversor A/D es muy útil debido a que con el podemos adquirir señales

provenientes de sensores u otros dispositivos con el fin de poder manipularlos

mediante un PC.

Podemos concluir que la primera práctica de laboratorio fue realizada con mucho

éxito aprendimos un poco más sobre el mundo de la familia de los PICs y de su

programación con el propósito de adquirir datos externos.

Bibliografía

Hojas de prácticas para Laboratorio Sistemas Microprocesados I.

http://ww1.microchip.com/downloads/en/devicedoc/3202.pdf

Microcontroladores PIC - Angulo Usategui Jose Maria