Fordonshastighetsdetektorkrets för trafikpolisen

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi konstruera en krets som kan mäta hastigheten på alla fordon på vägar och motorvägar. Den föreslagna kretsen hålls stilla på en plats där fordonen misstänks vara för höga. Om något fordon överskrider hastighetsgränsen varnar kretsen omedelbart. Vi kommer att titta på koden, kretsschemat och logiken hur fordonets hastighet mäts.

Mål

Över fortkörning orsakar 75% trafikolyckor enligt olycksfallsrapporten 2015 i Indien, det är ett enormt antal. De flesta trafikpoliser försöker hålla kvar bilisterna som farligt kör sitt fordon utanför stadens hastighetsgräns.



Inte varje gång en trafikpolis kan stoppa ett överkörningsfordon och ladda dem. Så en enhet som kallas hastighetskamera är installerad där bilisterna misstänks vara överhastiga, såsom frekventa olycksutsatta områden, korsningar etc.

Vi kommer att bygga något som liknar hastighetskamera, men på ett mycket förenklat sätt, som kan installeras på ett campus som skola, college eller IT-parker eller bara som ett roligt projekt.



Det föreslagna projektet består av en 16 x 2 LCD-skärm för att visa hastigheten för varje fordon som passerar genom två laserstrålar som är placerade isär exakt 10 meter för att mäta fordonets hastighet medan de avbryter laserstrålarna.

En summer piper när ett fordon passerar, vilket indikerar att ett fordon detekteras och hastigheten för varje fordon kommer att visas på LCD-skärmen. När ett fordon överskrider hastighetsgränsen pipar summern kontinuerligt och fordonets hastighet visas på displayen.

OBS: Fordonets hastighet visas på LCD oavsett om fordonet går över hastighet eller under hastighet.

Låt oss nu se logiken bakom kretsen för att mäta hastighet.

Vi känner alla till en enkel formel som kallas hastighet - avstånd - tidformel.
Hastighet = Avstånd / Tid.

• Hastighet i meter per sekund,
• Avstånd i meter,
• Tid i sekunder.

För att känna till hastigheten måste vi veta att avståndet säger ”x” som ett fordon har rest och hur lång tid det tar att täcka det avståndet ”x”.

För att göra detta sätter vi upp två laserstrålar och två LDR: er på 10 meters avstånd på följande sätt:

trafikfordonets hastighetsmått

Vi vet att avståndet är 10 meter vilket är fast, nu måste vi veta tiden i ekvationen.

Tiden kommer att beräknas av Arduino, när fordonet avbryter 'startlasern', startar timern och när fordonet avbryter 'slutlasern' stannar timern och tillämpar värdena på ekvationen Arduino hittar fordonets hastighet.

Observera att fordonets hastighet bara detekteras i en riktning, dvs. starta laser för att stoppa laser, för att upptäcka fordonet i en annan riktning måste en annan samma inställning placeras i motsatt riktning. Så det här är perfekt för platser som skola, collage etc. där de har IN- och UT-portar.

Låt oss nu se det schematiska diagrammet:

Anslutning mellan Arduino och display:

LCD fordonshastighetsvisning

Där ovan krets är självförklarande och anslut bara ledningarna enligt kretsen. Justera 10K potentiometern för att justera skärmens kontrast.

Ytterligare ledningsdetaljer:

Hastighetsfordons distansmätning av ledningar

Ovanstående krets består av Arduino, 4 tryckknappar, två 10K neddragningsresistorer (ändra inte värdet på motstånd), två LDR och en summer. Funktionen för fyra tryckknappar kommer att förklaras inom kort. Låt oss nu se hur du monterar LDR korrekt.

LDR mouting för fordonshastighetsdetektering

LDR måste jag täcka från solljuset ordentligt, bara laserstrålen ska slå LDR. Se till att din lasermodul är tillräckligt kraftfull för att fungera i en stark solsken.
Du kan använda ett PVC-rör för ovanstående ändamål och måla det svart inuti röret. Glöm inte att täcka över den främre delen, använd din kreativitet för att uppnå detta.

Programkod:

// ----------- Developed by R.GIRISH ---------//
#include
#include
const int rs = 7
const int en = 6
const int d4 = 5
const int d5 = 4
const int d6 = 3
const int d7 = 2
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int up = A0
const int down = A1
const int Set = A2
const int change = A3
const int start = 8
const int End = 9
const int buzzer = 10
const float km_h = 3.6
int distance = 10 // In meters.
int variable = 0
int count = 0
int address = 0
int value = 100
int speed_address = 1
int speed_value = 0
int i = 0
float ms = 0
float Seconds = 0
float Speed = 0
boolean buzz = false
boolean laser = false
boolean x = false
boolean y = false
void setup()
{
pinMode(start, INPUT)
pinMode(End, INPUT)
pinMode(up, INPUT)
pinMode(down, INPUT)
pinMode(Set, INPUT)
pinMode(change, INPUT)
pinMode(buzzer, OUTPUT)
digitalWrite(change, HIGH)
digitalWrite(up, HIGH)
digitalWrite(down, HIGH)
digitalWrite(Set, HIGH)
digitalWrite(buzzer, LOW)
lcd.begin(16, 2)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F(' Vehicle Speed'))
lcd.setCursor(0, 1)
lcd.print(F(' detector'))
delay(1500)
if (EEPROM.read(address) != value)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Set Speed Limit')
lcd.setCursor(0, 1)
lcd.print('km/h:')
lcd.setCursor(6, 1)
lcd.print(count)
while (x == false)
{
if (digitalRead(up) == LOW)
{
lcd.setCursor(6, 1)
count = count + 1
lcd.print(count)
delay(200)
}
if (digitalRead(down) == LOW)
{
lcd.setCursor(6, 1)
count = count - 1
lcd.print(count)
delay(200)
}
if (digitalRead(Set) == LOW)
{
speed_value = count
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Speed Limit is')
lcd.setCursor(0, 1)
lcd.print('set to ')
lcd.print(speed_value)
lcd.print(' km/h')
EEPROM.write(speed_address, speed_value)
delay(2000)
x = true
}
}
EEPROM.write(address, value)
}
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Testing Laser')
lcd.setCursor(0, 1)
lcd.print('Alignment....')
delay(1500)
while (laser == false)
{
if (digitalRead(start) == HIGH && digitalRead(End) == HIGH)
{
laser = true
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Laser Alignment')
lcd.setCursor(0, 1)
lcd.print('Status: OK')
delay(1500)
}
while (digitalRead(start) == LOW && digitalRead(End) == LOW)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Both Lasers are')
lcd.setCursor(0, 1)
lcd.print('not Aligned')
delay(1000)
}
while (digitalRead(start) == LOW)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Start Laser not')
lcd.setCursor(0, 1)
lcd.print('Aligned')
delay(1000)
}
while (digitalRead(End) == LOW)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('End Laser not')
lcd.setCursor(0, 1)
lcd.print('Aligned')
delay(1000)
}
}
lcd.clear()
}
void loop()
{
if (digitalRead(change) == LOW)
{
change_limit()
}
if (digitalRead(start) == LOW)
{
variable = 1
buzz = true
while (variable == 1)
{
ms = ms + 1
delay(1)
if (digitalRead(End) == LOW)
{
variable = 0
}
}
Seconds = ms / 1000
ms = 0
}
if (Speed {
y = true
}
Speed = distance / Seconds
Speed = Speed * km_h
if (isinf(Speed))
{
lcd.setCursor(0, 0)
lcd.print('Speed:0.00')
lcd.print(' km/h ')
}
else
{
lcd.setCursor(0, 0)
lcd.print('Speed:')
lcd.print(Speed)
lcd.print('km/h ')
lcd.setCursor(0, 1)
lcd.print(' ')
if (buzz == true)
{
buzz = false
digitalWrite(buzzer, HIGH)
delay(100)
digitalWrite(buzzer, LOW)
}
if (Speed > EEPROM.read(speed_address))
{
lcd.setCursor(0, 0)
lcd.print('Speed:')
lcd.print(Speed)
lcd.print('km/h ')
lcd.setCursor(0, 1)
lcd.print('Overspeed Alert!')
if (y == true)
{
y = false
for (i = 0 i <45 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
}
}
}
void change_limit()
{
x = false
count = EEPROM.read(speed_address)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Set Speed Limit')
lcd.setCursor(0, 1)
lcd.print('km/h:')
lcd.setCursor(6, 1)
lcd.print(count)
while (x == false)
{
if (digitalRead(up) == LOW)
{
lcd.setCursor(6, 1)
count = count + 1
lcd.print(count)
delay(200)
}
if (digitalRead(down) == LOW)
{
lcd.setCursor(6, 1)
count = count - 1
lcd.print(count)
delay(200)
}
if (digitalRead(Set) == LOW)
{
speed_value = count
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Speed Limit is')
lcd.setCursor(0, 1)
lcd.print('set to ')
lcd.print(speed_value)
lcd.print(' km/h')
EEPROM.write(speed_address, speed_value)
delay(2000)
x = true
lcd.clear()
}
}
}
// ----------- Developed by R.GIRISH ---------//

Låt oss nu se hur man använder den här kretsen:

• Slutför din krets och ladda upp koden.
• Avståndet mellan två lasrar / LDR ska vara exakt 10 meter, inte mindre eller inte mer, annars beräknas hastigheten felberäknas (visas i det första diagrammet).
• Avståndet mellan lasern och LDR kan efter eget val och omständigheter.
• Kretsen kontrollerar om laserjustering inte sker med LDR, om någon, vänligen korrigera den enligt informationen som visas på LCD-skärmen.
• Initialt kommer kretsen att be dig att ange ett hastighetsgränsvärde i km / h utöver vilket kretsen varnar, genom att trycka uppåt (S1) och nedåt (S2) kan du ändra numret på displayen och trycka på set (S3), detta värdet kommer att sparas.
• För att ändra denna hastighetsgräns, tryck på knappen S4 så kan du ställa in en ny hastighetsgräns.
• Ta nu en motorcykel i 30 km / h och avbryt laserstrålarna, kretsen ska visa dig ett nummer som ligger mycket nära 30 km / h.
• Du är klar och din krets är redo att tjäna din campus säkerhet.

Författarens prototyp:

prototyp för fordonshastighetsdetektering

Om du har några frågor angående denna trafikpolis fordonshastighetsdetektorkrets, vänligen fråga i kommentarsektionen, du kan få ett snabbt svar.




Tidigare: PIR-sensordatablad, Pinout-specifikationer, arbete Nästa: Fjärrkontrollstestkrets