CÓDIGO DE PROGRAMACIÓN PARA LA VELETA Y EL ANEMÓMETRO .
Continuo creando la estación meteorológica, hoy toca programar , la dirección del viento , y velocidad del viento, con anemómetro y una veleta ,
Lo primero es buscar la información técnica del anemómetro y la veleta, el sensor de la dirección del viento trabaja en un rango de alimentación de 7 a 24v DC , y el rango de salida es de 0.4 a 2v, siendo 0.4v como ,0 grados dirección NORTE, opté por este rango por que es el mas próximo a las entradas analógicas del ARDUINO , que van desde 0 - 5v.
La formula para el escalado de la variable y determinar las dirección del viento con 16 posiciones ,en la roza de los vientos, es la siguiente
Variable dirección del viento=(Imput de voltaje-0.4)/16*360
He creado una función para tener el código mas limpio y legible , ya que se esta complicado , y poder solucionar cualquier error fácil mente, al final de esta entrada pondré el código.
Para el sensor de la velocidad del viento, lo mismo la tensión de alimentación esta entre 7 y 24 vDC, y el rango de salida del sensor 0 a 5v, que me viene muy bien para el rango de la señal analógica del ARDUINO como antes aclare, donde 0 v es 0m/s, el ramgo de medida del anemómetro es de 0 a 34.4m/s. la formula para el calculo de la variable la siguiente :
Variable de la velocidad del viento =((IMPUT voltaje -0.4)*1.6)*34.4
También cree una función el código esta mas abajo.
*/CODIGO VELETA , POR CELSO DEVORA.
String direccionViento(){
String direccion;
float m= analogRead(A8);
float volt =m*5/1024;
if (volt>=0.40 && volt<0.52){
direccion ="NORTE";
return direccion ;
}
else if (volt>=0.52 && volt<0.62){
direccion ="NNE";
return direccion ;
}
else if (volt>=0.62 && volt<0.72){
direccion ="NE";
return direccion ;
}
else if (volt>=0.72 && volt<0.82){
direccion ="ENE";
return direccion ;
}
else if (volt>=0.82 && volt<0.92){
direccion ="ESTE";
return direccion ;
}
else if (volt>=0.92 && volt<1.02){
direccion ="ESE";
return direccion ;
}
else if (volt>=1.02 && volt<1.12){
direccion ="SE";
return direccion ;
}
else if (volt>=1.12 && volt<1.22){
direccion ="SSE";
return direccion ;
}
else if (volt>=1.22 && volt<1.32){
direccion ="SUR";
return direccion ;
}
else if (volt>=1.32 && volt<1.42){
direccion ="SSO";
return direccion ;
}
else if (volt>=1.42 && volt<1.52){
direccion ="SO";
return direccion ;
}
else if (volt>=1.52 && volt<1.62){
direccion ="OSO";
return direccion ;
}
else if (volt>=1.62 && volt<1.72){
direccion ="OESTE";
return direccion ;
}
else if (volt>=1.72 && volt<1.82){
direccion ="ONO";
return direccion ;
}
else if (volt>=1.82 && volt<1.92){
direccion ="NO";
return direccion ;
}
else if (volt>=1.92 && volt<=2.06){
direccion ="NNO";
return direccion ;
Serial.println("NNO");
}
// delay (1000);
}
float direGrados (){
float m= analogRead(A8);
float volt =m*5/1024;
float grados=(((volt-0.4)/16)*360)*10;
return grados;
}
Esta es la función para el anemómetro:
float velocidadViento(){
float m= analogRead(A10);
float volt =m*5/1024;
float velo=(volt-0.024)/1.6*32.4; ///0.024
if(velo<=0){
velo=0;
}
return velo;
}
float velocidadViento(){
float m= analogRead(A10);
float volt =m*5/1024;
float velo=(volt-0.024)/1.6*32.4; ///0.024
if(velo<=0){
velo=0;
}
return velo;
}