Velocidad del viento: Anemómetro

Referencia: https://es.wikipedia.org/wiki/Anem%C3%B3metro

Con el objetivo de medir la velocidad del viento, se dispone de un motor eléctrico al que se le añadieron 3 aspas. Ante la exposición al viento, las aspas hacen girar el motor generando un voltaje entre los terminales.

La relación velocidad de viento y voltaje debe obtenerse experimentalmente por algún medio propuesto y así obtener la tabla que relaciona ambos valores.

 

 Velocidad de viento Voltage generado por el motor

Con los valores obtenidos, realice la función que describa la relación entre los valores. Usar algun método de interpolación para usar un polinomio que describa la realción entre los valores. Revisar unidad05 Interpolación de MATG1013

http://blog.espol.edu.ec/matg1013/

Luego usando la función es posible usar un arduino con una pantalla para mostrar los valores de voltaje transformados a su equivalente de velocidad.

Se usa un pin de sensor analógico para realizar la lectura de voltajes.

Recuerde revisar el voltaje máximo obtenido del motor en la parte experimental, para que en caso que se exceda la capacidad del sensor de 5V, se utilice un divisor de voltaje con resistencias.

Instrucciones Arduino

/* Lecturas del anemometro a Km/h
 *  http://blog.espol.edu.ec/edelros/velocidad-del-viento/
 *  Referencia: ReadAnalogVoltage
 *  http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
*/

#include <LiquidCrystal_I2C.h> // LCD por I2C
#include <Wire.h> //comunicación I2C

// Pantalla LCD. npxmp
const byte mp = 16;
const byte np = 2;
LiquidCrystal_I2C lcd(0x27,mp,np); 

int SensorPin = 0; // Analógico

void setup() {
  // inicializa monitor serial
  Serial.begin(9600);
  
  // Inicializa Pantalla
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Anemometro Voltaje a Kmh");
  lcd.setCursor(0,1);
  lcd.print("/matg1013");
  delay (2000);
  lcd.clear();
}

void loop() {
  double valorsensor = analogRead(SensorPin);
  float voltaje = valorsensor * (5.0 / 1023.0);
  float kmh = convertirV_Kmh(voltaje);

  // SALIDA A MONITOR SERIAL
  Serial.print("volts: ");
  Serial.println(voltaje);
  Serial.print(" Km/h: ");
  Serial.print(kmh);
  
  // SALIDA A PANTALLA LCD
  lcd.clear();
  lcd.setCursor(0,0);
  // muestra decimales = 3
  lcd.print("Votaje: ");
  lcd.print(voltaje,3);
  lcd.setCursor(0,1);
  lcd.print("Km/h: ");
  lcd.print(kmh,3);

  delay (500);
}

float convertirV_Kmh(float voltaje){
    float resultado = 0;
    
    // usar polinomio del experimento
    resultado = 2.0+10.0*voltaje;

    return resultado;
}

Publicado por

Edison Del Rosario

edelros@espol.edu.ec / Profesor del FIEC/FCNM-ESPOL