Detector de velocidade do carro usando Arduino

Tempo de leitura: 5 minutes

Projeto de detector de velocidade do carro

Neste projeto, vou mostrar como medir a velocidade de um carro (ou homem) em movimento de fora. O departamento de polícia usa esse tipo de sistema para evitar o excesso de velocidade dos veículos. Nosso projeto é um pouco diferente do sistema usado pela polícia, mas o conceito geral do detector de velocidade do carro é o mesmo.

Neste projeto, dois sensores IR são colocados separados em um lado da estrada. Quando qualquer veículo cruza os sensores, o cronômetro interno do Arduino conta o tempo entre a ativação do sensor. Agora a velocidade é medida usando uma relação simples de tempo de distância.

Trabalhando

Ambos os sensores IR são conectados ao pino de interrupção do Arduino e detectam a onda descendente. O objetivo de usar interrupção é melhorar a eficiência do sistema. Um LCD é conectado ao Arduino e a velocidade medida é mostrada no LCD.

Quando o carro se move na frente do primeiro sensor, ele dá o sinal de saída para o Arduino, o Arduino detecta a onda caindo, agora o cronômetro interno do Arduino é iniciado e quando o carro se move na frente do segundo sensor, o cronômetro é parado.

Agora o Arduino mede a velocidade do carro, que é medida pela relação distância-tempo

Velocidade = Distância ÷ Tempo

  • Velocidade: velocidade do carro
  • Distância: distância entre sensores
  • Tempo medido pelo Arduino

 

Sensor IR:

O sensor IR inclui um LED IR e um fototransistor. Quando um objeto passa entre os sensores, a luz é refletida do objeto e atinge o fototransistor. Um amplificador operacional IC (LM358) é usado e o fototransistor é conectado a ele. Quando o objeto chega na frente do sensor, ele envia um sinal lógico HIGH para o Arduino.

 

Arduino:

Um Arduino Nano é usado como unidade de controle. Você pode usar quaisquer outras variantes do Arduino de acordo com sua escolha.

Componentes Usados

ComponenteEspecificaçãoQuantidade
Arduino NanoNano1
IR Sensor2
LCD16X21
Power Adaptor12 Volt1
SwitchDPDT1

Circuito detector de velocidade do carro

O diagrama do circuito é mostrado na figura abaixo. Se você for fazer um circuito em uma placa de ensaio ou PCB de uso geral, a figura abaixo é útil.

 

Para gravação

Detector de velocidade do carro usando Arduino – PCB Design

 

Circuito detector de velocidade do carro usando Arduino

 

No Arduino, os pinos D2 e D3 são interrompidos, onde D2 é INT0 e D3 é INT1. Os pinos de saída dos sensores IR são conectados a esses pinos.

 

O LCD está conectado aos pinos D4 a D9 do Arduino, onde D4 está conectado a EN, D5 está conectado a RS e D6 a D9 do Arduino estão conectados aos pinos D4 a D7 do Arduino. Uma predefinição é conectada ao terceiro pino do LCD, que é o controle de contraste. Os pinos 15 e 16 são usados para a luz de fundo do LCD.

 

Programa / Código

#include<LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

int sensor1 = 2;
int sensor2 = 3;

int Time1;
int Time2;
int Time;
int flag = 0;

int distance = 27;

float Speed;

void setup() {
  attachInterrupt(0,fun1,RISING);
  attachInterrupt(1,fun2,FALLING);

  lcd.begin(16,2);
  lcd.clear();
  lcd.print("MEDIÇÃO DE VELOCIDADE");
}

void fun1()
{
  Time1 = millis(); 
  if (flag == 0) {
     flag = 1;
  } else {
     flag = 0;
  }
}

void fun2()
{
  Time2 = millis();
  if (flag == 0) {flag = 1;}
  else {flag = 0;}
}

void loop() {
  if (flag == 0) {
     if (Time1 > Time2) { 
        Time = Time1 - Time2;  Speed = (distance*1000)/Time;
     } else if (Time2 > Time1) {
       Time = Time2 - Time1;  Speed = (distance*1000)/Time;
     }  else {
        Speed = 0;
     }
  }
  
  if (Speed == 0) { 
    lcd.setCursor(0, 1); 
    lcd.print(".......OK......."); 
  }  else { 
    lcd.setCursor(2, 1); 
    lcd.print(Speed);
    lcd.print(" cm/sec");
    delay(10000);
    Time1 = 0;
    Time2 = 0;
  }
}

 

No início do código, um arquivo de cabeçalho é declarado pelo nome “LiquidCrystal.h”, que é usado para o display LCD. Na próxima linha os pinos do LCD são declarados na função “LiquidCrystal lcd (4,5,6,7,8,9)”, o número entre colchetes mostra os pinos do Arduino que estão conectados ao LCD.

Nas linhas 4 e 5, dois inteiros são declarados pelo nome sensor1 e sensor2, são pinos de pinos do Arduino que são conectados a sensores IR.

Depois disso, 4 inteiros são declarados por nome Time1, Time2, Time e flag. Onde “Time1” é o tempo medido quando “sensor1” é ativado e “Time2” é o tempo medido quando “senaor2” é ativado. O tempo inteiro é a diferença de “Time1” e “Time2”, que é equivalente ao tempo gasto pelo carro para ir de “sensor1” para “sensor2” ou “sensor2” para “sensor1”

Agora, um flutuador é declarado pelo nome “Velocidade”, que é a velocidade medida do carro em execução.

No início de “void setup()”, duas interrupções são anexadas pela função “attachInterrupt (0, fun1, Falling)” que significa que quando “interrupt0 (INT0)” detecta a onda em queda, fun1 será executado.

Agora o LCD é iniciado usando a função “lcd.begin(16,2)”. O LCD é limpo usando a função “lcd.clear()” e “MEDIÇÃO DE VELOCIDADE” é impresso no LCD usando a função “lcd.print”

No “void fun1()” será executado quando “interrupt0 (INT0)” ativado, nesta função o tempo atual é medido usando “Time1 = millis()”. Depois disso, uma condição “if else” é usada, torna o “sinalizador” 1 quando é 0 e torna 0 quando é 1.

Depois que “void fun2()” é usado, é exatamente o mesmo que “void fun1 ()”, mas é executado quando “interrupt1 (INT1)” é ativado.

No “void loop()”, em primeiro lugar, o tempo é medido usando “Time1” e “Time2”, o “Time” deve ser positivo, então “if else” é usado para torná-lo positivo. Mas este loop é executado quando o sinalizador é igual a zero, portanto, uma condição “se” é usada. Se “Time1” e “Time2” forem iguais, “Speed” será zero.

Na linha 47 uma condição ativada quando a velocidade é igual a zero, neste momento “… .OK….” é impresso no segundo raw do LCD, que indica que o sistema está pronto para uso.

Na linha 51, a velocidade é impressa no LCD após a impressão de “Time1” e “Time2” se tornará zero.

Calibração

Na medição da distância de velocidade, a relação de tempo é usada. Portanto, a distância entre os sensores é muito importante, por isso precisamos calibrar o sistema.

Na linha, um inteiro é declarado por nome de distância que é igual a 27, essa é a distância entre os dois sensores. Essa distância pode variar de acordo com o seu arranjo, então meça a distância em centímetros e mude aqui.