Entrada analógica «Sensores», Pic C Compiler

En esta sección aprenderás a programar una entrada analógica utilizando el convertidor analógico digital conectando un potenciómetro al microcontrolador PIC.

Señal analógica 

Una señal analógica es un tipo de señal generada por un sistema electromagnético, esta representada por una variación continua de electrones y sus parámetros son la amplitud, la frecuencia y el periodo de la señal.

Una entrada analógica en un microcontrolador puede tomar un voltaje de 0 a 5V, es importante determinar este valor para evitar dañar el microcontrolador.

En este ejemplo se utilizara un potenciómetro como entrada analógica, si el voltaje de alimentación del potenciómetro es de 5V este podrá variar el voltaje de 0 a 5V.

Pines Analógicos 

Los pines analógicos del microcontrolador se definen en su hoja de especificaciones.

Circuito del sistema

En el circuito anterior se definen la conexión de los elementos que se utilizaran. Se utiliza un potenciómetro y una display LCD para mostrar el valor medido.

El primer paso para programar una entrada analógica es configurar el módulo convertidor analógico digital (ADC). Cuando el PIC recibe una entrada analógica este convierte el valor a digital en bits mediante el ADC. Dependiendo de los bits del ADC la lectura sera más o menos precisa.

Código archivo .h

El convertidor analógico digital es de 10 bits.

#device ADC=10

Código archivo .c

El siguiente paso es habilitar el modulo ADC y habilitar la entrada analógica en el pin AN0.

setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel (0); //lectura Vout del Potenciometro en PIN A0

Se utiliza una variable para guardar el valor del potenciómetro, dado que se esta utilizando un ADC de 10 bits es necesario definir que nuestra variable sea de 10 bits o mayor por lo que se coloca una variable  entera de 16 bits.

  INT16 potenciometro; //  variable para guardar el valor

Finalmente la instrucción para hacer la lectura en la entrada analógica permite obtener el valor medido.

potenciometro=read_adc();// lectura del valor 

Finalmente se coloca la instrucción para mostrar el valor en la pantalla LCD.

La variable entera de 16 bits se coloca como %lu y para establecer el número de dígitos que queremos que se muestren se se coloca el número iniciando con un cero «%04lu»

lcd_gotoxy (1,1); printf(LCD_PUTC, "POTENCIOMETRO"); 
lcd_gotoxy (1,2);printf(LCD_PUTC, "valor=%04lu",potenciometro);

Código completo

#FUSES NOMCLR

#define LCD_RS_PIN PIN_B6
#define LCD_RW_PIN PIN_B5
#define LCD_ENABLE_PIN PIN_B4
#define LCD_DATA4 PIN_B3
#define LCD_DATA5 PIN_B2
#define LCD_DATA6 PIN_B1
#define LCD_DATA7 PIN_B0
#include "lcd.c" 

void main()
{
   lcd_init();
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);//lectura Vout del potenciometro en pin AN0
   int16 potenciometro;
   while(TRUE)
   {
      potenciometro=read_adc();//lectura del valor
      lcd_gotoxy(1,1); printf(LCD_PUTC, "POTENCIOMETRO");
      lcd_gotoxy(1,2); printf(LCD_PUTC,"valor=%04lu",potenciometro);
      delay_ms(100);
   }
}

Scroll al inicio