Saltar al contenido

Referencia Analógica AREF en Arduino

Hola controleros y controleras en el día de hoy vamos a aprender a usar la entrada AREF de Arduino y configurar la referencia analógica en la placa. Esto hace parte de la conversión análogo digital (ADC Arduino) que nos permitirá leer con mayor precisión determinados sensores analógicos.

Antes de comenzar, te hago la invitación para que veas nuestro CURSO GRATIS DE ARDUINO.

Entrada AREF Arduino

Toda placa de Arduino que tenga un voltaje de operación de 5v (UNO, Mini, Mega, Nano, Leonardo, Micro) por defecto su convertidor analógico digital ADC está preparado para recibir valores de 0 a 5v que como vimos em la entrada ADC Arduino, la lectura analógica de esos valores me entrega un valor entero de 0 – 1023.

Esto quiere decir que, en los pines analógicos del Arduino, lo más conveniente es conectar sensores que como máximo entreguen el mismo voltaje de operación de la placa.

¿Pero qué sucede si conectamos un sensor que entregue una tensión menor?

Generalmente, es común encontrar sensores que como máximo entreguen un voltaje de 0 a 3.3v, evidentemente, podemos conectar estos sensores a los pines analógicos del Arduino, sin embargo, notaremos que NO estaremos aprovechando toda la resolución del Arduino, pues dicha lectura analógica solo entregará un valor entero de 0 – 675.

Claro, podemos adaptar ese valor por programación para que muestre la variable deseada adecuadamente, sin embargo, no estamos aprovechando al máximo la resolución del convertidor ADC de Arduino.

Para eso utilizamos la función del pin AREF de Arduino, para informarle que el máximo valor leído en los puertos análogos será de 3.3v en lugar de 5v.

Referencia Analogica AREF Arduino

Con esto el Arduino nos va a entregar un valor entero de 0 – 1023 cuando el voltaje es de 0 – 3.3v y así poder aprovechar la resolución máxima del ADC y por ende tener una medida más precisa del sensor empleado.

Referencia Analógica con Arduino

Antes de usar la función del pin AREF es necesario primero y, antes que nada, informarle a Arduino que vamos a utilizar la referencia externa para evitar hacer corto circuitos innecesarios.

Sin embargo, es importante destacar, que podemos cambiar la referencia analógica de Arduino a través de código sin necesidad de usar el pin AREF para determinados valores de voltaje. Vamos entonces entender la función analogReference().

Sintaxis

analogReference(TIPO);

la instrucción anterior sirve para configurar el voltaje de referencia del Arduino el cual posee las siguientes opciones configurables para la variable TIPO:

Para placas Arduino AVR (Uno, Mega, etc.)

  • DEFAULT: coloca el voltaje por defecto de 5 voltios para placas alimentadas a 5 voltios o 3.3 voltios para placas Arduino de 3.3V.
  • INTERNAL: utiliza la referencia interna de la placa de Arduino que es de 1.1v en los microcontroladores ATmega168 o ATmega328P y 2.56v para microcontroladores ATmega8 (esta función no disponible para Arduino Mega)
  • INTERNAL1V1: referencia interna de 1.1V (apenas Arduino Mega)
  • INTERNAL2V56: referencia interna de 2.56V (apenas Arduino Mega)
  • EXTERNAL: esta es la instrucción que debemos activar para el caso en que queramos usar el pin AREF.

Recomendaciones Importantes

  1. Según la documentación disponible en el sitio oficial de Arduino, una vez se hace el cambio de referencia de las entradas análogas, las primeras lecturas del microcontrolador pueden ser imprecisas.
  2. NUNCA usar tensiones por debajo de 0v ni por encima de 5v en el pin AREF.
  3. Cuando use un voltaje externo de referencia en el pin AREF, primero llame la función analogReference(EXTERNAL) antes de llamar la función analogRead (). ¡¡De lo contrario se puede generar un CORTO CIRCUITO en el Arduino!!

Sensores disponibles en Amazon

Aprendiendo a utilizar la conversión ADC, puedes integrar cualquier tipo de sensor con tu placa de desarrollo del arduino para darle vida a tus proyectos, puedes darle un vistazo a los siguientes sensores que puedes encontrar en Amazon:

Pin AREF Arduino– Ejemplo

Conecte un Potenciometro al PIN A3 del Arduino y lea el voltaje entregado. El potenciomentro deberá ser alimentado con un voltaje de 3.3v. Conectar un LCD al Arduino sin utilizar el PIN RW (colocar a tierra) y mostrar el valor leído del ADC de Arduino. Compare la lectura análoga cuando se utiliza la referencia análoga externa (Pin AREF) y cuando no se utiliza. Además de mostrar el número entero, muestre el valor de voltaje del potenciómetro.

AREF Arduino
//Voltaje de Referencia usando el PIN AREF de Arduino
//Definiciones
const int POT = A3; // Define el pin Analógico (Potenciometro)
int value;
float volt;
//Bibliotecas
#include <LiquidCrystal.h> 
LiquidCrystal lcd(10, 8, 5, 4, 3, 2); //(RS, E, D4,D5, D6, D7)
 
 
//Función que es ejecutada una vez cuando enciende o resetea el Arduino
void setup() {
 lcd.begin(16, 2);   // Inicia el LCD 16x02 (colunas,filas)
 //analogReference (DEFAULT);    //Referencia analógica default (5v ou 3.3v)
 analogReference (EXTERNAL); //Referencia analógica PIN AREF
} 
 
//Función que será ejecutada continuamente
void loop() {
  
  //Lectura del Pin A3 (ADC)
  value=analogRead(POT); // Almacena el valor entero.
  //Convierte el valor enteiro en Tensión
  volt=(value*3.3/1023.0);
  //volt=(value*5/1023.0);
  //Visualiza en el LCD
  lcd.home();               // Coloca el cursor en las coordenadas (0,0)
  lcd.print("POT Int: ");   // Escribe en el LCD 
  lcd.print(value);         // Escribe en el LCD
  lcd.setCursor(0,1);       // Coloca el cursor en las coordenadas (0,0)
  lcd.print("POT (V): ");   // Escribe en el LCD  
  lcd.print(volt);          // Escribe en el LCD
  delay(1000);
  lcd.clear();              //Limpia todo el LCD
}

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.

Entradas relacionadas

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (4)

Excelente, todo muy bien explicado, GRACIAS

Responder

Hola Sergio, una consulta: cuando el código pasa por la instrucción delay (1000) en el void loop()==> (demora 1seg) [linea 33 del codigo] se detiene el código es decir no tendría que cambiar la lectura en el LCD por 1 seg? aun cuando se modifique el valor del potenciometro que manda la señal al A3? Pero se ve que muestra los valores, esa parte no me quedo clara. Por favor, podrías ayudarme a entenderla. Muchas Gracias! Excepcional tu canal DE LO MEJOR QUE TENEMOS EN ESPAÑOL!!! Abrazos y Muchas Gracias!!

Responder

Hola Sergio , si bien ya te lo he dicho , tu canal es de lo mejor que he visto , se nota por tu calidad de persona que sentis una Gran pasión por enseñar , ademas de ser muy claro , el contenido es realmente pedagógico , Muchas Gracias por todo lo que haces !!!!!

Responder

Muchas gracias Vicente por el comentário. Me gusta enseñar y si puedo aportar un poco con lo que sé pues eso me alegra. Saludos Vicente. El mejor de los éxitos para ti siempre.

Responder