CONVERSOR ADC DE 8 BITS PARA EL PIC PIC16F887.

Un conversor analógico digital(ADC): Convierte una señal analógica a digital.

Una señal análoga: Es una señal que es continua; en la que es variable su amplitud y periodo en función del tiempo. Esta puede tomar valores infinitos dentro de un tiempo determinado. 

Una señal discreta: Son aquellas que pueden tomar valores finitos dentro de un intervalo de tiempo. 

El microcontrolador PIC16F887 tiene 14 canales análogos los cuales son: AN0, AN1, AN2, AN3, AN4, AN5, AN6, AN7, AN8, AN9, AN10, AN12 y AN13; que están distribuidos en los puertos A, B y E.

Conversor ADC de 8 bits: Cuando la resolución es de 8 bits, la señal digitalizada trabaja entre 0-255. Con 8 bits el mayor número binario que puede tener es :

La resolución: Es el voltaje necesario (señal analógica) para lograr en la salida(señal digital), que se presente un cambio de bits. 

N: El número de bits que tiene el conversor ADC.

Vin: Voltaje que hay que poner a la entrada del conversor ADC, para conseguir una conversión máxima. 

Ejemplo:

  • La resolución: 5v/255=19,6mv/paso. 
  • 255*(5v/255): 5v

El 19,6mv/paso, indica los pasos análogos que hay que dar para producir un incremento de un bit en la salida digital. 

Para determinar en todo momento a qué número digital aproximado corresponde la señal análoga de entrada, se utiliza la siguiente expresión:

V_entrada/Resolución.

Ejemplo:  

Si la señal análoga es 2,5v, el número digital aproximado es:

                                         2,5v/19,6mv= 127,55 bits

Si la señal análoga es 5v,  el número digital aproximado es: 

                                                 5v/19,6mv=255bits

 

Funciones del programa 

#INCLUDE <16F887.h>: La librería que se va a trabajar es del pic16F887.

#USE DELAY(CLOCK=4000000): Se configura la frecuencia del reloj del sistema a 4MHZ.

#FUSES XT, NOPROTECT,NOWDT:  Son los fusibles de configuración. En donde:

#FUSES XT: Se habilita el oscilador del sistema. 

#FUSES NOPROTECT: Se desactiva la protección contra lectura de la FLASH.

#FUSES NOWDT: Se desactiva Watch Dog Timer.

#device adc=8: Indica la cantidad de bits que usará el conversor, en este caso, el conversor es de 8 bits. 

#BYTE PORTC=0X07: Define la variable PORTC y se sitúa en la dirección 0X07  de la memoria RAM. 

#BYTE TRISC=0X87: Define la variable TRISC que se sitúa en la dirección 0X87 de la memoria RAM. 

TRISC=0: Indica que el puerto C se configura como salida digital. 

INT8 q: El campo que se define como una variable entera de 8 bits.

setup_adc_ports(PIN_A0): Permite configurar los pines  análogos o digitales de la conversión ADC.

setup_adc(ADC_CLOCK_INTERNAL): Configura el reloj interno utilizado en la conversión. 

set_adc_channel(0): Configura el canal a leer. En el programa se utiliza el canal AN0.

read_adc: Lee el valor digital del conversor análogo a digital. 

 

Materiales:

  • Un PIC16F887.
  • Un potenciómetro de un 1k. 
  • Ocho resistencias de un 220Ω.
  • Ocho leds rojos.
  • Un voltímetro. 

 

Explicación del circuito:

La señal análoga varía con el potenciómetro de 0V a 5V. Mediante los leds se visualiza el valor digital entre 0 a 255.

Diagrama esquemático.

CIRCUITO ADC 8 BITS
Fig 1. Circuito Conversor ADC de 8 Bits con PIC16F887
Video Explicativo.

Código fuente.
#INCLUDE <16F887.h>  //Librería del pic 16f887
#device adc=8;    //Selecciona la cantidad de bits con que se trabajará, en este caso con el conversor de 8 bits
#FUSES NOWDT,XT,NOPROTECT   //Configuración del microcontrolador
#USE DELAY(CLOCK=4000000)   //Configuración del reloj interno

#BYTE PORTC=0X07  //Definir los registros que esta en la dirección 0x07 y 0x87 de la memoría RAM
#BYTE TRISC=0X87

void main(){

TRISC=0;      //Configuración como salidas digitales 
INT8 q;

setup_adc_ports(PIN_A0); //Configura los pines como análogos o digitales. En este caso A0 es configurado como análogo. A0,A1 Y A3 son analógos el resto digital
setup_adc(ADC_CLOCK_INTERNAL);//Configuración del reloj interno o la señal de reloj utilizado para la conversión 

for(;;){

set_adc_channel(0);  //Seleccionar el canal, en este caso, se selecciona AN0
delay_us(20);        //Un retardo para esperar que haga la conversión 
q=read_adc();        //Lee el número de la conversión A/D y lo guarda en q
PORTC=q;            //Lo que hay en q lo guarda en el puerto c
delay_ms(50);       //Retardo
 }
}



CONTENIDOS MÁS RELEVANTES.

LOS MEJORES SITIOS PARA APRENDER ELECTRICIDAD GENERAL

Que tal compañeros: ¿ como están? pues espero que se encuentren de maravilla ¡así como yo también! el día de ...
Leer Más

LOS MEJORES SITIOS PARA APRENDER ELECTRONICA

 LOS MEJORES SITIOS PARA APRENDER ELECTRONICA nuestra red global llamada Internet está inundada de muchos sitios para aprender electrónica de ...
Leer Más
plc aprender a programar

PLC: APRENDER A PROGRAMAR

PLC: APRENDER A PROGRAMAR Que tal amigos. ¿como están? ¿quieren aprender a programar PLCs? ¿estás buscando sitios que te ofrezcan ...
Leer Más

LOS MEJORES SITIOS PARA APRENDER ROBOTICA COMPLETAMENTE GRATIS.

saludos compañeros. Les cuento que el día de hoy estuve en una búsqueda exhaustiva por buscar los mejores sitios para ...
Leer Más
libros de ingeniería electrónica

DESCARGAR GRATIS LIBROS DE ELECTRÓNICA

como descargar los libros gratis de electrónica saludos amigos, el día de hoy les comparto una serie de links  que ...
Leer Más
instrumentación

LOS MEJORES SITIOS PARA APRENDER INSTRUMENTACIÓN Y CONTROL

 En el post de hoy hablaré de 5 sitios web que marcan la diferencia para aprender todo lo que necesitas ...
Leer Más

MICROCONTROLADORES: CURSO COMPLETAMENTE GRATIS.

nota: estos cursos no pertenecen a sensoricx. Recuerda que debes suscribirte al canal https://www.youtube.com/channel/UCwbBivwbFv8GVitX5dKzPFQ antes de empezar el curso. VIDEO ...
Leer Más
plc siemens

PLC: CURSO COMPLETAMENTE GRATIS.

Saludos compañeros. A continuación les comparto una serie de vídeos que les servirán para su formación técnica en programación de ...
Leer Más
destacada

APRENDE LABVIEW CON ESTOS SENCILLOS TUTORIALES

saludos compañeros. El día de hoy les comparto una serie de vídeos relacionados con el entorno de desarrollo de LABVIEW ...
Leer Más
igbt

IGBT. QUE ES- PARA QUE SIRVE- COMO FUNCIONA

IGBT QUE ES- PARA QUE SIRVE- COMO FUNCIONA Hablar de los IGBT son mayores palabras puesto que estos transistores son ...
Leer Más
inversor de giro de motor trifasico

INVERSOR DE GIRO DE MOTOR TRIFÁSICO

INVERSOR DE GIRO DE MOTOR TRIFÁSICO En la reciente práctica  de laboratorio se trabajó con el circuito inversor de giro ...
Leer Más

CONTROL ELECTRICO-INTRODUCCION

CONTROL ELECTRICO-INTRODUCCION Dentro de los sistemas de control electromagnético o sistemas cableados destacamos como elemento principal el contactor.   El ...
Leer Más



fabio figueroa

soy el administrador del sitio web. si tienes alguna duda, no dudes en contactarme

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *