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

Componente Especificação Quantidade
Arduino Nano Nano 1
IR Sensor 2
LCD 16X2 1
Power Adaptor 12 Volt 1
Switch DPDT 1

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.

 

Visits: 3 Visits: 1198966