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.
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!!
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.
//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
}
No hay comentarios:
Publicar un comentario