2. Veleta


Descripción:

La veleta es un dispositivo capaz de determinar la dirección del viento, contando para ello de una vela capaz de pivotar sobre sí misma alineándose a la dirección del viento.

Sensor:

Este dispositivo está basado en el uso de varios cinco sensores (emisor-receptor) de infrarrojos de tipo CNY70 (datasheet).

Diseño

El circuito se basa en un array de 5 sensores CNY70, colocados en paralelo. Los sensores leen en digital (0 o 1). Hemos fabricado un código de forma circular.

Circuito:

Circuito

Código de prueba

/*  PROYECTO ARDUMETEO........ VELETA
 *
 *  Veleta creada para la I Arduino Virtualcamp, 16-17 de Julio de 2011
 *  Creado por: Nayma  con la colaboración de: David Cuartielle, Cole y madepablo
 *  
 *
 * Veleta basada en el uso de 5 sensores IR CNY70
 * Cada sensor lee un sector de un disco codificado para obtener la
 * orientación de la veleta y, por tanto, del viento que la mueve
*/

// Definición de pins analógicos a los que se conectan los sensores
#define sectorUno 1
#define sectorDos 2
#define sectorTres 3
#define sectorCuatro 4
#define sectorCinco 5

// Definición de variables
int valorUno = 0;
int valorDos = 0;
int valorTres = 0;
int valorCuatro = 0;
int valorCinco = 0;
int valor = 0;
unsigned short direccion = 0;

// Definición de constantes
char* direcciones[] = {"error", "N", "NE", "E", "SE", "S", "SO", "O", "NO"};


void setup(){
  // Configurando los pins
   pinMode(sectorUno, INPUT);
   pinMode(sectorDos, INPUT);
   pinMode(sectorTres, INPUT);
   pinMode(sectorCuatro, INPUT);
   pinMode(sectorCinco,INPUT);
  // Inicializacion del puerto serie
  Serial.begin(9600); 
}

void loop(){
  leerviento();         // Lee los sensores y calcula la dirección del viento
  mostrarviento();      // Muestra la dirección del viento por el puerto serie
  delay(100);
}

// Lee los distintos sectores y calcula la dirección del viento
void leerviento(){
  // Lee los distintos sectores
  valorUno = analogRead (sectorUno);    // Lee el sector uno
  if (valorUno  600){
    valorUno = 0;
  }
  else {
    valorUno = 1;
  } 
  valorDos = analogRead (sectorDos);      // Lee el sector dos
  if (valorDos  400) {
    valorDos = 0;
  } else{
     valorDos = 1;
  }
  // Lee el sector tres
  valorTres = analogRead (sectorTres);
   if (valorTres  400) {
    valorTres = 0;
  } else{
     valorTres = 1;
  }
  valorCuatro = analogRead (sectorCuatro);      // Lee el sector 4
  if (valorCuatro  600) {
    valorCuatro = 0;
  } else{
     valorCuatro = 1;
  }
  valorCinco = analogRead (sectorCinco);        // Lee el sector cinco
   if (valorCinco  300) {
    valorCinco = 0;
  } else{
     valorCinco = 1;
  }
  
  //Calcula la dirección del viento
  valor = valorCinco*16+valorCuatro*8+valorTres*4+valorDos*2+valorUno;
  if (valor 4 ){
     direccion = 1;       // Norte 
  }
  else if (valor =7 ){
     direccion = 2;       // Noreste 
  }
  else if (valor =11 ){
     direccion = 3;       // Este 
  }
  else if (valor =15 ){
     direccion = 4;       // Sureste 
  }
  else if (valor =19 ){
     direccion = 5;       // Sur 
  }
  else if (valor =23 ){
     direccion = 6;       // Suroeste 
  }
  else if (valor =27 ){
     direccion = 7;       // Oeste 
  }
  else if (valor =30 ){
     direccion = 8;       // Noroeste 
  }
  else {
    direccion =  0;       // error
  }
} 

// Muestra los resultados por el puerto serie
void mostrarviento(){
  // Muestra resultados parciales
  Serial.print("sensorUno = " );                              
  Serial.println(valorUno); 
  Serial.print("sensorDos = " );    
  Serial.println(valorDos); 
  Serial.print("sensorTres = " );    
  Serial.println(valorTres); 
  Serial.print("sensorCuatro = " );   
  Serial.println(valorCuatro); 
  Serial.print("sensorCinco = " );    
  Serial.println(valorCinco);
  // Muestra el resultado total
  Serial.print("valor = " );    
  Serial.println(valor);
  // Muestra la dirección del viento calculada
  Serial.print("El viento sopla del ");
  Serial.print(direcciones[direccion]);
}

   
  

Multimedia

Fotografías:

código binario circular veleta tipo pez

Video: pruebas

changed July 18, 2011