Hoy vamos a aprender a usar las entradas analógicas del Arduino y como mostrar datos por pantalla con la comunicación serial. Para ello vamos a crear un pequeño termómetro auyudados por un LM35 conectado de la siguiente manera:
Las entradas analógicas nos valen para pasar del mundo real (analógico) al mundo digital, por tanto hoy vamos ha hacer un convertidor AD.
Primero empecemos con las estructuras básicas de arduino.
void loop(){}
En la función setup se deben declarar la configuración del Arduino, es decir, sus entradas salidas digitales, las entradas analógicas no hay que declararlas. Mientras que en la función loop deberá estar el cñodigo que se irá repitiendo.
Dicho esto vamos a declarar en setup la cominicación con el ordenador por el puerto serial.
Serial.begin(9600); // 9600 baudios = velocidad de comunicación por el puerto USB
}
Luego crearemos unas variables globales, que las deberemos declarar al inicio, antes de setup
void setup(){
Serial.begin(9600) // 9600 baudios = velocidad de comunicación por el puerto USB
}
Y ahora pasaremo al tema de las lecturas y la conversión.
t_aux = (analogRead(0)*500)/1023.0; // Conversor AD
if(temperatura != t_aux){ // Filtro para no estar spameando texto
temperatura = t_aux; // Actualizamos temperatura
Serial.print(“Temperatura ambiente: “); // Texto que queremos mandar
Serial.print(temperatura); // Mostramos la temperatura y un salto de linea
}
delay(60000); // Retraso en milisegundos | 60000ms = 1min
}
Y ahora vayamos por partes:
con analogRead(X) leemos el puerto analógico X, donde X es el valor del pin que queremos leer.
Luego el (analogRed(0)*500)/1023.0 viene por 2 motivos. El “.0” es para que el resultado sea un float que es el tipo de la variable. Y estas operaciones son la parte del convertidor.
Multiplicamos por 5000 que es el equivalente a 5V, dado que la lectura del analog red es de 5V codificado en 10bits, es decir hay 1024 (2^10) posibles valores desde 0 a 1023. Y como el LM35 tiene una sensibilidad de 10mV la función entera del converso es 5000/10 = 500. De manera que con las operaciones estamos aplicando un factor de escala.
P.D: El Arduino UNO de un salto cada 4,882mV ~ 5mv, en otros casos como el Arduino Due trabaja con 12bits, es decir 4096 (2^12) posibles valores y deberemos dividir por 4095 ya que da un salto cada 1,22mV.