InicioTarjetas de DesarrolloArduino¿Cómo funciona el Anemómetro IP65 con Arduino UNO?

¿Cómo funciona el Anemómetro IP65 con Arduino UNO?

Te mostraremos como a través de la tarjeta de desarrollo Arduino UNO puedes obtener los datos enviados por el sensor de velocidad de viento: Anemómetro IP65.

El Anemómetro es un instrumento de medición de velocidad del viento, muy útil en el invernaderos, teleféricos o estaciones meteorológicas caseras o de investigación.

Específicamente el modelo con el que trabajaremos pertenece a la familia de DF Robot y entrega una señal analógica con voltaje de 0 a 5V.

Diagrama de Conexión.

A continuación se muestra como se debe realizar la conexión entre el anemómetro, el display OLED y Arduino R3.

Debido a que el Arduino se alimentara por vía USB, se suministrara voltaje por otra vía para el anemómetro, siendo que requiere voltaje entre 9 a 24V para poder funcionar.

Cabe mencionar que se debe tener en común las Tierras (GND), es decir realizar la unión del GND de la alimentación externa con el GND del Arduino.

Código para visualizar datos del Anemómetro

Para el siguiente código solamente requeriremos las librerías para poder utilizar el OLED y realizar la comunicación I2C para poder desplegar la información procesada por el Arduino UNO R3.

Si no cuentas con la librería para usar el display OLED, te recomendamos revisar el tutorial Como programas y conectar el Display Oled de 0.96 con Arduino Uno

                                                                           
                                                //Incluimos las librerías con las que estaremos trabajando
#include   <Adafruit_GFX.h>
#include  <Adafruit_SSD1306.h>                /*Liberia para Oleds monocromáticos basados ​​en controladores SSD1306
                                             Se declara el pin de reset, este es requerido por el constructor de la librería SSD1306
                                              para definir el tipo de OLED y la comunicación I2C en los (pines SDA, SCL)*/
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_RESET); /*Se define una condición para saber si en la librería esta definida la altura de 32 de lo contrario no dejara compilar el código hasta que se cambie la altura correcta desde la librería*/
#if (SSD1306_LCDHEIGHT != 32) 
#error("Altura incorrecta, cambie en la librería de Adafruit_SSD1306.h!"); 
#endif

int valorA;
float voltaje;
int velocidad;
int v;
  
void setup() {
  Serial.begin(9600);                          //Iniciamos la comunicación serial a 9600 baud
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);   //Se inicia la comunicación I2C en la direcion 0x3C para la pantalla oled 128x32
}

void loop()
{
 
  display.clearDisplay();                     //Borra el buffer del OLED
  valorA = analogRead(A0);                   //Guarda los valores obtenidos del sensor en la variable valorA
                                             // 0 a 5V al rango de valores 0 a 1023, según corresponda
  voltaje = valorA * (5.0 / 1023.0);         // Se realiza operación que dará equivalencia del valor obtenido
                                             //a un voltaje correspondiente
  velocidad = 6 * voltaje;                   //La velocidad respecto al Voltaje= 6xVOLTAJE
  
  leer_oled();                               //Se ejecuta función leer_oled, para poder desplegar valores
                                             //en la pantalla OLED
 //Para confirmar lo anterior se mostrara el voltaje y velocidad obtenida por cada lectura
  
  Serial.print("Voltaje:");
  Serial.print(voltaje);
  Serial.println("V");
  Serial.print("Velocidad:");
  Serial.print(velocidad);
  Serial.println(" m/s");
  Serial.println();
  delay(500);             //Espera de 5ms para repetir rutina
}

//Función del display OLED para poder mostrar los datos obtenidos del Anemómetro
void leer_oled() {
  
  display.clearDisplay();          //Borra el buffer  
  display.setTextColor(WHITE); //Establece el color
  
  display.setTextSize(1);          //Establece el tamaño de fuente, admite tamaños de 1 a 8
  display.setCursor(0, 0);          //Establecer las coordenadas para mostrar la posición del texto
  display.println("VOLTAJE");
  
  display.setTextSize(2);          //Se cambia el tamaño de fuente
  display.setCursor(60, 0);              
  display.println(voltaje);       //Se despliega el valor del voltaje obtenido de la operación de conversión
  display.setCursor(110, 0);
  display.println("V"); 
 
  display.setTextSize(1);       //Se cambia nuevamente el tamaño de fuente
  display.setCursor(0, 20);
  display.println("VELOCIDAD");

  display.setTextSize(2);      //Se cambia nuevamente el tamaño de fuente
  display.setCursor(60, 18);            
  Serial.println(velocidad);   //Se despliega el valor de la velocidad obtenida de multiplicar por el factor 6 y voltaje
  display.setCursor(90, 18);
  display.println("m/s");
  display.display();          //Muestra el texto
}

La operación para obtener la equivalencia de voltaje respecto a la velocidad esta dada por el fabricante en el datasheet del sensor DF ROBOT Wind Speed Sensor. como se muestra a continuación:

Por lo tanto como se puede leer en el código, se realizo un par de operaciones para poder obtener la velocidad correspondiente al voltaje de entrada de la señal obtenida del anemómetro y finalmente visualizarlo en el display OLED así como también en el Monitor Serial del IDE de Arduino.

Si te interesa ver el funcionamiento de otros productos de la familia DF Robot te invitamos a realizar el tutorial de Reconocimiento Facial con Cámara HuskyLens.

TUTORIALES RELACIONADOS