Medidor de Velocidade

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar

Circuito

Bem simples, apenas um Arduino com o GND ligado a um dos trilhos e deois sensores que são lâminas de papel aluminio por cima deste trilho, quando o trem passa ele fecha contato e detecta que o momento, quando passa pelo segundo o Arduino calcula a velocidade e manda via serial.

TODO

  • colocar um display para exibir a velocidade
  • melhorar o código com uma função para fazer o Seria.print

Código

unsigned long Time = 0; unsigned long delta_time = 0;

  1. define sensor_1 22 // Pino do sensor
  2. define sensor_2 53 // Pino do sensor
  3. define Esperando 13 // Pino do LED de leitura

float dist = 74; // Distância entre os sensores em mm /*

Escala H0 1:87

Velocidade = Espaço / Tempo v = dist [mm] / Time [micro_sec] v = dist/Time*3600 [km/h] v = dist/Time*3600*87[km/h em escala real]


  • /


void setup() {

 pinMode(sensor_1, INPUT_PULLUP);
 pinMode(sensor_2, INPUT_PULLUP);
 pinMode(Esperando, OUTPUT);
 Serial.begin(9600);
 digitalWrite(Esperando,LOW);

}

void loop() {

 if (!digitalRead(sensor_1)) {
   Time = micros();
   while (digitalRead(sensor_2)) {
     digitalWrite(Esperando,HIGH);
   }
   digitalWrite(Esperando,LOW);
   delta_time = micros() - Time;
   Serial.println(delta_time);
   Serial.println(115*313.2/delta_time/1000);
   Serial.println();
   delay(5000);
 }
 if (!digitalRead(sensor_2)) {
   Time = micros();
   while (digitalRead(sensor_1)) {
     digitalWrite(Esperando,HIGH);
   }
   digitalWrite(Esperando,LOW);
   delta_time = micros() - Time;
   Serial.print("Time: ");
   Serial.println(Time);
   Serial.print("Delta: ");
   Serial.println(delta_time);
   Serial.print("Velocidade: ");
   Serial.print(dist/delta_time);
   Serial.println("mm/us");
   Serial.print("Velocidade: ");
   Serial.print(dist*3600*87/delta_time);
   Serial.println("Km/h");
   Serial.println();
   delay(5000);
 }

}