MicroCode Studio y PBP: Uso del ADC con PIC16F887 – Encender LEDs

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión utilizaremos el ADC del PIC16F887 para encender 8 LEDs dependiendo del voltaje en un potenciómetro.

Se tiene 8 LEDs con su debida resistencia conectados al puerto D del microcontrolador, un potenciómetro conectado al canal analógico 0 (RA0) y su cristal de cuarzo con sus capacitores conectado en sus respectivos pines, además se incluye un pulsador y una resistencia conectados al Master Clear (MCLR) para usarlo como Reset del circuito, aunque para nuestro ejemplo no es muy utilizado ya que solo necesitamos conocer el funcionamiento básico del ADC. El circuito utilizado se muestra a continuación:
Ahora se debe de configurar ciertos registros para poder utilizar el ADC para ser exactos necesitamos configurar:
  • ADCON0: Controla la operación del modulo A/D
  • ADCON1: Configuración de las funciones de los pines de los puertos del A/D (analógicos o digitales, uso o no de voltaje de referencia externo)
Para saber exactamente como configurar el PIC utilizado necesitamos el Datasheet en este caso es el del PIC16F887 y par esto tenemos lo siguiente:

Explicaremos la configuración del ADCON0=%11000001.
  • Bit 7-6: El clock del ADC es RC derivado del oscilador interno.
  • Bit 5-2: Solo utilizaremos el canal analógico 0 (AN0).
  • Bit 1: Bit de estado de conversión cero significa que la conversión no está en progreso.
  • Bit 0: Habilita el ADC, 1 significa inicio de operación del módulo.
Explicaremos la configuración del ADCON1=%10000000.
  • Bit 7: 1 es justificación a la derecha.
  • Bit 6: No se usan.
  • Bit 5: V de referencia – es VSS.
  • Bit 4: V de referencia + es VDD.
  • Bit 3-0: No se usan.

Antes de usar esta función, es necesario asignar como entrada analógica el pin correspondiente con la función TRIS.

          TRISA.0=1;

El código de nuestro ejemplo se muestra a continuación:
Varios DEFINEs pueden también ser utilizados, si se desea saber más de ellos puedes hacerlo en la barra de herramientas Help>>Help Topics>>PICBASIC PRO Basics>>Define. Los valores utilizados se muestran a continuación:

          DEFINE ADC_BITS 10; Uso del ADC de 10 bits.
          DEFINE ADC_CLOCK 3; Uso del clock RC=3.
          DEFINE ADC_SAMPLEUS 50; Fija el tiempo de muestreo en microsegundos.

La función del compilador que lee el dato del pin de ADC es ADCIN y su sintaxis es:

ADCIN canal, variable donde se guarda el dato

Para nuestro ejemplo tenemos ADCIN 0, RES; Donde RES es una variable tipo Word donde se almacena el valor leído por el ADC.

Ahora tenemos la instrucción VAL=RES/127; Con esto sabemos cada cuanto se encenderá un LEDs y el número 127 se obtiene de dividir 1023 entre 8 ya que son 8 LEDs conectados al PORTD.

Se tiene el SELECT CASE VAL; lo que se hace con esto es introducir la variable VAL a casos que en este ejemplo son 9 ya que el caso cero apaga todos los LEDs, con forme va aumentado la variable van encendiendo los LEDs.

Material:
  • 1 PIC16F887
  • 8 LEDs
  • 8 Resistores de 330Ω
  • 1 Resistor de 1KΩ
  • 1 Pulsador
  • 1 Cristal de cuarzo de 4MHz
  • 2 Capacitores cerámicos de 33pF
  • 1 Potenciómetro de10KΩ
Como no podía faltar dejo el vídeo del circuito en funcionamiento:
Dejo todo el material disponible para DESCARGAR. Si tienes alguna duda, sugerencia, inquietud, trauma o comentario con respecto a este post, deja un comentario y tratare de responder lo mas pronto posible...
  • Actualización (05/12/2015): Se agrego el material para descarga.

2 comentarios:

  1. Hola, como seria el codigo en mplab por favor

    ResponderEliminar
    Respuestas
    1. Disculpa no lo tengo hecho en MPLAB, solo esta esto y es en PIC Basic Pro

      Eliminar