Làm thế nào để tôi đo RPM của một bánh xe?


15

Tôi đang cố gắng tạo ra một hệ thống trên xe cho chiếc xe đạp của mình bằng Arduino hoặc có thể là bảng Lilypad.

Tôi nghĩ rằng tôi nên sử dụng một cảm biến hiệu ứng Hall, nhưng bất kỳ sự thay thế nào cũng tốt.

Tôi muốn xuất tốc độ của mình lên màn hình LCD và tôi đang tự hỏi cách tốt nhất để thực hiện điều này.

Câu trả lời:


12

Sử dụng cảm biến hiệu ứng hội trường như Star ngôi nhà gợi ý sẽ là một cách để giao tiếp với bánh xe. Mặc dù đề xuất của Achim và Shutterdrone về việc sử dụng công tắc sậy có ý nghĩa hơn, do phần cứng hỗ trợ cần có cảm biến hiệu ứng hội trường để có được tín hiệu số sạch.

Bạn có thể lấy nam châm và cảm biến từ máy tính xe đạp bị hỏng nhưng nếu bạn không thể, một cửa hàng linh kiện địa phương nên có một trong số đó trong kho. Ưu điểm của cảm biến và nam châm tái chế là bạn sẽ có phần cứng gắn kết.

Có một trang trên wiki arduino trên ReadingRPM tín hiệu . Để tính tốc độ nhân giá trị RPM với chu vi của bánh xe (bán kính 2 * pi * [tính bằng mét]). Kết quả sẽ được tính bằng mét mỗi phút.

Chỉnh sửa: Tôi nhận thấy rằng mã được liên kết dành cho các hệ thống có hai xung trên mỗi vòng quay. Một nam châm là đủ cho nhiệm vụ của bạn. Ngoài ra, đối với máy tính xe đạp, bạn có thể muốn kết quả là KPH (hoặc MPH nếu bạn sống ở một nơi vẫn cho rằng đó là văn minh). Tôi đã thực hiện một số mod (chưa được kiểm tra) theo mã trên wiki để in KPH và dán chúng dưới đây.

volatile byte revolutions;

unsigned int rpmilli;
float speed;


unsigned long timeold;

void setup()
{
  Serial.begin(9600);
  attachInterrupt(0, rpm_fun, RISING);

  revolutions = 0;
  rpmilli = 0;
  timeold = 0;
}

void loop()
{
  if (revolutions >= 20) { 
    //Update RPM every 20 counts, increase this for better RPM resolution,
    //decrease for faster update

    // calculate the revolutions per milli(second)
    **rpmilli = (millis() - timeold)/revolutions;** EDIT: it should be revolutions/(millis()-timeold)

    timeold = millis();
    **rpmcount = 0;** (EDIT: revolutions = 0;)

    // WHEELCIRC = 2 * PI * radius (in meters)
    // speed = rpmilli * WHEELCIRC * "milliseconds per hour" / "meters per kilometer"

    // simplify the equation to reduce the number of floating point operations
    // speed = rpmilli * WHEELCIRC * 3600000 / 1000
    // speed = rpmilli * WHEELCIRC * 3600

    speed = rpmilli * WHEELCIRC * 3600;

    Serial.print("RPM:");
    Serial.print(rpmilli * 60000,DEC);
    Serial.print(" Speed:");
    Serial.print(speed,DEC);
    Serial.println(" kph");
  }
}

void rpm_fun()
{
  revolutions++;
}

Ngoài ra, tôi đã kích hoạt 'wiki cộng đồng' về điều này, điều mà tôi nghĩ có nghĩa là những người dùng khác có thể chỉnh sửa nó. Nếu toán của tôi sai (và bạn có thể chứng minh điều đó!) Hãy nhảy vào và sửa nó cho tôi. :)


10

Trên thực tế, Achim đã làm cho một điểm rất tốt ở đây.

Có một sự khác biệt lớn giữa rơle (công tắc) (công tắc) và cảm biến hiệu ứng Hall.

Về cơ bản, rơle Sậy sẽ kết nối một công tắc bất cứ khi nào có đủ lực từ tác dụng lên nó, cho bạn tín hiệu bật / tắt. Một cảm biến hiệu ứng Hall cung cấp một mức điện áp cho biết có bao nhiêu lực từ được tác dụng lên nó.

Mã được hiển thị ở trên sẽ chỉ 'trực tiếp' hoạt động với rơle Sậy, điều đó không có nghĩa là nó hoàn toàn không hoạt động đối với cảm biến hiệu ứng hội trường, nhưng nó sẽ cung cấp thêm các thách thức khi sử dụng cảm biến hiệu ứng hội trường.

Thách thức chính sẽ là bạn đang coi một thiết bị tương tự như một thiết bị kỹ thuật số - hy vọng sẽ kích hoạt sự gia tăng của xung. Bây giờ, tín hiệu sẽ không được phát xung - nó thường sẽ giống như một đường cong hình chuông, với đủ loại dao động. Bạn có thể vượt qua điện áp tối thiểu để có tín hiệu cao (khoảng 3,5v, IIRC?) Nhiều lần khi nam châm vượt qua cảm biến hiệu ứng hội trường.

Tất nhiên, bản năng đầu tiên của chúng ta khi sử dụng thứ gì đó như cảm biến hiệu ứng hội trường là sử dụng ADC và đọc mức điện áp trên một chân tương tự. Tuy nhiên, bạn bị giới hạn ở 10.000 lần đọc, khoảng, mỗi giây trên một pin tương tự (mỗi lần đọc mất 100uS). Điều đó cũng giả sử rằng tất cả những gì bạn làm là lặp và đọc các giá trị - không khiến bạn mất nhiều thời gian để cập nhật màn hình, tính toán, v.v. Chưa kể, nếu bạn đọc không đúng lúc, bạn đã bỏ lỡ tín hiệu của mình!

Tôi chắc chắn có thể sử dụng các ngắt bằng cách nào đó được liên kết với ADC, nhưng tôi không có kiến ​​thức như vậy tiện dụng.

Thay vào đó, nếu bạn muốn sử dụng một thực tế cảm biến Hiệu ứng Hall , tôi khuyên bạn nên đưa nó vào bộ kích hoạt Schmitt để chuyển đổi thành tín hiệu số (bật / tắt) ở mức hiệu chỉnh cho biết "ngay dưới nam châm". Ngoài ra, tùy thuộc vào mức độ trễ được triển khai trong trình kích hoạt Schmitt, bạn có thể cần thực hiện một số thao tác nảy để thay đổi tốc độ thoát dựa trên tốc độ hiện tại. Sau đó, bạn có thể coi nó như một rơle thông thường.

! c


1
Bạn có thể có được tốt nhất của cả hai thế giới. Các thành phần ATMega8 có thể được cấu hình để cung cấp quyền truy cập vào bộ so sánh bên trong. Với một tham chiếu điện áp phù hợp (có thể điều chỉnh bằng cách nói, một trimpot), bạn có thể có các ngắt trên cạnh tăng (hoặc giảm hoặc cả hai) của tín hiệu tương tự. liên kết đến diễn đàn chủ đề giải thích chỉ là: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1163394545
SingleNegationElimination

Có các thiết bị hiệu ứng hội trường với đầu ra ngưỡng kích hoạt schmitt. Chúng khá phổ biến. Ngoài ra, với một công tắc sậy, bạn sẽ phải gỡ bỏ đầu ra.
Sói Connor

7

Cảm biến hiệu ứng Hall và công tắc sậy được nhắc đến nhiều nhất ở đây, và chúng là giải pháp tốt nhất.

Công tắc sậy sẽ rẻ hơn, nhưng có thể cung cấp cho bạn các xung giả khi xe đạp bị sốc. Nếu đó chỉ là một lần đi từ lề đường, phần mềm có thể dễ dàng lọc nó ra, nhưng nó sẽ khác khi bạn đi trên đá cuội, điều này có thể khiến bạn có những nhịp giả mọi lúc. Nhiều công tắc sậy chống sốc hơn sẽ cần một từ trường mạnh hơn để kích hoạt, nhưng một nam châm Neodymium sẽ khắc phục điều đó.



77

Công tắc hiệu ứng Hall không có những nhược điểm này, nhưng có phần đắt hơn.


T

v=πDT

DT

s=pulse count×π×D

D


5

Một nam châm có thể được gắn trên mép của vành bánh xe và cảm biến Hiệu ứng Hall được gắn rất gần (nhưng không tiếp xúc với) nam châm. Khi bánh xe quay và nam châm đi qua cảm biến, cảm biến sẽ thu nhận sự biến đổi trong từ trường.


3

Nếu bạn vẫn muốn chuyển sang trạng thái rắn, chúng có nhiều "công tắc hiệu ứng Hall" bao gồm cảm biến hiệu ứng Hall và bộ kích hoạt Schmitt với độ trễ để cung cấp đầu ra kỹ thuật số sạch mà không bị trả lại. Họ chuyển đổi bất cứ khi nào đạt được mật độ thông lượng ngưỡng (được cung cấp trong biểu dữ liệu). Bạn có thể tính toán một sự kết hợp tốt của nam châm và công tắc hoặc đơn giản là thử nghiệm.

Trang web này sẽ cho bạn biết nhiều hơn nữa.


2

Các bộ phận trong máy tính xe đạp là các tiếp điểm sậy không phải cảm biến hiệu ứng hội trường. Chúng hoàn toàn khác nhau. Nhưng tôi nghĩ rằng tất cả các bạn đang nói về các liên hệ sậy.


1

Nam châm có thể được gắn trên một cái loa và cảm biến trên một trong các dĩa của bạn, hoặc dây chuyền.

Thay vì nhân với pi, v.v., phương pháp được đề xuất bởi máy tính xe đạp cuối cùng của tôi là đo khoảng cách tuyến tính của một cuộc cách mạng (phấn trên lốp xe, đo giữa hai dấu phấn), sau đó bạn có thể nhân số vòng quay bằng chu vi trực tiếp.

[EDIT] Tôi vừa tìm thấy hướng dẫn này trên trang web piclist để triển khai máy tính xe đạp bằng PIC, có thể một số thông tin có thể được sử dụng cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.