bài viết này giới thiệu chung về dự án máy dò tốc độ xe sử dụng Arduino
Dự án: Máy dò tốc độ xe sử dụng Arduino
Dự án phát hiện tốc độ xe hơi
Trong dự án này tôi sẽ cho bạn thấy làm thế nào để đo tốc độ chạy xe (hoặc người đàn ông) từ bên ngoài. Sở cảnh sát sử dụng loại hệ thống này để ngăn chặn tốc độ trên của xe. Dự án của chúng tôi là một chút khác nhau từ hệ thống được sử dụng bởi cảnh sát nhưng khái niệm phát hiện tốc độ xe tổng thể là như nhau.
Trong dự án này, hai cảm biến hồng ngoại được đặt cách nhau ở một bên đường. Khi bất kỳ chiếc xe nào đi qua các cảm biến, bộ đếm thời gian bên trong của Arduino đếm thời gian giữa kích hoạt cảm biến. Bây giờ tốc độ được đo bằng cách sử dụng mối quan hệ thời gian khoảng cách đơn giản.
Làm việc
Cả hai cảm biến hồng ngoại được kết nối với chốt ngắt của Arduino, và chúng phát hiện sóng rơi. Mục đích của việc sử dụng gián đoạn là, nó cải thiện hiệu quả của hệ thống. Màn hình LCD được kết nối với Arduino và tốc độ đo được hiển thị trên màn hình LCD. Khi xe di chuyển ở phía trước của cảm biến đầu tiên, nó cung cấp cho các tín hiệu đầu ra để Arduino, Arduino phát hiện làn sóng rơi xuống, bây giờ bộ hẹn giờ nội bộ của Arduino được bắt đầu và khi xe di chuyển ở phía trước của bộ hẹn giờ cảm biến thứ hai được dừng lại.
Bây giờ Arduino đo tốc độ của xe được đo bằng mối quan hệ thời gian khoảng cách
Speed = Distance ÷ Time
• Tốc độ: Tốc độ của xe
• Khoảng cách: Khoảng cách giữa các cảm biến
• Thời gian đo bằng Arduino
Cảm biến hồng ngoại:
Cảm biến hồng ngoại bao gồm đèn LED hồng ngoại và dẫn truyền quang. Khi một vật thể đi qua giữa các cảm biến, ánh sáng phản chiếu từ vật thể và rơi vào chất dẫn truyền quang. Một bộ khuếch đại hoạt động IC (LM358) được sử dụng và phototransistor được kết nối với nó. Khi đối tượng đến ở phía trước của cảm biến, nó sẽ gửi một tín hiệu cao hợp lý để Arduino.
Arduino:
Một Nano Arduino được sử dụng như là đơn vị kiểm soát, Bạn có thể sử dụng bất kỳ biến thể Arduino khác theo sự lựa chọn của bạn.
Các thành phần được sử dụng
Mạch dò tốc độ xe hơi
Sơ đồ mạch được hiển thị trong hình dưới đây. Nếu bạn đang đi để làm cho mạch trên breadboard hoặc mục đích chung PCB (hoặc Zero PCB), con số dưới đây là hữu ích.
Trong các chân Arduino D2 và D3 bị gián đoạn, trong đó D2 là INT0 và D3 là INT1. Chân đầu ra của các cảm biến hồng ngoại được kết nối với các chân này.
LCD được kết nối với chân D4 đến D9 của Arduino, nơi D4 được kết nối với EN, D5 được kết nối với RS và D6 đến D9 của Arduino được kết nối với D4 đến D7 pin của Arduino. Một cài đặt trước được kết nối với pin thứ ba của MÀN HÌNH LCD, đó là điều khiển tương phản. Pin 15 và 16 được sử dụng cho đèn nền của màn hình LCD.
Chương trình/Mã
Tải xuống Chương trình/Mã
Ở phần đầu của mã một tập tin tiêu đề được tuyên bố bằng tên "LiquidCrystal.h", được sử dụng cho màn hình LCD. Trong các chân dòng tiếp theo của MÀN HÌNH LCD được khai báo trong chức năng "LiquidCrystal lcd (4,5,6,7,8,9)", số trong khung hiển thị các chân của Arduino được kết nối với màn hình LCD. Trong dòng 4 và 5 hai số nguyên được khai báo bằng cảm biến tên1 và sensor2, đây là những chân của chân Arduino được kết nối với cảm biến hồng ngoại. Sau đó 4 số nguyên được khai báo bằng tên Time1, Time2, Time và flag. Trường hợp "Time1" là thời gian đo khi "sensor1" được kích hoạt và "Time2" là thời gian đo khi "senaor2" được kích hoạt.
Thời gian số nguyên là sự khác biệt của "Time1" và "Time2", tương đương với thời gian xe hơi thực hiện để đi từ "sensor1" đến "sensor2" hoặc "sensor2" thành "sensor1". Bây giờ một phao được tuyên bố bằng tên "Tốc độ" được đo tốc độ của chiếc xe đang chạy. Khi bắt đầu "void setup()" hai ngắt được gắn bởi chức năng "attachInterrupt(0, fun1, Falling)" có nghĩa là khi "interrupt0 (INT0)" phát hiện sóng rơi, fun1 sẽ chạy. Bây giờ màn hình LCD bắt đầu bằng cách sử dụng chức năng "lcd.begin(16,2)". LCD được xóa bằng cách sử dụng chức năng "lcd.clear()" và "SPEED MEASUREMENT" được in trên màn hình LCD bằng cách sử dụng chức năng "lcd.print"
Trong "void fun1()" sẽ chạy khi "interrupt0 (INT0)" kích hoạt, trong chức năng này thời gian hiện tại được đo bằng cách sử dụng "Time1 = millis()". Sau khi nó là một điều kiện "nếu khác" được sử dụng, nó làm cho "cờ" 1 khi nó là 0 và làm cho 0 khi nó là 1.
Sau khi nó "void fun2()" được sử dụng, đó là chính xác giống như "void fun1()" nhưng nó chạy khi "interrupt1 (INT1)" được kích hoạt.
Trong "void loop()" đầu tiên của mọi thời gian được đo bằng cách sử dụng "Time1" và "Time2", "Thời gian" nên được tích cực để "nếu khác" được sử dụng để làm cho nó tích cực. Nhưng vòng lặp này chạy khi cờ bằng 0 để một điều kiện "nếu" được sử dụng. Nếu "Time1" và "Time2" bằng "Tốc độ" sẽ bằng 0.
Trong dòng 47 một điều kiện kích hoạt khi tốc độ bằng 0, tại thời điểm này "....OK...." được in trên nguyên thứ hai của màn hình LCD, mà chỉ ra, hệ thống đã sẵn sàng để sử dụng. Trong dòng 51 tốc độ được in trên màn hình LCD sau khi in "Time1" và "Time2" sẽ trở thành số không.
Hiệu chuẩn
Trong việc đo khoảng cách tốc độ, mối quan hệ thời gian được sử dụng. Vì vậy, khoảng cách giữa các cảm biến là rất quan trọng, vì vậy chúng ta cần phải hiệu chỉnh hệ thống.
Trong dòng một số nguyên được khai báo bằng khoảng cách tên bằng 27, đây là khoảng cách giữa cả hai cảm biến. Khoảng cách này có thể thay đổi theo sự sắp xếp của bạn, vì vậy hãy đo khoảng cách tính bằng Cm và thay đổi ở đây.
Hotline: 0979 466 469