Tutorial — Práctica 7: Convertidor A/D
Aprende programando: sigue cada paso, escribe tu propio codigo y valida con las preguntas y el examen del laboratorio. Adapta pines y rutinas a tu placa cuando haga falta.
Lo que vas a construir
Leer un potenciometro en AN0 con el ADC y mostrar el valor en LCD o LEDs.
-
1 Configura ADCON1, ADCON2 y ADCON0
ADCON1: RA0 analógico (AN0), resto digital (`0x0E`). ADCON2: `ADCS = 101` (16 Tosc @ 20 MHz), resultado justificado a la derecha (`ADFM = 1`). ADCON0: canal AN0, `ADON = 1`.MOVLW 0x0E MOVWF ADCON1 MOVLW B'10100010' MOVWF ADCON2 MOVLW B'00000001' MOVWF ADCON0Consejo: Teoría ADC: /adc/
-
2 Rutina de lectura GO/DONE
Pon GO = 1 para iniciar conversión. Espera GO = 0 (polling) o usa interrupción ADIF. Lee ADRESL y ADRESH → valor 10 bits (0–1023).leer_adc: BSF ADCON0, GO espera: BTFSC ADCON0, GO GOTO espera MOVF ADRESL, W MOVWF adc_l MOVF ADRESH, W MOVWF adc_h RETURN -
3 Escala a voltaje o porcentaje
Con Vref = 5 V: `V = lectura × 5 / 1024`. Puedes mostrar mV enteros o mapear a PWM. Implementa división por software o tabla si no cabe en 8 bits. -
4 Muestra el valor en LCD
Reutiliza rutinas LCD 4 bit (Práctica 2). Convierte el número a ASCII dígito a dígito (`÷ 1000`, `% 10`, etc.) y escribe en la segunda línea. Actualiza en cada vuelta del bucle principal. -
5 Calibra con el potenciómetro
Gira el potenciómetro de 0 a Vcc y verifica 0–1023 (o 0.00–5.00 V). Si la lectura oscila, promedia 4–8 muestras. Captura pantalla Proteus para el informe.
Antes de programar — pre-laboratorio
Pre-laboratorio — investigación de referencia
Investigación para la Práctica 7 (Convertidor A/D, UNEXPO). Relaciona con el Tema 9 del curso.
P 1 Registros ADCON0, ADCON1 y ADCON2
El ADC de 10 bits del PIC18F4550 se configura con tres registros:
| Registro | Función principal | | --- | --- | | **ADCON0** | Canal (`CHS`), encendido ADC (`ADON`), inicio conversión (`GO/DONE`) | | **ADCON1** | Qué pines son analógicos vs digitales (`PCFG`) | | **ADCON2** | Reloj de conversión (`ADCS`), justificación resultado (`ADFM`), tiempo de adquisición |
Flujo típico: configurar una vez ADCON1/ADCON2 → seleccionar canal en ADCON0 → poner `GO=1` → esperar `GO=0` → leer `ADRESH:ADRESL`.
P 2 Canal AN0 y potenciómetro en la práctica
El potenciómetro actúa como divisor de voltaje entre VDD y VSS. El cursor conecta a RA0/AN0. El valor digital representa la posición del potenciómetro:
`V_in = (ADRES / 1023) × V_ref`
Con `V_ref = VDD = 5 V`, ADRES = 512 ≈ 2.5 V. Configura ADCON1 para que RA0 sea analógico y el resto de pines usados como digital (LCD).
P 3 Bit GO/DONE y tiempo de conversión
`GO/DONE` en ADCON0:
- Escribes 1 en GO → inicia la conversión.
- Hardware pone 0 cuando termina.
El tiempo depende de ADCS (periodo Tad) y tiempo de adquisición. Con 20 MHz y ADCS = 101 (16 Tosc), Tad cumple el mínimo del datasheet. No leas el resultado mientras GO = 1.
Con cristal de 20 MHz usa ADCS = 101 (16 Tosc) en ADCON2 según la guía del curso.
Disena tu solucion
Diseño antes del código
La guía oficial pide pseudocódigo y diagrama de flujo antes del .ASM. Escribe los tuyos primero; después desbloqueas la guía de referencia.
- 1. Pseudocódigo
- 2. Diagrama de flujo
- 3. Guía de referencia
Escribe tu pseudocódigo
Incluye: configuración de registros ADC, espera de GO/DONE, lectura de 10 bits y rutina de visualización en LCD.
0 caracteres (mínimo 80)
Describe tu diagrama de flujo
En papel o aquí: lista cada símbolo en orden. Tu informe necesita óvalos, rectángulos, rombos y el bucle principal.
0 caracteres (mínimo 60)
Mi borrador de pseudocódigo
Mi borrador de diagrama de flujo
Pseudocódigo de referencia
INICIO
Configurar ADCON1 (AN0 analógico)
Configurar ADCON2 (ADCS=101, ADFM=1)
ADCON0 ← canal 0, ADON=1
Inicializar LCD
REPITIR SIEMPRE
GO ← 1
MIENTRAS GO = 1 HACER ; esperar
valor ← ADRESH:ADRESL
voltaje ← escalar(valor)
mostrar voltaje en LCD
FIN REPITIR Diagrama de flujo de referencia
Construye y adapta el codigo
Practica · UNEXPO
Práctica 7 de Laboratorio
Implementar conversión analógico-digital: leer potenciómetro o sensor, procesar valor y visualizar en LCD o LEDs.
Pasos obligatorios en tu código
Sección titulada «Pasos obligatorios en tu código»- Configurar ADCON1 (pines analógicos)
- Configurar ADCON2 (reloj, formato)
- Seleccionar canal en ADCON0
- Iniciar conversión y esperar GO/DONE
- Leer y escalar resultado a voltaje o unidades
Cristal 20 MHz
Sección titulada «Cristal 20 MHz»Seleccionar ADCS = 101 (16 Tosc) en ADCON2 según Tema 9 CAD.
Código fuente de referencia
Sección titulada «Código fuente de referencia»Despues de programar — post-laboratorio
Post-laboratorio — investigación de referencia
Preguntas de cierre sobre ADC y visualización.
P 1 ¿Por qué se justifica el resultado a la derecha (ADFM = 1)?
Con ADFM = 1 (justificado a la derecha), los 10 bits útiles quedan en las posiciones bajas de `ADRESH:ADRESL`, facilitando tratar el resultado como entero de 16 bits (`movff ADRESL, WREG` + parte alta). Con justificación a la izquierda los bits están repartidos de forma distinta y el código de escalado cambia.
P 2 Fuentes de error en la lectura ADC
Errores comunes: ruido en la línea analógica (falta de capacitor 100 nF en AN0), impedancia alta del potenciómetro, referencia inestable (VDD ruidoso), código que lee antes de que GO = 0, o cruce con LCD que comparte alimentación. En el informe menciona al menos dos y cómo los mitigaste.
Grafica voltaje vs ADRES en el informe si puedes.
Comprueba lo aprendido
Exámenes por nivel de dificultad
Abre cada nivel cuando estés listo. El básico es público; intermedio y UNEXPO requieren cuenta CALETAS para calificar respuestas.
Básico Nivel básico — ADC y montaje 3 preguntas
Registros ADCON y potenciómetro en AN0.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASIntermedio Nivel intermedio — Configuración y escalado 3 preguntas
ADCON1/2, canal y voltaje.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASUNEXPO Nivel UNEXPO — Oral ADC 2 preguntas
Errores, ADFM y flujo completo de conversión.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS