Κύκλωμα ανιχνευτή ταχύτητας οχήματος για τροχαία

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Σε αυτήν την ανάρτηση πρόκειται να κατασκευάσουμε ένα κύκλωμα που μπορεί να μετρήσει την ταχύτητα οποιουδήποτε οχήματος σε δρόμους και αυτοκινητόδρομους. Το προτεινόμενο κύκλωμα διατηρείται ακίνητο σε ένα μέρος όπου υπάρχουν υποψίες ότι τα οχήματα έχουν υπερβολική ταχύτητα. Εάν κάποιο όχημα υπερβεί το όριο ταχύτητας, το κύκλωμα ειδοποιεί αμέσως. Θα αναζητήσουμε τον κώδικα, το διάγραμμα κυκλώματος και τη λογική του τρόπου μέτρησης της ταχύτητας του οχήματος.

Σκοπός

Η υπερβολική ταχύτητα προκαλεί 75% τροχαία ατυχήματα σύμφωνα με την αναφορά τυχαίου θανάτου του 2015 στην Ινδία, που είναι ένας τεράστιος αριθμός. Οι περισσότεροι τροχαίοι προσπαθούν να κρατήσουν τους αυτοκινητιστές που οδηγούν επικίνδυνα το όχημά τους πέρα ​​από το όριο ταχύτητας της πόλης.



Όχι κάθε φορά που μια αστυνομία μπορεί να σταματήσει ένα υπερβολικό όχημα και να τα χρεώσει. Έτσι, εγκαθίσταται μια συσκευή που ονομάζεται κάμερα ταχύτητας όπου υπάρχουν υποψίες ότι οι αυτοκινητιστές έχουν υπερβολική ταχύτητα, όπως περιοχές με συχνές ατυχήματα, διασταυρώσεις κ.λπ.

Πρόκειται να δημιουργήσουμε κάτι παρόμοιο με την κάμερα ταχύτητας, αλλά με έναν πολύ απλουστευμένο τρόπο, ο οποίος μπορεί να εγκατασταθεί μέσα σε μια πανεπιστημιούπολη όπως σχολεία, κολέγια ή πάρκα πληροφορικής ή απλά ως ένα διασκεδαστικό έργο.



Το προτεινόμενο έργο αποτελείται από οθόνη LCD 16 x 2 για να δείξει την ταχύτητα κάθε οχήματος που διέρχεται από δύο ακτίνες λέιζερ που τοποθετούνται σε απόσταση ακριβώς 10 μέτρων για τη μέτρηση της ταχύτητας του οχήματος διακόπτοντας αυτές τις ακτίνες λέιζερ.

Ένας βομβητής θα ηχήσει ένα ηχητικό σήμα όταν ένα όχημα περνάει υποδεικνύοντας ότι ένα όχημα ανιχνεύεται και η ταχύτητα κάθε οχήματος θα εμφανίζεται στην οθόνη LCD. Όταν ένα όχημα υπερβαίνει το όριο ταχύτητας, ο βομβητής θα ηχεί συνεχώς και η ταχύτητα του οχήματος θα εμφανίζεται στην οθόνη.

ΣΗΜΕΙΩΣΗ: Η ταχύτητα του οχήματος θα εμφανίζεται σε LCD ανεξάρτητα από το εάν το όχημα υπερβαίνει την ταχύτητα ή την ταχύτητα.

Τώρα ας δούμε τη λογική πίσω από το κύκλωμα για τη μέτρηση της ταχύτητας.

Όλοι γνωρίζουμε έναν απλό τύπο που ονομάζεται τύπος ταχύτητας - απόστασης - χρόνου.
Ταχύτητα = Απόσταση / Χρόνος.

• Ταχύτητα σε μετρητή ανά δευτερόλεπτο,
• Απόσταση σε μετρητή,
• Χρόνος σε δευτερόλεπτα.

Για να γνωρίζουμε την ταχύτητα, πρέπει να γνωρίζουμε την απόσταση που λέει 'x' που διανύθηκε με ένα όχημα και ο χρόνος που απαιτείται για την κάλυψη αυτής της απόστασης 'x'.

Για να το κάνουμε αυτό, δημιουργούμε δύο ακτίνες λέιζερ και δύο LDR με απόσταση 10 μέτρων με τον ακόλουθο τρόπο:

μέτρο ταχύτητας οχήματος κίνησης

Γνωρίζουμε ότι η απόσταση είναι 10 μέτρα που είναι σταθερή, τώρα πρέπει να γνωρίζουμε τον χρόνο στην εξίσωση.

Ο χρόνος θα υπολογιστεί από τον Arduino, όταν το όχημα διακόπτει το 'λέιζερ εκκίνησης', ο χρονοδιακόπτης ξεκινά και όταν το όχημα διακόπτει το 'λέιζερ τερματισμού' ο χρονοδιακόπτης σταματά και εφαρμόζοντας τις τιμές στην εξίσωση, ο Arduino θα βρει την ταχύτητα του οχήματος.

Λάβετε υπόψη ότι η ταχύτητα του οχήματος θα ανιχνευθεί μόνο προς μία κατεύθυνση, δηλαδή εκκίνηση λέιζερ για να σταματήσει το λέιζερ, για να ανιχνεύσει το όχημα σε άλλη κατεύθυνση, μια άλλη ίδια ρύθμιση πρέπει να γίνει σε αντίθετη κατεύθυνση. Έτσι, αυτό είναι ιδανικό για μέρη όπως το σχολείο, το κολάζ κ.λπ. όπου έχουν πύλες IN και OUT.

Τώρα ας δούμε το σχηματικό διάγραμμα:

Σύνδεση μεταξύ Arduino και οθόνης:

Οθόνη ταχύτητας οχήματος LCD

Το παραπάνω κύκλωμα είναι αυτονόητο και απλώς συνδέστε την καλωδίωση σύμφωνα με το κύκλωμα. Ρυθμίστε το ποτενσιόμετρο 10K για ρύθμιση της αντίθεσης οθόνης.

Πρόσθετες λεπτομέρειες καλωδίωσης:

Ρύθμιση καλωδίωσης μέτρησης απόστασης ταχύτητας οχήματος

Το παραπάνω κύκλωμα αποτελείται από Arduino, 4 μπουτόν, δύο αντιστάσεις pull down 10K (μην αλλάζετε την τιμή των αντιστάσεων), δύο LDR και έναν βομβητή. Η λειτουργία των 4 πλήκτρων θα εξηγηθεί σύντομα. Τώρα ας δούμε πώς να προσαρμόσετε σωστά το LDR.

LDR αναφέρει για ανίχνευση ταχύτητας οχήματος

Το LDR πρέπει να καλύπτεται σωστά από το φως του ήλιου, μόνο η ακτίνα λέιζερ πρέπει να χτυπήσει το LDR. Βεβαιωθείτε ότι η μονάδα λέιζερ σας είναι αρκετά ισχυρή ώστε να λειτουργεί σε έντονη ηλιοφάνεια.
Μπορείτε να χρησιμοποιήσετε έναν σωλήνα PVC για τον παραπάνω σκοπό και να το βάψετε μαύρο μέσα στο σωλήνα. Μην ξεχάσετε να καλύψετε το μπροστινό μέρος, χρησιμοποιήστε τη δημιουργικότητά σας για να το επιτύχετε.

Κωδικός προγράμματος:

// ----------- 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 ---------//

Τώρα ας δούμε πώς να χειριστούμε αυτό το κύκλωμα:

• Ολοκληρώστε το κύκλωμα και ανεβάστε τον κωδικό.
• Η απόσταση μεταξύ δύο λέιζερ / LDR πρέπει να είναι ακριβώς 10 μέτρα, όχι λιγότερο ή περισσότερο, διαφορετικά η ταχύτητα θα υπολογίζεται εσφαλμένα (φαίνεται στο πρώτο διάγραμμα).
• Η απόσταση μεταξύ του λέιζερ και του LDR μπορεί να είναι της επιλογής σας και των περιστάσεων.
• Το κύκλωμα θα ελέγξει αν υπάρχει ευθυγράμμιση λέιζερ με LDR, εάν υπάρχει, διορθώστε το σύμφωνα με τις πληροφορίες που εμφανίζονται στην οθόνη LCD.
• Αρχικά το κύκλωμα θα σας ζητήσει να εισαγάγετε μια οριακή τιμή ταχύτητας σε km / h πέρα ​​από την οποία το κύκλωμα ειδοποιεί, πατώντας πάνω (S1) και κάτω (S2) μπορείτε να αλλάξετε τον αριθμό στην οθόνη και να πατήσετε το σετ (S3), αυτό η τιμή θα αποθηκευτεί.
• Για να αλλάξετε αυτό το όριο ταχύτητας, πατήστε το κουμπί S4 και μπορείτε να ορίσετε ένα νέο όριο ταχύτητας.
• Τώρα πάρτε μια μοτοσικλέτα με ταχύτητα 30 km / h και διακόψτε τις ακτίνες λέιζερ, το κύκλωμα θα πρέπει να σας δείχνει έναν αριθμό πολύ κοντά στα 30 km / h.
• Έχετε τελειώσει και το κύκλωμα σας είναι έτοιμο να εξυπηρετήσει την ασφάλεια της πανεπιστημιούπολης σας.

Πρωτότυπο συγγραφέα:

πρωτότυπο ανίχνευσης ταχύτητας οχήματος

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το κύκλωμα ανιχνευτή ταχύτητας οχήματος της αστυνομίας, μη διστάσετε να ρωτήσετε στην ενότητα σχολίων, μπορεί να λάβετε μια γρήγορη απάντηση.




Προηγούμενο: Φύλλο δεδομένων αισθητήρα PIR, Προδιαγραφές Pinout, Εργασία Επόμενο: Κύκλωμα δοκιμής τηλεχειριστηρίου