Mục lục:

Sử dụng Arduino để hiển thị RPM của công cụ: 10 bước (có hình ảnh)
Sử dụng Arduino để hiển thị RPM của công cụ: 10 bước (có hình ảnh)

Video: Sử dụng Arduino để hiển thị RPM của công cụ: 10 bước (có hình ảnh)

Video: Sử dụng Arduino để hiển thị RPM của công cụ: 10 bước (có hình ảnh)
Video: [Arduino 2] Giới thiệu phần cứng Arduino Uno R3 | Các chân chức năng cơ bản 2024, Tháng mười một
Anonim
Sử dụng Arduino để hiển thị RPM của công cụ
Sử dụng Arduino để hiển thị RPM của công cụ
Sử dụng Arduino để hiển thị RPM của công cụ
Sử dụng Arduino để hiển thị RPM của công cụ
Sử dụng Arduino để hiển thị RPM của công cụ
Sử dụng Arduino để hiển thị RPM của công cụ

Hướng dẫn này sẽ trình bày cách tôi sử dụng Arduino UNO R3, màn hình LCD 16x2 với I2C và dải đèn LED được sử dụng làm đồng hồ đo tốc độ động cơ và đèn chuyển số trong xe đường đua Acura Integra của tôi. Nó được viết dưới góc nhìn của một người có một số kinh nghiệm hoặc tiếp xúc với phần mềm Arduino hoặc mã hóa nói chung, phần mềm toán học MATLAB và tạo hoặc sửa đổi các mạch điện. Trong tương lai, điều này có thể được sửa đổi để dễ hiểu hơn đối với những người có ít hoặc không có kinh nghiệm về các chủ đề này.

Bước 1: Chọn dây tín hiệu

Chọn một dây tín hiệu
Chọn một dây tín hiệu

Bạn sẽ cần nhận được một tín hiệu tương quan với tốc độ động cơ. Có thể thêm một hệ thống đo tốc độ động cơ nhưng thực tế hơn nhiều là chạm vào một dây hiện có mang thông tin tốc độ động cơ. Một chiếc xe duy nhất có thể có nhiều nguồn cho việc này và nó có thể rất khác nhau, thậm chí hàng năm trên một kiểu xe duy nhất. Vì lợi ích của hướng dẫn này, tôi sẽ sử dụng ví dụ về ô tô của tôi, một đường ray được sửa đổi 2000 Acura Integra LS. Tôi phát hiện thấy trên động cơ của mình (B18B1 với OBD2) có một điện áp không sử dụng cao là 12V và giảm xuống 0V khi hoàn thành một vòng quay đầy đủ.

Những thứ sẽ giúp xác định tín hiệu tốc độ động cơ tiềm năng:

  • Sơ đồ đấu dây cho xe của bạn
  • Tìm kiếm diễn đàn cho xe của bạn liên quan đến tín hiệu động cơ / ECU
  • Một thợ cơ khí thân thiện hoặc một người đam mê xe hơi

Bước 2: Nối dây đến bảng Arduino

Nối dây đến bảng Arduino
Nối dây đến bảng Arduino
Nối dây đến bảng Arduino
Nối dây đến bảng Arduino

Khi bạn đã chọn một tín hiệu phù hợp, bạn sẽ cần phải mở rộng tín hiệu đó đến bất cứ nơi nào bạn đặt bảng Arduino của mình. Tôi quyết định đặt mìn bên trong xe, nơi từng đặt đài phát thanh, vì vậy tôi định tuyến dây điện mới từ động cơ, xuyên qua một grommet cao su trong bức tường lửa, và đến ngay khu vực đài phát thanh. Vì đã có rất nhiều hướng dẫn về cách loại bỏ, hàn và bảo vệ dây dẫn nên tôi sẽ không giải thích quá trình này.

Bước 3: Phân tích tín hiệu

Phân tích tín hiệu
Phân tích tín hiệu

Đây là nơi mọi thứ có thể trở nên phức tạp. Hiểu biết chung về phân tích và điều khiển tín hiệu sẽ giúp bạn một chặng đường dài, nhưng có thể thực hiện được nếu bạn có ít kiến thức.

Dây tín hiệu được chọn rất có thể sẽ không phát ra giá trị chính xác của tốc độ động cơ. Nó sẽ cần được định hình và sửa đổi để đưa ra số RPM động cơ chính xác mà bạn muốn. Do thực tế là mỗi chiếc xe khác nhau và dây tín hiệu được chọn có thể khác nhau, từ thời điểm này trở đi, tôi sẽ giải thích cách tôi sử dụng tín hiệu vị trí từ nhà phân phối trên Integra của mình.

Tín hiệu của tôi bình thường là 12V và giảm xuống 0V khi hoàn thành một vòng quay đầy đủ. Nếu bạn biết thời gian để hoàn thành một vòng quay đầy đủ hoặc một chu kỳ đầy đủ, điều này có thể dễ dàng được chuyển thành vòng quay / phút bằng cách sử dụng một số khái niệm cơ bản.

1 / (giây mỗi chu kỳ) = chu kỳ trên giây hoặc Hz

Số vòng quay mỗi phút = Hz * 60

Bước 4: Mã phân tích tín hiệu của bạn

Mã phân tích tín hiệu của bạn
Mã phân tích tín hiệu của bạn

Phương pháp này yêu cầu nhận được thời gian cần thiết để tín hiệu đầu vào hoàn thành một chu kỳ đầy đủ. May mắn thay, phần mềm Arduino IDE có một lệnh thực hiện chính xác điều đó, PulseIn.

Lệnh này sẽ đợi tín hiệu vượt qua ngưỡng, bắt đầu đếm và dừng đếm khi vượt qua ngưỡng một lần nữa. Có một số chi tiết cần lưu ý khi sử dụng lệnh, vì vậy tôi sẽ đưa vào một liên kết đến thông tin của PulseIn tại đây:

PulseIn sẽ trả về một giá trị tính bằng micro giây và để giữ cho phép toán đơn giản, giá trị này phải được chuyển đổi ngay lập tức thành giây bình thường. Theo phép toán ở bước trước, khoảng thời gian này có thể được tính trực tiếp thành RPM.

Lưu ý: sau khi thử và sai, tôi phát hiện ra nhà phân phối hoàn thành hai vòng quay cho mỗi vòng quay của trục khuỷu động cơ, vì vậy tôi chỉ cần chia câu trả lời của mình cho 2 để giải thích điều đó.

Bước 5: Xác định Bộ lọc

Xác định một bộ lọc
Xác định một bộ lọc

Nếu bạn may mắn, tín hiệu của bạn sẽ không có ‘nhiễu’ (dao động) và tốc độ động cơ của bạn sẽ chính xác. Trong trường hợp của tôi, có rất nhiều tiếng ồn đến từ nhà phân phối thường cho điện áp khác xa so với dự kiến. Điều này biến thành số đọc rất sai về tốc độ động cơ thực tế. Tiếng ồn này sẽ cần được lọc bỏ.

Sau một số phân tích tín hiệu, hầu như tất cả tiếng ồn đều đến ở tần số (Hz) cao hơn nhiều so với những gì mà chính động cơ phát ra (điều này đúng với hầu hết các hệ thống động lực thực tế). Điều này có nghĩa là một bộ lọc thông thấp là một ứng cử viên lý tưởng để giải quyết vấn đề này.

Một bộ lọc thông thấp cho phép các tần số thấp (mong muốn) đi qua và làm suy giảm các tần số cao (không mong muốn).

Bước 6: Lọc: Phần 1

Lọc: Phần 1
Lọc: Phần 1
Lọc: Phần 1
Lọc: Phần 1
Lọc: Phần 1
Lọc: Phần 1

Việc thiết kế bộ lọc có thể được thực hiện bằng tay, tuy nhiên việc sử dụng MATLAB sẽ tăng tốc độ này lên đáng kể nếu bạn có quyền truy cập vào phần mềm.

Bộ lọc thông thấp có thể được coi là hàm truyền (hoặc phân số) trong miền Laplace (miền tần số). Tần số đầu vào sẽ được nhân với phần này và đầu ra là một tín hiệu đã được lọc chỉ có thông tin bạn muốn sử dụng.

Biến duy nhất trong hàm là tau. Tau bằng 1 / Omega, trong đó Omega là tần số cắt bạn muốn (tính bằng radian trên giây). Tần số cắt là giới hạn mà các tần số cao hơn nó sẽ bị loại bỏ và các tần số thấp hơn nó sẽ được giữ lại.

Tôi đặt tần số cắt bằng RPM mà động cơ của tôi sẽ không bao giờ đạt được (990 RPM hoặc 165 Hz). Các đồ thị FFT hiển thị gần đúng tần số mà tín hiệu thô của tôi đang mang và các tần số phát ra từ bộ lọc.

Bước 7: Lọc: Phần 2

Lọc: Phần 2
Lọc: Phần 2
Lọc: Phần 2
Lọc: Phần 2

Ở đây MATLAB đã được sử dụng một lần nữa vì lợi ích của thời gian. Tần số cắt được xác định và từ đó chức năng truyền kết quả được hiển thị. Hãy nhớ rằng phần này chỉ áp dụng cho miền Laplace và không thể được sử dụng trực tiếp trên bộ điều khiển vi mô dựa trên thời gian như Arduino UNO R3.

Bước 8: Lọc: Phần 3

Lọc: Phần 3
Lọc: Phần 3
Lọc: Phần 3
Lọc: Phần 3

MATLAB có một lệnh sẽ chuyển một hàm liên tục (miền tần số) thành một hàm rời rạc (miền thời gian). Đầu ra của lệnh này sẽ cung cấp một phương trình có thể dễ dàng kết hợp vào mã Arduino IDE.

Bước 9: Lọc: Phần 4

Lọc: Phần 4
Lọc: Phần 4
Lọc: Phần 4
Lọc: Phần 4

Trong bản phác thảo Arduino, hãy bao gồm các biến u và y trước khi thiết lập. Lệnh float chỉ đơn giản là xác định cách biến sẽ lưu trữ dữ liệu (những thứ như giá trị lớn nhất, số thập phân, v.v.) và một liên kết đến thêm thông tin về điều này sẽ được cung cấp tại đây: https://www.arduino.cc/reference/en/language / varia…

Trong vòng lặp diễn ra quá trình chuyển đổi từ tín hiệu thô thành tốc độ động cơ, hãy bao gồm biến u và phương trình bội y. Có nhiều cách để sử dụng điều này, nhưng biến u phải được đặt bằng tín hiệu đầu vào thô đang được đo và biến y sẽ là giá trị được lọc.

Bước 10: Hiển thị tốc độ động cơ đã lọc của bạn

Đề xuất: