ฉันจะวัด RPM ของล้อได้อย่างไร


15

ฉันพยายามสร้างระบบออนบอร์ดสำหรับจักรยานของฉันโดยใช้ Arduino หรืออาจเป็นบอร์ด Lilypad

ฉันคิดว่าฉันควรใช้เซ็นเซอร์เอฟเฟกต์ Hall แต่ตัวเลือกอื่นก็ดีเช่นกัน

ฉันต้องการส่งออกความเร็วของฉันไปยังจอแสดงผล LCD และฉันสงสัยว่าวิธีที่ดีที่สุดที่จะไปเกี่ยวกับเรื่องนี้

คำตอบ:


12

การใช้เซ็นเซอร์เอฟเฟกต์ฮอลล์ตามที่ Starliner แนะนำจะเป็นวิธีหนึ่งในการเชื่อมต่อกับล้อ ข้อเสนอแนะของ Achim และ Shutterdrone ในการใช้สวิตช์กกมีความหมายมากกว่า แต่เนื่องจากฮาร์ดแวร์ที่รองรับเซ็นเซอร์ Hall Effect จำเป็นต้องได้รับสัญญาณดิจิทัลที่สะอาด

คุณอาจสามารถหยิบแม่เหล็กและเซ็นเซอร์จากคอมพิวเตอร์จักรยานที่แตก แต่ถ้าคุณทำไม่ได้ร้านขายอุปกรณ์ในท้องถิ่นควรมีหนึ่งในนั้น ข้อดีของเซ็นเซอร์และแม่เหล็กที่นำกลับมาใช้ใหม่คือคุณจะมีฮาร์ดแวร์สำหรับติดตั้งอยู่แล้ว

มีหน้าหนึ่งใน arduino wiki บนสัญญาณReadingRPM ในการคำนวณความเร็วคูณค่า RPM ด้วยเส้นรอบวงของวงล้อ (2 * pi * รัศมี [เป็นเมตร]) ผลลัพธ์จะเป็นหน่วยเมตรต่อนาที

แก้ไข: ฉันสังเกตเห็นว่ารหัสที่เชื่อมโยงนั้นใช้สำหรับระบบที่มีสองพัลส์ต่อการปฏิวัติ แม่เหล็กหนึ่งอันเพียงพอสำหรับงานของคุณ นอกจากนี้สำหรับคอมพิวเตอร์จักรยานคุณอาจต้องการผลลัพธ์เป็น KPH (หรือ MPH หากคุณอาศัยอยู่ที่ไหนสักแห่งที่ยังคิดว่าเป็นอารยธรรม) ฉันได้ทำการดัดแปลง (ยังไม่ทดลอง) รหัสในวิกิเพื่อพิมพ์ KPH และวางตะโกนพวกเขา

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++;
}

นอกจากนี้ฉันได้เปิดใช้งาน 'community wiki' ซึ่งฉันคิดว่าหมายความว่าผู้ใช้รายอื่นสามารถแก้ไขได้ หากคณิตศาสตร์ของฉันผิด (และคุณสามารถพิสูจน์ได้!) กระโดดเข้ามาและซ่อมมันให้ฉัน :)


10

อันที่จริง Achim ได้ทำจุดที่ดีมากที่นี่

มีความแตกต่างใหญ่ระหว่างรีเลย์ Reed (แม่เหล็ก) (สวิตช์) และเซ็นเซอร์เอฟเฟกต์ฮอลล์

ในขั้นต้นรีเลย์ Reed จะเชื่อมต่อสวิตช์เมื่อใดก็ตามที่มีแรงแม่เหล็กเพียงพอที่จะทำหน้าที่ดังกล่าวทำให้คุณมีสัญญาณเปิด / ปิด เซ็นเซอร์เอฟเฟกต์ฮอลล์ให้ระดับแรงดันไฟฟ้าระบุว่ามีการใช้แรงแม่เหล็กเท่าใด

รหัสที่แสดงด้านบนนี้จะทำงานโดยตรงกับรีเลย์ Reed ซึ่งไม่ได้บอกว่าจะไม่ทำงานเลยสำหรับเซ็นเซอร์ Hall Effect แต่จะให้ความท้าทายเพิ่มเติมโดยใช้เซ็นเซอร์ Hall-Effect

ความท้าทายหลักคือการที่คุณรักษาอุปกรณ์อะนาล็อกให้เป็นอุปกรณ์ดิจิตอลซึ่งคาดว่าจะกระตุ้นให้เกิดการเต้นของชีพจร ทีนี้สัญญาณจะไม่เต้นเป็นจังหวะ - โดยทั่วไปจะเป็นเส้นโค้งเบลล์กับความผันผวนทุกประเภท คุณอาจเดินทางผ่านแรงดันไฟฟ้าต่ำสุดสำหรับสัญญาณสูง (ประมาณ 3.5v, IIRC?) หลายครั้งเมื่อแม่เหล็กผ่านเซ็นเซอร์ Hall-Effect

แน่นอนว่าสัญชาตญาณแรกของเราเมื่อใช้บางอย่างเช่นเซ็นเซอร์เอฟเฟกต์ฮอลล์คือการใช้ ADC และอ่านระดับแรงดันไฟฟ้าบนขาอะนาล็อก อย่างไรก็ตามคุณ จำกัด การอ่าน 10,000 ครั้งโดยประมาณต่อวินาทีบนพินอะนาล็อก (การอ่านแต่ละครั้งใช้เวลา 100uS) นั่นก็ถือว่าสิ่งที่คุณทำคือวนลูปและอ่านค่า - ไม่ปล่อยเวลาให้คุณอัปเดตการแสดงผลคำนวณ ฯลฯ ไม่ต้องพูดถึงถ้าคุณอ่านในเวลาที่ไม่ถูกต้องคุณพลาดสัญญาณของคุณ!

ฉันแน่ใจว่าเป็นไปได้ที่จะใช้อินเทอร์รัปต์เชื่อมโยงกับ ADC แต่ก็ไม่มีความรู้ที่มีประโยชน์

หากคุณต้องการใช้เซ็นเซอร์ Hall Effect จริงๆ ฉันขอแนะนำให้ป้อนเข้าไปในตัวกระตุ้นชมิตต์เพื่อแปลงเป็นสัญญาณดิจิตอล (เปิด / ปิด) ในระดับที่ปรับเทียบแล้วซึ่งระบุว่า "ใต้แม่เหล็กโดยตรง" นอกจากนี้ขึ้นอยู่กับระดับของ hysteresis ที่ใช้ในทริกเกอร์ Schmitt คุณอาจจำเป็นต้องทำการตีกลับที่จะเปลี่ยนอัตราการตีกลับตามความเร็วปัจจุบัน จากนั้นคุณสามารถรักษามันเหมือนถ่ายทอดลิ้นปกติ

!ค


1
คุณสามารถได้รับสิ่งที่ดีที่สุดของทั้งสองโลก สามารถกำหนดค่าส่วนประกอบ ATMega8 เพื่อให้สามารถเข้าถึงเครื่องมือเปรียบเทียบภายใน ด้วยการอ้างอิงแรงดันไฟฟ้าที่เหมาะสม (ปรับได้ด้วยการพูด, trimpot) คุณสามารถมีการขัดจังหวะที่ขอบ (หรือตกหรือทั้งสอง) ของสัญญาณอะนาล็อก ลิงก์ไปยังหัวข้อฟอรัมอธิบายว่า: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1163394545
SingleNegationElimination

มีอุปกรณ์เอฟเฟกต์ฮอลล์ที่มีเอาต์พุตขีด จำกัด schmitt-trigger พวกมันค่อนข้างธรรมดา นอกจากนี้เมื่อใช้สวิตช์กกคุณจะต้องทำการดีบัตเอาท์พุทต่อไป
Connor Wolf

7

เซนเซอร์เอฟเฟกต์ Hall และสวิตช์ลิ้นเป็นที่กล่าวถึงมากที่สุดในที่นี้และเป็นโซลูชันที่ดีที่สุด

เปลี่ยนกกจะมีราคาถูก แต่อาจทำให้คุณพัเท็จเมื่อจักรยานที่ได้รับการช็อต หากนั่นเป็นเพียงหนึ่งในการลดขอบของซอฟต์แวร์อาจกรองได้อย่างง่ายดาย แต่มันแตกต่างเมื่อคุณขี่ผ่านก้อนหินซึ่งอาจให้พัลส์เท็จตลอดเวลา สวิตช์ลิ้นที่ทนต่อแรงกระแทกมากขึ้นจะต้องใช้สนามแม่เหล็กที่แรงกว่าในการเปิดใช้งาน แต่แม่เหล็กนีโอดิเมียมจะแก้ไขได้



77

สวิทช์ผลฮอลล์ไม่ได้มีข้อเสียเหล่านี้ แต่จะค่อนข้างมีราคาแพงกว่า


T

v=πDT

DT

s=pulse count×π×D

D


5

สามารถติดตั้งแม่เหล็กที่ขอบของขอบล้อและติดตั้งเซ็นเซอร์ Hall Effect ไว้ใกล้กับ (แต่ไม่ต้องสัมผัส) แม่เหล็ก เมื่อล้อหมุนและแม่เหล็กผ่านเซ็นเซอร์เซ็นเซอร์จะรับการเปลี่ยนแปลงในสนามแม่เหล็ก


3

หากคุณยังต้องการเข้าสู่สถานะของแข็งพวกเขาก็คือ "สวิตช์เอฟเฟกต์ฮอลล์" จำนวนมากซึ่งรวมถึงเซ็นเซอร์เอฟเฟกต์ฮอลล์ พวกเขาสลับเมื่อถึงความหนาแน่นฟลักซ์เกณฑ์ (มีอยู่ในแผ่นข้อมูล) คุณสามารถคำนวณการผสมผสานที่ดีของแม่เหล็กและสวิตช์หรือเพียงแค่ทดสอบ

เว็บไซต์นี้จะบอกคุณมากขึ้น


2

ชิ้นส่วนในคอมพิวเตอร์จักรยานเป็นแบบสัมผัสกันไม่ใช่เซ็นเซอร์แบบฮอลล์ พวกเขาแตกต่างอย่างสิ้นเชิง แต่ฉันคิดว่าคุณทุกคนกำลังพูดถึงผู้ติดต่อที่กก


1

แม่เหล็กสามารถติดตั้งบนก้านและเซ็นเซอร์บนหนึ่งในส้อมของคุณหรือ chainstay

แทนที่จะทำการคูณด้วย pi เป็นต้นวิธีที่แนะนำโดยคอมพิวเตอร์จักรยานเครื่องสุดท้ายของฉันคือการวัดระยะทางเชิงเส้นของการปฏิวัติหนึ่ง (ชอล์กบนยางวัดระหว่างเครื่องหมายสองชอล์ก) จากนั้นคุณก็สามารถคูณการปฏิวัติด้วยเส้นรอบวงโดยตรง

[แก้ไข] ฉันเพิ่งพบคู่มือนี้ในไซต์ piclist สำหรับการนำคอมพิวเตอร์จักรยานไปใช้โดยใช้ PIC บางทีข้อมูลบางอย่างอาจเป็นประโยชน์สำหรับคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.