สารบัญ:

วิธีการใช้หน่วยวัดแรงเฉื่อย: 6 ขั้นตอน
วิธีการใช้หน่วยวัดแรงเฉื่อย: 6 ขั้นตอน

วีดีโอ: วิธีการใช้หน่วยวัดแรงเฉื่อย: 6 ขั้นตอน

วีดีโอ: วิธีการใช้หน่วยวัดแรงเฉื่อย: 6 ขั้นตอน
วีดีโอ: แรงและการเคลื่อนที่ : คิดวิทย์ (16 มิ.ย. 63) 2024, พฤศจิกายน
Anonim
วิธีการใช้หน่วยวัดแรงเฉื่อย ?
วิธีการใช้หน่วยวัดแรงเฉื่อย ?

บริบท:

ฉันกำลังสร้างหุ่นยนต์เพื่อความสนุกสนาน ซึ่งฉันต้องการย้ายเข้าไปอยู่ในบ้านอย่างอิสระ

เป็นงานที่ยาวนานและฉันกำลังทำทีละขั้นตอน

ฉันได้เผยแพร่ 2 ผู้สอนในหัวข้อนั้นแล้ว:

  • หนึ่งเกี่ยวกับการทำเครื่องเข้ารหัสล้อ
  • หนึ่งเกี่ยวกับการเชื่อมต่อ wifi

หุ่นยนต์ของฉันถูกขับเคลื่อนด้วยมอเตอร์กระแสตรง 2 ตัวด้วยความช่วยเหลือของตัวเข้ารหัสล้อที่ทำที่บ้านของฉัน

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

คุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการแปลเป็นภาษาท้องถิ่น ? นี่คือบทความเกี่ยวกับวิธีการรวมปัญญาประดิษฐ์และอัลตราซาวนด์เพื่อกำหนดตำแหน่งหุ่นยนต์

ขั้นตอนที่ 1: ทำไมต้องใช้หน่วยวัดแรงเฉื่อย ?

ทำไมต้องใช้หน่วยวัดแรงเฉื่อย ?
ทำไมต้องใช้หน่วยวัดแรงเฉื่อย ?

เหตุใดฉันจึงใช้ IMU

เหตุผลแรกคือถ้าตัวเข้ารหัสล้อมีความแม่นยำเพียงพอที่จะควบคุมการเคลื่อนที่ในแนวตรง แม้หลังจากปรับจูนแล้ว ฉันก็ไม่สามารถได้รับความแม่นยำในการหมุนที่น้อยกว่า +- 5 องศา และนั่นก็ไม่เพียงพอ

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

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

  • ฉันสามารถควบคุมการหมุนได้เช่นเดียวกับ L3GD20
  • ตรวจพบการหมุนเล็กน้อยเมื่อเคลื่อนที่ตรง
  • ฉันต้องการทิศทางทิศเหนือสำหรับการแปลหุ่นยนต์และการปรับเทียบเข็มทิศของ BNO055 นั้นง่ายมาก

ขั้นตอนที่ 2: จะใช้ BNO055 สำหรับการแปล 2D ได้อย่างไร ?

จะใช้ BNO055 สำหรับการแปล 2D ได้อย่างไร?
จะใช้ BNO055 สำหรับการแปล 2D ได้อย่างไร?

BNO055 IMU เป็นเซ็นเซอร์อัจฉริยะ 9 แกนของ Bosch ที่สามารถให้การวางแนวที่แน่นอน

แผ่นข้อมูลมีเอกสารฉบับสมบูรณ์ เป็นส่วนประกอบไฮเทค เป็นผลิตภัณฑ์ที่ค่อนข้างซับซ้อน และฉันใช้เวลาหลายชั่วโมงเพื่อเรียนรู้วิธีการทำงานและลองใช้วิธีต่างๆ ในการใช้งาน

ฉันคิดว่าการแบ่งปันประสบการณ์นี้อาจเป็นประโยชน์

ประการแรก ฉันใช้ห้องสมุด Adafruit ซึ่งมีเครื่องมือที่ดีในการสอบเทียบและค้นหาเซ็นเซอร์

ในตอนท้ายและหลังจากการทดสอบมากมาย ฉันตัดสินใจ

  • ใช้ห้องสมุด Adafruit เพื่อบันทึกการสอบเทียบเท่านั้น
  • ใช้ 3 โหมดที่เป็นไปได้ทั้งหมดของ BNO055 (NDOF, IMU, Compss)
  • อุทิศ Arduino Nano เพื่อคำนวณการโลคัลไลเซชั่นตาม BNO055 mesurments

ขั้นตอนที่ 3: จุดฮาร์ดแวร์ของ Vue

จุดฮาร์ดแวร์ของ Vue
จุดฮาร์ดแวร์ของ Vue
จุดฮาร์ดแวร์ของ Vue
จุดฮาร์ดแวร์ของ Vue
จุดฮาร์ดแวร์ของ Vue
จุดฮาร์ดแวร์ของ Vue

BNO055 เป็นส่วนประกอบ I2C ดังนั้นจึงต้องใช้แหล่งจ่ายไฟ SDA และ SCL เพื่อสื่อสาร

เพียงดูแลแรงดันไฟฟ้า Vdd ตามสินค้าที่คุณซื้อ ชิป Bosch ทำงานในช่วง: 2.4V ถึง 3.6V และคุณสามารถหาส่วนประกอบ 3.3v และ 5v

ไม่มีปัญหาในการเชื่อมต่อ Nano และ BNO055

  • BNO055 ขับเคลื่อนโดย Nano
  • SDA & SCL เชื่อมต่อกับตัวต้านทานแบบดึงขึ้น 2 x 2k
  • 3 LED เชื่อมต่อกับ Nano สำหรับการวินิจฉัย (พร้อมตัวต้านทาน)
  • ตัวเชื่อมต่อ 2 ตัวที่ใช้กำหนดโหมดหลังจากการบู๊ต
  • 1 ตัวเชื่อมต่อไปยัง BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 ตัวเชื่อมต่อต่อ Robot/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)

บัดกรีนิดหน่อยก็เท่านั้น !

ขั้นตอนที่ 4: มันทำงานอย่างไร ?

มันทำงานอย่างไร ?
มันทำงานอย่างไร ?

จากจุดสื่อสารของ vue:

  • นาโนคือต้นแบบบัส I2C
  • Robot/Mega และ BNO055 เป็นทาสของ I2C
  • นาโนอ่านทะเบียน BNO055 อย่างถาวร
  • Robot/Mega ขึ้นสัญญาณตัวเลขเพื่อขอคำจาก Nano

จากจุดคำนวณของ vue: Nano รวมกับ BNO055 การส่งมอบ

  • ส่วนหัวของเข็มทิศ (ใช้สำหรับการแปลเป็นภาษาท้องถิ่น)
  • หัวเรื่องที่เกี่ยวข้อง (ใช้เพื่อควบคุมการหมุน)
  • ส่วนหัวและตำแหน่งที่แน่นอน (ใช้เพื่อควบคุมการเคลื่อนไหว)

จากจุดทำงานของ vue: The Nano:

  • จัดการการสอบเทียบ BNO055
  • จัดการพารามิเตอร์และคำสั่ง BNO055

ระบบย่อย Nano & BNO055:

  • คำนวณสำหรับหุ่นยนต์แต่ละตัวล้อที่มุ่งหน้าและโลคัลไลเซชันแบบสัมบูรณ์ (ด้วยตัวคูณมาตราส่วน)
  • คำนวณทิศทางที่สัมพันธ์กันระหว่างการหมุนของหุ่นยนต์

ขั้นตอนที่ 5: สถาปัตยกรรมและซอฟต์แวร์

สถาปัตยกรรมและซอฟต์แวร์
สถาปัตยกรรมและซอฟต์แวร์

ซอฟต์แวร์หลักทำงานบน Arduino Nano

  • สถาปัตยกรรมขึ้นอยู่กับการสื่อสาร I2C
  • ฉันเลือกที่จะอุทิศนาโนเนื่องจากความจริงที่ว่า Atmega ที่ควบคุมหุ่นยนต์นั้นค่อนข้างโหลดแล้วและสถาปัตยกรรมนี้ทำให้ง่ายต่อการนำกลับมาใช้ใหม่ในที่อื่น
  • Nano อ่านการลงทะเบียน BNO055 คำนวณและจัดเก็บส่วนหัวและการแปลเป็นภาษาท้องถิ่นในการลงทะเบียนของตัวเอง
  • Arduino Atmega ที่รันโค้ดหุ่นยนต์ ส่งข้อมูลตัวเข้ารหัสล้อไปยัง Nano และอ่านส่วนหัวและโลคัลไลเซชันภายในรีจิสเตอร์ Nano

มีรหัสย่อย (นาโน) อยู่ที่นี่บน GitHub

เครื่องมือสอบเทียบ Adafruit หากอยู่ใน GitHub (การสอบเทียบจะถูกเก็บไว้ใน eeproom)

ขั้นตอนที่ 6: ฉันเรียนรู้อะไร ?

เกี่ยวกับ I2C

ประการแรกฉันพยายามมี 2 มาสเตอร์ (Arduino) และ 1 ทาส (เซ็นเซอร์) บนบัสเดียวกัน แต่ในตอนท้ายมันเป็นไปได้และง่ายที่สุดในการตั้งค่าเฉพาะ Nano เป็นมาสเตอร์และใช้การเชื่อมต่อ GPIO ระหว่าง 2 Arduinos เพื่อ "ขอโทเค็น".

เกี่ยวกับ BNO055 สำหรับการวางแนว 2D

ฉันสามารถจดจ่อกับโหมดการวิ่งที่แตกต่างกันได้ 3 โหมด: NDOF (รวมไจโรสโคป มาตรความเร่ง และเข็มทิศ) เมื่อหุ่นยนต์ไม่ได้ใช้งาน, IMU (รวมไจโรสโคป มาตรความเร่ง) เมื่อหุ่นยนต์เคลื่อนที่และเข็มทิศระหว่างขั้นตอนการแปลเป็นภาษาท้องถิ่น การสลับระหว่างโหมดเหล่านี้ทำได้ง่ายและรวดเร็ว

เพื่อลดขนาดโค้ดและรักษาความเป็นไปได้ที่จะใช้ BNO055 อินเตอร์รัปต์เพื่อตรวจจับการชนกัน ฉันไม่ต้องการใช้ไลบรารี Adafruit และทำด้วยตัวเอง

แนะนำ: