MICROCONTROLADORES

Microcontroladores: Conversión ADC de 10 bits.

Conversor ADC de 10 bits: Un conversor análogo a digital, es un sistema que permite convertir señales analógicas en señales digitales. 

Una señal análoga: Es una señal continua que puede tomar cualquier valor en un intervalo de tiempo. 

Una señal digital: Es una señal discreta, que puede tomar un número finito de valores en un determinado tiempo.

Ejemplo de una señal análoga y una señal digital.

 

El pic16F887, contiene un módulo convertidor ADC(análogo a digital),  que proporciona una resolución de 10 bits. Además, tiene 14 canales de entrada(AN0, AN1, AN2, AN3, AN4, AN5, AN6,AN7,AN8,AN9, AN10, AN11,AN12,AN13).

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

¿Cómo se calcula la resolución? 

La resolución, es el voltaje necesario para lograr en la salida 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.

Ejemplo: La resolución: 5v/1023=4,8mv/paso.

Para determinar qué número digital aproximado corresponde la señal de entrada, se utiliza la siguiente expresión: Ventrada/Resolución 

Por ejemplo: 

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

  • 2v/4,8mv= 416,6 bits

Funciones del programa 

#include <16f887.h>: Es la librería para el microcontrolador pic16F887.

#device adc=10: Función que indica el conversor a utilizar, en este caso es el conversor de 10 bits. 

#use delay(clock=4000000): Permite configurar o activar la frecuencia del sistema a 4MHZ.

#fuses XT,NOWDT: Son los que permiten la configuración del microcontrolador. 

#fuses XT: Activa el oscilador del sistema.

#fuses NOWDT: Se deshabilita el Watch Dog Timer..

#define use_portb_lcd TRUE: Se utiliza para configurar los pines del puerto D. 

#include <lcd. c>: Librería que se utiliza para el manejo de la pantalla lcd. 

int16 q: El campo “q” que se define como un dato tipo entero de 16 bits.

float lectura: El campo lectura se define como un dato tipo flotante. 

lcd_init(): Función que permite inicializar la pantalla lcd. 

setup_adc_ports(PIN_A0): Permite configurar los pines análogos o digitales de la conversión ADC. En este caso, se configura el PIN_A0 como análogo. 

setup_adc(ADC_CLOCK_INTERNAL): Configura el reloj interno de la conversión ADC. 

set_adc_channel(0): Configura el canal a leer, es decir, con el que se va a trabajar. En el programa se utiliza el canal AN0.

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

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

lectura: 5.0*q/1024.0: Esta fórmula es para convertir el valor almacenado(q) de la conversión ADC en voltaje. 

lcd_gotoxy(x,y): Función que indica la ubicación del cursor en la posición “x” y “y”.

printf(lcd_putc,”Voltaje=%1.2vf”,lectura): Muestra el texto y el valor de temperatura en este caso. 

Materiales:

  • Una pantalla LCD.
  • Un pic16F887.
  • Un potenciómetro de un 1k.
  • Un voltímetro. 

Explicación del circuito:

Se lee una entrada analógica y se muestra en la pantalla LCD de la placa el valor leído en voltios.

CIRCUITO.

Programa: Conversión ADC de 10 Bits.

 

#include <16f887.h>  //La librería que se utiliza para el pic16f887
#device adc=10   //Permite poner la cantidad de bits según el conversor a usar, en este caso son de 10bits
#use delay (clock=4000000)  //Configuración del reloj 
#fuses XT,NOWDT     //La configuración del microcontrolador 

#define use_portb_lcd TRUE 
#include <lcd.c>


void main(){

int16 q;
float lectura;
lcd_init();        //Inicializa la pantalla lcd

setup_adc_ports(PIN_A0); //Define los pines como analógos o digitales. En este caso es analógo.
setup_adc(ADC_CLOCK_INTERNAL);  //Configura el reloj interno de la conversión

for(;;){
  
  set_adc_channel(0);   //Selecciona el canal a trabajar, en este caso se trabaja con el canal AN0
  delay_us(20);        //Retardo
  q=read_adc();        //Guarda en q el valor leído de la conversión A/D
  lectura=5.0*q/1024.0;  
  lcd_gotoxy(1,1);      //Indica la posición del texto de la primera línea 
  printf(lcd_putc,"Voltaje= %1.2fv", lectura); //Va a mostrar el valor y el texto 
  delay_ms(1000);    //Retardo
 }
}
 

CONTENIDOS MÁS RELEVANTES.

 

 

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 *