Medidor de Velocidade Papel Alumínio
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;
- define sensor_1 22 // Pino do sensor
- define sensor_2 53 // Pino do sensor
- 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);
}
}