Objetivo:
Criar um projeto Arduíno para detecção da velocidade do vento horizontal.
*Anemômetro
Montagem do Circuito:
Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.
A montagem física do referente projeto é extremamente simples já que trabalha com somente dois fios do anemômetro e um Arduino, o único detalhe que podemos destacar para a instalação é a utilização de um resistor em Pull Down conectado diretamente ao pino digital 2 do Arduino em um dos fios do sensor e uma fonte de energia de 5V que pode ser o próprio pino VCC do Arduino no outro fio.
const float pi = 3.14159265; //Número de pi
int period = 5000; //Tempo de medida(miliseconds)
int delaytime = 2000; //Invervalo entre as amostras (miliseconds)
int radius = 147; //Raio do anemometro(mm)
// --- Variáveis Globais ---
unsigned int Sample = 0; //Armazena o número de amostras
unsigned int counter = 0; //Contador para o sensor
unsigned int RPM = 0; //Rotações por minuto
float speedwind = 0; //Velocidade do vento (m/s)
float windspeed = 0; //Velocidade do vento (km/h)
// --- Configurações Inicias ---
void setup() {
pinMode(2, INPUT); //configura o digital 2 como entrada
digitalWrite(2, HIGH); //internall pull-up active
Serial.begin(9600); //inicia serial em 9600 baud rate
} //end setup
// --- Loop Infinito ---
void loop() {
Sample++;
Serial.print(Sample);
Serial.print(": Inicia Leitura...");
windvelocity();
Serial.println(" Finalizado.");
Serial.print("Contador: ");
Serial.print(counter);
Serial.print("; RPM: ");
RPMcalc();
Serial.print(RPM);
Serial.print("; Vel. Vento: ");
//*****************************************************************
//print m/s
WindSpeed();
Serial.print(windspeed);
Serial.print(" [m/s] ");
//*****************************************************************
//print km/h
SpeedWind();
Serial.print(speedwind);
Serial.print(" [km/h] ");
Serial.println();
delay(delaytime); //taxa de atualização
} //end setup
//Função para medir velocidade do vento
void windvelocity() {
speedwind = 0;
windspeed = 0;
counter = 0;
attachInterrupt(0, addcount, RISING);
unsigned long millis();
long startTime = millis();
while (millis() < startTime + period) {}
}
//Função para calcular o RPM
void RPMcalc() {
RPM = ((counter) * 60) / (period / 1000); // Calculate revolutions per minute (RPM)
}
//Velocidade do vento em m/s
void WindSpeed() {
windspeed = ((4 * pi * radius * RPM) / 60) / 1000; //Calcula a velocidade do vento em m/s
} //end WindSpeed
//Velocidade do vento em km/h
void SpeedWind() {
speedwind = (((4 * pi * radius * RPM) / 60) / 1000) * 3.6; //Calcula velocidade do vento em km/h
} //end SpeedWind
//Incrementa contador
void addcount() {
counter++;
}
Componentes necessários:
*Protoboard;
*1 sensor reed switch;
*Dois fios Jumper macho/macho e dois fio Jumper fêmea/macho;
*Resistore de 10000 ohms;
*Um cabo USB;
*Um computador com a IDE do Arduino instalada;
*Arduino MEGA 2560.
*1 anemômetro- sensor de velocidade do vento;
*1 sensor reed switch;
*Dois fios Jumper macho/macho e dois fio Jumper fêmea/macho;
*Resistore de 10000 ohms;
*Um cabo USB;
*Um computador com a IDE do Arduino instalada;
*Arduino MEGA 2560.
*1 anemômetro- sensor de velocidade do vento;
*Anemômetro
Montagem do Circuito:
Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.
A montagem física do referente projeto é extremamente simples já que trabalha com somente dois fios do anemômetro e um Arduino, o único detalhe que podemos destacar para a instalação é a utilização de um resistor em Pull Down conectado diretamente ao pino digital 2 do Arduino em um dos fios do sensor e uma fonte de energia de 5V que pode ser o próprio pino VCC do Arduino no outro fio.
(Fio preto no GND, vermelho 5v/extremidades do reed switch/ protoboard , azul digital 2 e em série com o fio vermelho e preto.)
Para coleta de dados: posicionar o anemometro logo acima do reed switch e deixa- lo mover-se com a força do vento.
Para coleta de dados: posicionar o anemometro logo acima do reed switch e deixa- lo mover-se com a força do vento.
Código do sistema
// --- Constantes ---const float pi = 3.14159265; //Número de pi
int period = 5000; //Tempo de medida(miliseconds)
int delaytime = 2000; //Invervalo entre as amostras (miliseconds)
int radius = 147; //Raio do anemometro(mm)
// --- Variáveis Globais ---
unsigned int Sample = 0; //Armazena o número de amostras
unsigned int counter = 0; //Contador para o sensor
unsigned int RPM = 0; //Rotações por minuto
float speedwind = 0; //Velocidade do vento (m/s)
float windspeed = 0; //Velocidade do vento (km/h)
// --- Configurações Inicias ---
void setup() {
pinMode(2, INPUT); //configura o digital 2 como entrada
digitalWrite(2, HIGH); //internall pull-up active
Serial.begin(9600); //inicia serial em 9600 baud rate
} //end setup
// --- Loop Infinito ---
void loop() {
Sample++;
Serial.print(Sample);
Serial.print(": Inicia Leitura...");
windvelocity();
Serial.println(" Finalizado.");
Serial.print("Contador: ");
Serial.print(counter);
Serial.print("; RPM: ");
RPMcalc();
Serial.print(RPM);
Serial.print("; Vel. Vento: ");
//*****************************************************************
//print m/s
WindSpeed();
Serial.print(windspeed);
Serial.print(" [m/s] ");
//*****************************************************************
//print km/h
SpeedWind();
Serial.print(speedwind);
Serial.print(" [km/h] ");
Serial.println();
delay(delaytime); //taxa de atualização
} //end setup
//Função para medir velocidade do vento
void windvelocity() {
speedwind = 0;
windspeed = 0;
counter = 0;
attachInterrupt(0, addcount, RISING);
unsigned long millis();
long startTime = millis();
while (millis() < startTime + period) {}
}
//Função para calcular o RPM
void RPMcalc() {
RPM = ((counter) * 60) / (period / 1000); // Calculate revolutions per minute (RPM)
}
//Velocidade do vento em m/s
void WindSpeed() {
windspeed = ((4 * pi * radius * RPM) / 60) / 1000; //Calcula a velocidade do vento em m/s
} //end WindSpeed
//Velocidade do vento em km/h
void SpeedWind() {
speedwind = (((4 * pi * radius * RPM) / 60) / 1000) * 3.6; //Calcula velocidade do vento em km/h
} //end SpeedWind
//Incrementa contador
void addcount() {
counter++;
}