» อิเล็กทรอนิกส์ » Arduino »เครื่องวัดระยะทางล้อ (โค้ง) บน Arduino ทำเอง

Do-it-yourself มิเตอร์วัดระยะทางล้อ (โค้ง) บน Arduino

สวัสดีทุกคน! ตอนนี้ฉันจะพยายามพูดถึงรายละเอียดเกี่ยวกับวิธีทำ curvimeter ที่ง่ายและราคาไม่แพงที่สุด

แต่ก่อนอื่นมาคิดกันว่ามันคืออะไรและทำไมมันถึงต้องการ ในความเป็นจริงชื่อของมันบอกเราถึงวัตถุประสงค์ มันถูกสร้างขึ้นจาก curvus คำภาษาละตินซึ่งหมายถึงโค้งหรือหยัก นั่นคือ curvimeter คือเครื่องวัดระยะล้อหรือลูกกลิ้ง มีสองประเภทของ curvimeter ที่โดดเด่น: ขนาดเล็ก (cartographic) ซึ่งมักใช้สำหรับการวัดบนแผนที่และใหญ่ (ถนน) ซึ่งมักจะใช้ในการวัดความยาวของส่วนโค้งของทางหลวงแล้ว พวกเขาสามารถใช้ทุกที่ไม่สะดวกหรือเป็นไปไม่ได้ที่จะวัดด้วยรูเล็ตมาตรฐานดังนั้นโครงการสัญญาว่าจะน่าสนใจ

สิ่งแรกที่ต้องดูแลเมื่อสร้าง curvimeter คือล้อหรือลูกกลิ้ง มันต้องมีขนาดเล็กพอที่ความแม่นยำของเครื่องมือจะสูงในขณะเดียวกันก็ต้องมีขนาดใหญ่พอที่ค่าของการอ่านจะไม่ได้รับผลกระทบอย่างมากจากความไม่สม่ำเสมอของพื้นผิวที่วัด ในกรณีของฉันล้อมีเส้นผ่านศูนย์กลาง 14 เซนติเมตร

ตอนนี้คุณต้องกำหนดวัสดุและขนาดของโครงสร้าง ฉันใช้ต้นไม้

บนแถบฉันทำเครื่องหมายและทำการตัดและรูที่จำเป็น

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

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

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

บนพวงมาลัยคุณต้องติดตั้งแม่เหล็กขนาดเล็กตรวจสอบให้แน่ใจว่ากำลังของเขาเพียงพอที่จะปิดหน้าสัมผัสของสวิตช์กก
ตอนนี้เราจะมีส่วนร่วมใน "สมอง" ของระบบ ในกรณีของฉันนี่เป็นค่าธรรมเนียม Arduino UNO มันจะอ่านสถานะของสวิตช์กกและส่งข้อมูลผ่านการเชื่อมต่อบลูทู ธ โดยใช้โมดูล HC-05 ไปยังโทรศัพท์ โดยวิธีการสวิทช์กกเชื่อมต่อกับบอร์ดเหมือนปุ่มปกติ ฉันคิดว่าไม่ควรมีปัญหาใด ๆ กับการเชื่อมต่อโมดูลบลูทู ธ

สำหรับโค้ดนั้นมันง่ายมาก และฉันพยายามที่จะแสดงความคิดเห็นเพื่อให้ทุกอย่างชัดเจนที่สุด

int gercon = 12; // เชื่อมต่อสวิตช์ลิ้นเป็น 12 พิน
ระยะทางคู่ = 0; // สร้างตัวแปรคู่เพื่อเก็บระยะทาง
การตั้งค่าเป็นโมฆะ () {
   Serial.begin (9600); // เชื่อมต่อการเชื่อมต่อแบบอนุกรม
 }
  void loop () {
/ * ถัดไปคือ if loop หากสวิตช์กกถูกปิดการคำนวณระยะทางถัดไปจะเกิดขึ้น ค่า 0.46472 นั้นเป็นความยาวที่คำนวณได้จากการหมุนวงล้อหนึ่งครั้ง เพื่อหลีกเลี่ยงข้อมูล "พิเศษ" เพิ่มความล่าช้า 200 มิลลิวินาทีและแสดงการอ่าน
* /
   ถ้า (digitalRead (gercon) == สูง)
   {
 distance = distance + 0.46472;
 ล่าช้า (200);
 อนุกรม. println (ระยะทาง);
}
  } 


นี่คือ curvimeter ของเราและพร้อมแล้ว!

มาลองทดสอบการแข่งขันกันดู ทุกอย่างใช้งานได้ดี!


คุณสามารถดูวิดีโอในชุดอุปกรณ์นี้บางทีคุณอาจพบว่ามีบางสิ่งที่น่าสนใจ
[media = https: //youtu.be/kx_7ztPsLws]

ทำซ้ำโครงการได้ดี!
5
5
7

เพิ่มความคิดเห็น

    • รอยยิ้มรอยยิ้มxaxaตกลงdontknowyahooNea
      นายรอยขีดข่วนคนโง่ใช่ใช่ใช่ก้าวร้าวลับ
      ขอโทษเต้นdance2dance3ให้อภัยช่วยเหลือเครื่องดื่ม
      หยุดเพื่อนดีgoodgoodนกหวีดหน้ามืดตามัวลิ้น
      ควันการตบมือเครย์ประกาศเป็นขี้ปากดอน t_mentionดาวน์โหลด
      ความร้อนโมโหlaugh1ภาคตะวันออกเฉียงเหนือประชุมmoskingเชิงลบ
      not_iข้าวโพดคั่วลงโทษอ่านทำให้ตกใจกลัวค้นหา
      ยั่วยุthank_youนี้to_clueumnikรุนแรงเห็นด้วย
      ไม่ดีbeeeblack_eyeblum3หน้าแดงโม้ความเบื่อ
      เซ็นเซอร์การหยอกล้อsecret2ขู่ชัยชนะYusun_bespectacled
      shokrespektฮ่า ๆprevedยินดีต้อนรับkrutoyya_za
      ya_dobryiผู้ช่วยne_huliganne_othodiFLUDห้ามใกล้
1 คิดเห็น
Sergey บุคคลทั่วไป
ทำไม UNO เมื่อ attiny13 เพียงพอต่อสายตา ...
สำหรับรหัสอย่างน้อยคุณจำเป็นต้องเพิ่มการตรวจสอบว่าแม่เหล็กได้ออกจากสวิตช์กกเพราะในการดำเนินการนี้ด้วยความเร็วที่แน่นอนและยิ่งกว่านั้นถ้าล้อหยุดก็สามารถจัดการให้ประมวลผลได้มากกว่าหนึ่งครั้งหรือไม่ได้เลยเลย ในการทำเช่นนี้เพียงแค่เพิ่มตัวแปรส่วนกลางและตรวจสอบสถานะของมันก่อนที่จะคำนวณความยาว:
int gercon = 12; // เชื่อมต่อสวิตช์ลิ้นเป็น 12 พิน
int i = จริง
ระยะทางคู่ = 0; // สร้างตัวแปรคู่เพื่อเก็บระยะทาง
การตั้งค่าเป็นโมฆะ () {
Serial.begin (9600); // เชื่อมต่อการเชื่อมต่อแบบอนุกรม
}
void loop () {
/ * ถัดไปคือ if loop หากสวิตช์กกถูกปิดการคำนวณระยะทางถัดไปจะเกิดขึ้น ค่า 0.46472 นั้นเป็นความยาวที่คำนวณได้จากการหมุนวงล้อหนึ่งครั้ง เพื่อหลีกเลี่ยงข้อมูล "พิเศษ" เพิ่มความล่าช้า 200 มิลลิวินาทีและแสดงการอ่าน
*/
ถ้า (digitalRead (gercon) == สูง)
{
ถ้า (i <1)
{
distance = distance + 0.46472;
i = 1;
// ล่าช้า (200);
อนุกรม. println (ระยะทาง);
}
}
ถ้า (i> 0)
{
ฉัน ++;
ล่าช้า (1);
}
if (digitalRead (gercon) == LOW)
{
if (i> 30) // หลีกเลี่ยงผลบวกปลอมเนื่องจากการตีกลับของผู้ติดต่อ
{
i = 0;
}
}
}

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

เราแนะนำให้คุณอ่าน:

มอบให้กับสมาร์ทโฟน ...