Anemómetro integrado en Excontrol con Arduino

Podremos compartir las instalaciones domóticas que tenemos, así podremos dar ideas a otros compañeros del foro.
Responder
Avatar de Usuario
Electra
Mensajes: 116
Registrado: Mar Feb 12, 2019 9:10 pm
Ubicación: Albacete

Anemómetro integrado en Excontrol con Arduino

Mensaje por Electra » Sab Nov 23, 2019 9:09 pm

Después de varios años con ExControl funcionando en mi casa como sistema domótico y tras instalar unos toldos, tenía la necesidad de monitorizar la velocidad del viento para que en caso de que éste llegara a un determinado nivel pudiera cerrar los toldos y evitar males mayores.
Por la red busque algo ya hecho y encontré una estación metereológica con arduino a la que podía adaptar a nuestro sistema:
http://cactus.io/hookups/weather/anemom ... r-software

Ya sólo falta adqurir la pieza que nos transforme la velocidad del viento en pulsos y me costó bastante encontrarla, pero básicamente es un repuesto para estación metereológica, yo lo adquirí en esta tienda:
http://www.electronicaprobas.net/tienda ... 14603.html
Anemometro_WS1080.jpg
Internamente lleva un pequeño pulsador magnético que abre y cierra los 2 contactos según la velocidad del viento y que se conectan a nuestro arduino como una entrada más, OJO SÓLO EN UN PIN TIPO INTERRUPT (en el ejemplo es el pin 2)

Pues ahora toca adaptar el código a Excontrol con el configurador

Primero creamos 2 sensores tipo float
Después vamos introduciendo código de usuario
USER CODE LIBRARY START

Código: Seleccionar todo

//ANEMOMETRO
			  
#include "TimerOne.h"          // Timer Interrupt set to 2 second for read sensors
#include <math.h>

#define WindSensorPin (2)      // The pin location of the anemometer sensor
GLOBAL VARIABLES ZONE

Código: Seleccionar todo

///VIENTO
volatile bool IsSampleRequired;       // this is set true every 2.5s. Get wind speed
volatile unsigned int  TimerCount;    // used to determine 2.5sec timer count
volatile unsigned long Rotations;     // cup rotation counter used in interrupt routine
volatile unsigned long ContactBounceTime;  // Timer to avoid contact bounce in interrupt routine

float WindSpeed=0;        // speed kilometers per hour
float speedmax=0;
void UserSetup() { //EQUIVALENT ARDUINO SETUP FUNCTION

Código: Seleccionar todo

                   //ANEMOMETRO  
  
  IsSampleRequired = false;
  
  TimerCount = 0;
  Rotations = 0;   // Set Rotations to 0 ready for calculations
  
  Serial.begin(9600);

  pinMode(WindSensorPin, INPUT);
  attachInterrupt(digitalPinToInterrupt(WindSensorPin), isr_rotation, FALLING);

  Serial.println("Davis Anemometer Test");
  Serial.println("Speed (kmh)     \ms\tDirection\tStrength");

  // Setup the timer intterupt
  Timer1.initialize(500000);
  Timer1.attachInterrupt(isr_timer);
void UserLoop(){ //EQUIVALENT ARDUINO LOOP FUNCTION

Código: Seleccionar todo

       //ANEMOMETRO

  if(IsSampleRequired)
  {
     // convert to km/h using the formula V=P(2.25/T)
     // V = P(2.25/2.5)*0,621371 = P * 0,5592339   Millas a Kilometros
     WindSpeed = Rotations / 1,79; // 1/0,5592339=1,788160553213959
     Rotations = 0;   // Reset count for next sample
     
     IsSampleRequired = false; 
     
     Serial.print(WindSpeed);    Serial.print("\t\t");
     Serial.print(ms(WindSpeed));    Serial.print("\t"); 

  }
void LoopNewSecond(){//This event occurs every second

Código: Seleccionar todo

  //ANEMOMETRO
     if(WindSpeed>=speedmax){
     speedmax=WindSpeed;
   }
      
  if(WindSpeed/10>Consignas[2]){viento=true;Pantalla=119;SelectScene(3);SetAlarm(3);} // Se selecciona la escena(3)
  else{viento=false;ResetAlarm(3);}
//USER FUNCTIONS. CREATE YOUR FUNCTION HERE

Código: Seleccionar todo

           //VIENTO
// isr routine fr timer interrupt
void isr_timer() {
  
  TimerCount++;
  
  if(TimerCount == 50)
  {
    IsSampleRequired = true;
    TimerCount = 0;
  }
}

// This is the function that the interrupt calls to increment the rotation count
void isr_rotation ()   {

  if ((millis() - ContactBounceTime) > 15 ) {  // debounce the switch contact.
    Rotations++;
    ContactBounceTime = millis();
  }

}

// Convert km/h to m/s
float ms(float speed) {
   return speed * 0.2778;
}
Y este es el resultado:
Anemometro_WS1080.jpg
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.

Avatar de Usuario
Sigmundfreud
Mensajes: 414
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por Sigmundfreud » Dom Nov 24, 2019 8:20 am

Te ha quedado genial, y veo que difiere bastante las medidas tomadas con los datos de aemet
Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Juan Ramon
Mensajes: 347
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por Juan Ramon » Dom Nov 24, 2019 8:39 am

Muchas gracias Electra por compartirlo y por las explicaciones.
Juan Ramón.

Avatar de Usuario
PAEYA
Mensajes: 47
Registrado: Mar Feb 12, 2019 8:40 pm

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por PAEYA » Dom Nov 24, 2019 9:43 pm

Envidia sana :lol: :lol:

Jaime
Mensajes: 14
Registrado: Mié Mar 27, 2019 7:28 pm

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por Jaime » Dom Nov 24, 2019 10:00 pm

Solo puedo decirte, IMPRESIONANTE

Avatar de Usuario
manuch
Mensajes: 93
Registrado: Mar Feb 12, 2019 8:49 pm

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por manuch » Dom Dic 08, 2019 8:22 pm

Excelente aporte Electra, muchas gracias por compartirlo.
"Una experiencia nunca es un fracaso, pues siempre viene a demostrar algo" Edison

microlun
Mensajes: 33
Registrado: Jue Mar 21, 2019 11:26 am

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por microlun » Mar Dic 10, 2019 11:09 am

Muy bueno.
Gracias por compartir.

microlun
Mensajes: 33
Registrado: Jue Mar 21, 2019 11:26 am

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por microlun » Vie May 29, 2020 6:07 pm

Hola...
Necesito colocar un anemómetro para controlar un toldo que he instalado en un panel solar de tubos de vacio.

Electra, ¿cómo te va éste que tienes?

En principio lo voy a instalar en un Mega pero quiero cambiar la central a un MKR.
¿Algunos de vosotros tenéis otro modelo?

Un saludo

Avatar de Usuario
Electra
Mensajes: 116
Registrado: Mar Feb 12, 2019 9:10 pm
Ubicación: Albacete

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por Electra » Lun Jun 01, 2020 3:45 am

Hola microlun
A mí me funciona bien, incluso ahora más fino a la hora de marcar la velocidad del viento pues con el código se puede calibrar mejor.
Yo también tengo puesta una persiana en las placas solares para que el líquido no se caliente en exceso.
Cuando las placas pasan de 90 ⁰C las persianas se bajan, y cuando el agua del primario baja de 60 ⁰C se suben.
El anemómetro lo uso para el toldo de la terraza.

microlun
Mensajes: 33
Registrado: Jue Mar 21, 2019 11:26 am

Re: Anemómetro integrado en Excontrol con Arduino

Mensaje por microlun » Lun Jun 01, 2020 8:20 am

Hola electra, gracias por contestar.

Pues...voy a comenzar con la tarea.

Un saludo

Responder

Volver a “Comparte tus Instalaciones”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados