Ir al contenido

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.

Diagrama electronico de la Practica 7 con potenciometro en AN0 y LCD
Potenciometro en RA0/AN0, LCD en bus 4 bit (RB0-RB3 datos, RE0/RE1 control). — Practica 7 — Convertidor AD · UNEXPO
  1. 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   ADCON0
    							

    Consejo: Teoría ADC: /adc/

  2. 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. 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. 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. 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. 1. Pseudocódigo
  2. 2. Diagrama de flujo
  3. 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)

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.

  1. Configurar ADCON1 (pines analógicos)
  2. Configurar ADCON2 (reloj, formato)
  3. Seleccionar canal en ADCON0
  4. Iniciar conversión y esperar GO/DONE
  5. Leer y escalar resultado a voltaje o unidades

Seleccionar ADCS = 101 (16 Tosc) en ADCON2 según Tema 9 CAD.

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

Con cristal 20 MHz, ADCS en ADCON2 suele ser…
GO/DONE en ADCON0 indica…
El potenciómetro de la práctica se conecta típicamente a…
Intermedio Nivel intermedio — Configuración y escalado 3 preguntas

ADCON1/2, canal y voltaje.

0 de 0 respondidas

ADCON1 con PCFG adecuado sirve para…
Con Vref = 5 V y ADC 10 bits, ADRES = 512 ≈
No debes leer ADRESH:ADRESL mientras…
UNEXPO Nivel UNEXPO — Oral ADC 2 preguntas

Errores, ADFM y flujo completo de conversión.

0 de 0 respondidas

ADFM = 1 (justificado a la derecha) facilita…
Fuente de error: ruido en AN0 se mitiga con…

Panel de tutoriales · Ejercicios