สารบัญ:

หุ่นยนต์ติดตามบรรทัดขั้นสูง: 22 ขั้นตอน (พร้อมรูปภาพ)
หุ่นยนต์ติดตามบรรทัดขั้นสูง: 22 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: หุ่นยนต์ติดตามบรรทัดขั้นสูง: 22 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: หุ่นยนต์ติดตามบรรทัดขั้นสูง: 22 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: EP 27. Arduino ฉบับไวจนไฟลุก !! - สาระเดฟ ใน 3 นาที 2024, ธันวาคม
Anonim
Image
Image
การสร้างต้นแบบ - Perfboard
การสร้างต้นแบบ - Perfboard

นี่คือหุ่นยนต์ติดตามบรรทัดขั้นสูงที่ใช้เซ็นเซอร์สาย Teensy 3.6 และ QTRX ที่ฉันสร้างและใช้งานมาระยะหนึ่งแล้ว มีการปรับปรุงที่สำคัญบางอย่างในการออกแบบและประสิทธิภาพจากหุ่นยนต์ที่ติดตามบรรทัดก่อนหน้าของฉัน ความเร็วและการตอบสนองของหุ่นยนต์ดีขึ้น โครงสร้างโดยรวมมีขนาดกะทัดรัดและน้ำหนักเบา ส่วนประกอบถูกจัดเรียงใกล้กับแกนล้อเพื่อลดโมเมนตัมเชิงมุมให้น้อยที่สุด มอเตอร์เกียร์โลหะขนาดเล็กกำลังสูงให้แรงบิดที่เพียงพอ และล้อซิลิโคนดุมอลูมิเนียมให้แรงฉุดลากที่จำเป็นมากในความเร็วสูง Prop shield และ wheel encoders ช่วยให้หุ่นยนต์สามารถกำหนดตำแหน่งและทิศทางได้ เมื่อติดตั้ง Teensyview ไว้บนเครื่อง ข้อมูลที่เกี่ยวข้องทั้งหมดจะแสดงเป็นภาพ และสามารถอัปเดตพารามิเตอร์โปรแกรมที่สำคัญได้โดยใช้ปุ่มกด

ในการเริ่มต้นสร้างหุ่นยนต์ตัวนี้ คุณจะต้องมีอุปกรณ์ดังต่อไปนี้ (ใช้เวลาและความอดทนเป็นอย่างมาก)

เสบียง

อิเล็กทรอนิกส์

  • Teensy 3.6 คณะกรรมการพัฒนา
  • Prop Shield พร้อม Motion Sensors
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A Reflectance Sensor Array
  • PCB ต้นแบบสองด้าน 15x20 ซม
  • Pololu ตัวควบคุมแรงดันไฟฟ้าแบบ Step-Up/Step-Down S9V11F3S5
  • Pololu ตัวปรับแรงดันไฟฟ้า 4-5-20V แบบปรับได้ U3V70A
  • MP12 6V 1580 rpm micro gear motor พร้อมตัวเข้ารหัส (x2)
  • DRV8833 ตัวยึดขับมอเตอร์คู่ (x2)
  • แบตเตอรี่ Li-Po 3.7V, 750mAh
  • สวิตช์เปิด/ปิด
  • ตัวเก็บประจุด้วยไฟฟ้า 470uF
  • ตัวเก็บประจุด้วยไฟฟ้า 1000uF (x2)
  • ตัวเก็บประจุเซรามิก 0.1uF (x5)
  • ปุ่มกด (x3)
  • ไฟ LED สีเขียว 10 มม. (x2)

ฮาร์ดแวร์

  • Atom ล้อซิลิโคน 37x34mm (x2)
  • ลูกล้อ Pololu พร้อมลูกเหล็ก 3/8”
  • แท่นยึดมอเตอร์ N20 (x2)
  • โบลท์และถั่ว

สายเคเบิลและขั้วต่อ

  • สายอ่อน 24AWG
  • 24 พิน FFC ถึง DIP breakout และสายเคเบิล FFC (ประเภท A ยาว 150 มม.)
  • หัวเข็มหมุดตัวเมีย
  • ขั้วต่อขายาวหัวหมุดตัวเมีย
  • ส่วนหัวตัวเมียแถวคู่มุมขวา
  • ส่วนหัวชายสองแถวมุมขวา
  • ส่วนหัวของหมุดตัวผู้
  • หัวเข็มหมุดตัวผู้

เครื่องมือ

  • มัลติมิเตอร์
  • หัวแร้ง
  • ลวดบัดกรี
  • เครื่องปอกสายไฟ
  • เครื่องตัดลวด

ขั้นตอนที่ 1: ภาพรวมระบบ

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

ระบบหลักของหุ่นยนต์มีดังต่อไปนี้

ไมโครคอนโทรลเลอร์: บอร์ดพัฒนา Teensy 3.6 ที่มีโปรเซสเซอร์ ARM Cortex-M4 ขนาด 32 บิต 180MHz

Line sensor: QTRX-MD-16A 16-channel analog output line sensor array ของ Pololu ในการจัดเรียงความหนาแน่นปานกลาง (ระยะพิทช์เซ็นเซอร์ 8 มม.)

ไดรฟ์: 6V, 1580 รอบต่อนาที, มอเตอร์เกียร์โลหะขนาดเล็กกำลังสูงพร้อมตัวเข้ารหัสล้อแม่เหล็กและล้อซิลิโคนติดตั้งบนดุมอลูมิเนียม

การวัดระยะทาง: คู่ตัวเข้ารหัสล้อแม่เหล็กสำหรับประมาณพิกัดและระยะทางที่ครอบคลุม

เซ็นเซอร์ปฐมนิเทศ: Prop Shield พร้อมเซ็นเซอร์ตรวจจับความเคลื่อนไหวสำหรับประมาณตำแหน่งและส่วนหัวของหุ่นยนต์

แหล่งจ่ายไฟ: 3.7V, 750mAh แบตเตอรี่ lipo เป็นแหล่งพลังงาน ตัวควบคุมแบบ step-up/down 3.3V ให้พลังงานแก่ไมโครคอนโทรลเลอร์ เซ็นเซอร์ และอุปกรณ์แสดงผล ตัวควบคุม step-up ที่ปรับได้ให้กำลังกับมอเตอร์สองตัว

User interface: Teensyview สำหรับแสดงข้อมูล ปุ่มกดสามปุ่มสำหรับรับอินพุตของผู้ใช้ ไฟ LED สีเขียวขนาดเส้นผ่านศูนย์กลาง 10 มม. จำนวน 2 ดวงสำหรับแสดงสถานะขณะวิ่ง

ขั้นตอนที่ 2: มาเริ่มสร้างต้นแบบกันเถอะ

Image
Image

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

หลังจากบัดกรีส่วนหัวบนกระดานฝ่าวงล้อมแล้ว ให้วาง Teensyview และปุ่ม breakout ที่ด้านบนของ Teensy

ขั้นตอนที่ 3: การสร้างต้นแบบ - Perfboard

การสร้างต้นแบบ - Perfboard
การสร้างต้นแบบ - Perfboard

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

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

ขั้นตอนที่ 4: การสร้างต้นแบบ - Prop Shield

การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield
การสร้างต้นแบบ - Prop Shield

ก่อนอื่นเราจะประสานการเชื่อมต่อกับเสาป้องกัน เนื่องจากเราใช้เฉพาะเซ็นเซอร์ตรวจจับความเคลื่อนไหวของตัวป้องกันเสา เราจำเป็นต้องเชื่อมต่อเฉพาะหมุด SCL, SDA และ IRQ แยกจาก 3V และหมุดกราวด์ของตัวป้องกันเสา

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

ขั้นตอนที่ 5: การสร้างต้นแบบ - พลังและพื้นดิน

การสร้างต้นแบบ - พลังและพื้นดิน
การสร้างต้นแบบ - พลังและพื้นดิน

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

  • แรงดันไฟขาออก Li-po (ปกติระหว่าง 3V ถึง 4.2V)
  • สเต็ปอัพ/ดาวน์เรกูเลเตอร์แรงดันเอาท์พุต (3.3V)
  • แรงดันเอาต์พุตตัวควบคุม step-up ที่ปรับได้ (ตั้งค่าเป็น 6V)

ขั้นตอนที่ 6: การสร้างต้นแบบ - Motor Driver Carrier

การสร้างต้นแบบ - ผู้ให้บริการขับมอเตอร์
การสร้างต้นแบบ - ผู้ให้บริการขับมอเตอร์
การสร้างต้นแบบ - ผู้ให้บริการขับมอเตอร์
การสร้างต้นแบบ - ผู้ให้บริการขับมอเตอร์
การสร้างต้นแบบ - ผู้ให้บริการขับมอเตอร์
การสร้างต้นแบบ - ผู้ให้บริการขับมอเตอร์

บอร์ดพาหะขับมอเตอร์คู่ DRV8833 สามารถส่งกระแสสูงสุด 1.2A ต่อเนื่องและ 2A ต่อช่องสัญญาณ เราจะเชื่อมต่อสองช่องสัญญาณขนานกันเพื่อขับเคลื่อนมอเตอร์ตัวเดียว ประสานการเชื่อมต่อโดยทำตามขั้นตอนด้านล่าง

  • ขนานอินพุตทั้งสองและเอาต์พุตทั้งสองของตัวขับมอเตอร์ตามที่แสดงในภาพ
  • ต่อสายควบคุมอินพุตเข้ากับตัวขับมอเตอร์
  • เชื่อมต่อตัวเก็บประจุอิเล็กโทรไลต์ 1000uF และตัวเก็บประจุเซรามิก 0.1uF ผ่านขั้ว Vin และ Gnd ของแผงพาหะทั้งสอง
  • เชื่อมต่อตัวเก็บประจุเซรามิก 0.1uF ผ่านขั้วเอาท์พุตของไดรเวอร์มอเตอร์

ขั้นตอนที่ 7: การสร้างต้นแบบ - Line Sensor Array Header

การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header
การสร้างต้นแบบ - Line Sensor Array Header

Teensy 3.6 มี ADC สองตัว - ADC0 และ ADC1 ที่มีมัลติเพล็กซ์ถึง 25 พินที่สามารถเข้าถึงได้ เราสามารถเข้าถึงสองพินใดก็ได้จาก ADC สองตัวพร้อมกัน เราจะเชื่อมต่อเซ็นเซอร์แปดสายแต่ละตัวกับ ADC0 และ ADC1 เซ็นเซอร์เลขคู่จะเชื่อมต่อกับ ADC1 และเซ็นเซอร์เลขคี่กับ ADC0 ประสานการเชื่อมต่อโดยทำตามขั้นตอนด้านล่าง ต่อมาเราจะเชื่อมต่อเซ็นเซอร์สายโดยใช้อะแดปเตอร์และสายเคเบิล FFC เป็น DIP

  • เชื่อมต่อหมุดเซ็นเซอร์ทั้งหมด (16, 14, 12, 10, 8, 6, 4, 2) ตามที่แสดงในภาพ เดินสายไฟสำหรับต่อขาเซ็นเซอร์ 12 ผ่านด้านหลังของแผ่นไม้อัด
  • เชื่อมต่อพินควบคุมอีซีแอล (EVEN) กับพิน Teensy 30
  • เชื่อมต่อหมุดเซ็นเซอร์คี่ทั้งหมด (15, 13, 11, 9, 7, 5, 3, 1) ตามที่แสดงในภาพ
  • เชื่อมต่อตัวเก็บประจุด้วยไฟฟ้าขนาด 470uF ผ่าน Vcc และ Gnd

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

ขั้นตอนที่ 8: การสร้างต้นแบบ - ไมโครเกียร์มอเตอร์และตัวเข้ารหัส

การสร้างต้นแบบ - มอเตอร์ไมโครเกียร์และตัวเข้ารหัส
การสร้างต้นแบบ - มอเตอร์ไมโครเกียร์และตัวเข้ารหัส
  • แก้ไขมอเตอร์เกียร์โลหะขนาดเล็กด้วยตัวเข้ารหัสโดยใช้ที่ยึดมอเตอร์ N20
  • ต่อมอเตอร์และสายเอ็นโค้ดเดอร์ตามที่แสดงในภาพ
  • ตัวเข้ารหัสด้านซ้าย - Teensy pins 4 & 0
  • ตัวเข้ารหัสด้านขวา - Teensy pins 9 & 27

ขั้นตอนที่ 9: การสร้างต้นแบบ - LEDs

การสร้างต้นแบบ - LEDs
การสร้างต้นแบบ - LEDs
การสร้างต้นแบบ - LEDs
การสร้างต้นแบบ - LEDs

ไฟ LED สองดวงระบุว่าหุ่นยนต์ตรวจพบการเลี้ยวหรือไม่ ฉันใช้ตัวต้านทานซีรีย์ 470 โอห์มเพื่อเชื่อมต่อ LED กับ Teensy

  • แอโนด LED ซ้ายที่พิน Teensy 6
  • แอโนด LED ขวาที่พิน Teensy 8

ขั้นตอนที่ 10: การสร้างต้นแบบ - ฝ่าวงล้อม

Image
Image
การสร้างต้นแบบ - ฝ่าวงล้อม
การสร้างต้นแบบ - ฝ่าวงล้อม

ตอนนี้เราได้ทำการบัดกรีทั้งหมดของเราบน perfboard แล้ว เราสามารถตัดอย่างระมัดระวังตามขอบเขตที่ทำเครื่องหมายไว้บน perfboard และเอาบิตเพิ่มเติมของ perfboard ออก ติดล้อสองล้อและล้อเลื่อนด้วย

ใส่บอร์ดฝ่าวงล้อมทั้งหมดในซ็อกเก็ตตามลำดับ สำหรับการใส่เบรกเอาต์ FFC-DIP และสำหรับการแก้ไขเซ็นเซอร์สาย QTRX-MD-16A โปรดดูวิดีโอ

ขั้นตอนที่ 11: ภาพรวมไลบรารีซอฟต์แวร์

ภาพรวมไลบรารีซอฟต์แวร์
ภาพรวมไลบรารีซอฟต์แวร์

เราจะตั้งโปรแกรม Teensy ใน Arduino IDE เราจะต้องมีห้องสมุดก่อนที่เราจะเริ่ม ห้องสมุดที่เราจะใช้คือ:

  • ตัวเข้ารหัส
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

และบางส่วนที่เขียนขึ้นโดยเฉพาะสำหรับหุ่นยนต์ตัวนี้

  • ปุ่มกด
  • LineSensor
  • TeensyviewMenu
  • มอเตอร์

ไลบรารีเฉพาะของโรบ็อตนี้จะกล่าวถึงโดยละเอียดและสามารถดาวน์โหลดได้ในขั้นตอนต่อไป

ขั้นตอนที่ 12: อธิบายไลบรารี - ปุ่มกด

ห้องสมุดนี้มีไว้สำหรับเชื่อมต่อกระดานฝ่าวงล้อมปุ่มกดกับ Teensy ฟังก์ชันที่ใช้คือ

ปุ่มกด (int leftButtonPin, int centerButtonPin, int rightButtonPin);

การเรียกคอนสตรัคเตอร์นี้โดยการสร้างอ็อบเจ็กต์จะกำหนดค่าหมุดปุ่มกดเป็นโหมด INPUT_PULLUP

int8_t waitForButtonPress (เป็นโมฆะ);

ฟังก์ชันนี้จะรอจนกว่าจะมีการกดและปล่อยปุ่มและส่งคืนรหัสคีย์

int8_t getSingleButtonPress (เป็นโมฆะ);

ฟังก์ชันนี้จะตรวจสอบว่ามีการกดและปล่อยปุ่มหรือไม่ ถ้าใช่ ส่งคืนรหัสคีย์ มิฉะนั้นจะคืนค่าศูนย์

ขั้นตอนที่ 13: อธิบายไลบรารี - Line Sensor

LineSensor เป็นไลบรารีสำหรับเชื่อมต่ออาร์เรย์เซ็นเซอร์สายกับ Teensy ต่อไปนี้เป็นฟังก์ชันที่ใช้

LineSensor(เป็นโมฆะ);

การเรียกตัวสร้างนี้โดยการสร้างอ็อบเจ็กต์จะเริ่มต้น ADC0 และ ADC1 อ่านค่าขีดจำกัด ค่าต่ำสุดและสูงสุดจาก EEPROM และกำหนดค่าพินเซ็นเซอร์เป็นโหมดอินพุตและพินควบคุมอีซีแอลเป็นโหมดเอาต์พุต

สอบเทียบเป็นโมฆะ (uint8_t calibrationMode);

ฟังก์ชันนี้ปรับเทียบเซ็นเซอร์สาย โหมดการสอบเทียบสามารถเป็นได้ทั้ง MIN_MAX หรือ MEDIAN_FILTER ฟังก์ชันนี้จะอธิบายโดยละเอียดในขั้นตอนต่อไป

เป็นโมฆะ getSensorsAnalog (uint16_t *sensorValue, โหมด uint8_t);

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

int getLinePosition(uint16_t *sensorValue);

คำนวณตำแหน่งของอาร์เรย์เซ็นเซอร์เหนือเส้นโดยวิธีถัวเฉลี่ยถ่วงน้ำหนัก

uint16_t getSensorsBinary (uint16_t *sensorValue);

ส่งกลับการแสดงสถานะของเซ็นเซอร์แบบ 16 บิต เลขฐานสองบ่งชี้ว่าเซ็นเซอร์อยู่เหนือเส้น และเลขฐานสองบ่งชี้ว่าเซ็นเซอร์อยู่นอกเส้น

uint8_t countBinary (uint16_t binaryValue);

การส่งค่าเซ็นเซอร์ 16 บิตไปยังฟังก์ชันนี้จะคืนค่าจำนวนเซ็นเซอร์ที่เกินเส้น

เป็นโมฆะ getSensorsNormalized (uint16_t *sensorValue, โหมด uint8_t);

อ่านค่าเซ็นเซอร์และจำกัดค่าเซ็นเซอร์แต่ละค่าให้เป็นค่าต่ำสุดและสูงสุดที่สอดคล้องกัน จากนั้น ค่าเซ็นเซอร์จะถูกจับคู่จากช่วงต่ำสุดถึงสูงสุดที่สอดคล้องกันจนถึงช่วง 0 ถึง 1000

ขั้นตอนที่ 14: อธิบายไลบรารี่ - TeensyviewMenu

TeensyviewMenu เป็นห้องสมุดที่สามารถเข้าถึงฟังก์ชั่นสำหรับเมนูแสดงผลได้ ต่อไปนี้เป็นฟังก์ชันที่ใช้

TeensyViewMenu (เป็นโมฆะ);

การเรียกตัวสร้างนี้จะสร้างวัตถุของคลาส LineSensor, PushButton และ TeensyView

บทนำเป็นโมฆะ (เป็นโมฆะ);

นี้สำหรับการนำทางเมนู

การทดสอบเป็นโมฆะ(เป็นโมฆะ);

สิ่งนี้เรียกว่าภายในเมนูเมื่อจะแสดงค่าเซ็นเซอร์บรรทัดบน Teensyview สำหรับการทดสอบ

ขั้นตอนที่ 15: อธิบายไลบรารี่ - Motors

Motors เป็นห้องสมุดที่ใช้สำหรับขับเคลื่อนมอเตอร์สองตัว ต่อไปนี้เป็นฟังก์ชันที่ใช้

มอเตอร์(เป็นโมฆะ);

การเรียกคอนสตรัคเตอร์นี้โดยการสร้างอ็อบเจ็กต์จะกำหนดค่าการควบคุมทิศทางของมอเตอร์และพินควบคุม PWM ให้เป็นโหมดเอาต์พุต

เป็นโมฆะ setSpeed (int leftMotorSpeed, int rightMotorSpeed);

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

ขั้นตอนที่ 16: การทดสอบ - Encoder Odometry

เราจะทดสอบเครื่องเข้ารหัสล้อแม่เหล็กและแสดงตำแหน่งและระยะทางที่หุ่นยนต์ครอบคลุม

อัปโหลด DualEncoderTeensyview.ino โปรแกรมแสดงขีดตัวเข้ารหัสบน Teensyview ตัวเข้ารหัสจะทำเครื่องหมายทีละส่วนหากคุณขยับหุ่นยนต์ไปข้างหน้า และลดระดับลงหากคุณเคลื่อนตัวไปข้างหลัง

ตอนนี้อัปโหลด EncoderOdometry.ino โปรแกรมนี้แสดงตำแหน่งของหุ่นยนต์ในแง่ของพิกัด x-y แสดงระยะทางรวมเป็นเซนติเมตร และมุมหมุนเป็นองศา

ฉันได้อ้างอิง Implementing Dead Reckoning by Odometry บนหุ่นยนต์ที่มี R/C Servo Differential Drive โดย Seattle Robotics Society เพื่อกำหนดตำแหน่งจากเห็บตัวเข้ารหัส

ขั้นตอนที่ 17: การทดสอบ - Prop Shield Motion Sensors

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

ตอนนี้อัปโหลด PropShieldTeensyView.ino คุณควรจะสามารถเห็นค่าความเร่ง ไจโร และแมกนิโตมิเตอร์ของทั้งสามแกนบน Teensyview

ขั้นตอนที่ 18: ภาพรวมโปรแกรม

โปรแกรมสำหรับผู้ติดตามบรรทัดขั้นสูงเขียนใน Arduino IDE โปรแกรมทำงานตามลำดับต่อไปนี้ที่อธิบายไว้ด้านล่าง

  • ค่าที่เก็บไว้ใน EEPROM จะถูกอ่านและเมนูจะปรากฏขึ้น
  • เมื่อกด LAUNCH โปรแกรมจะเข้าสู่ลูป
  • ค่าเซ็นเซอร์บรรทัดมาตรฐานจะถูกอ่าน
  • หาค่าไบนารีของตำแหน่งเส้นโดยใช้ค่าเซ็นเซอร์ที่ทำให้เป็นมาตรฐาน
  • การนับจำนวนเซ็นเซอร์ที่อยู่เหนือเส้นคำนวณจากค่าไบนารีของตำแหน่งเส้น
  • เห็บตัวเข้ารหัสได้รับการอัปเดตและครอบคลุมระยะทางทั้งหมด พิกัด xy และมุมได้รับการอัปเดต
  • สำหรับค่าต่าง ๆ ของการนับเลขฐานสองตั้งแต่ 0 ถึง 16 ชุดคำสั่งจะถูกดำเนินการ หากจำนวนไบนารีอยู่ในช่วง 1 ถึง 5 และหากเซ็นเซอร์ที่อยู่เหนือเส้นอยู่ติดกัน รูทีน PID จะถูกเรียก การหมุนจะดำเนินการร่วมกับค่าไบนารีและการนับเลขฐานสองอื่น ๆ
  • ในรูทีน PID (ซึ่งเป็นรูทีนของ PD) มอเตอร์จะถูกขับเคลื่อนด้วยความเร็วที่คำนวณจากข้อผิดพลาด การเปลี่ยนแปลงข้อผิดพลาด ค่า Kp และ Kd

โปรแกรมในปัจจุบันไม่ได้วัดค่าการวางแนวจาก prop shield นี่คืองานที่กำลังดำเนินการและกำลังปรับปรุง

อัพโหลด TestRun20.ino เราจะดูวิธีการนำทางในเมนู ปรับการตั้งค่า และวิธีปรับเทียบเซ็นเซอร์สายในขั้นตอนต่อไป ซึ่งเราจะทำการทดสอบหุ่นยนต์ของเรา

ขั้นตอนที่ 19: การนำทางเมนูและการตั้งค่า

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

  1. ปรับเทียบ: เพื่อสอบเทียบเซ็นเซอร์สาย
  2. ทดสอบ: เพื่อแสดงค่าเซ็นเซอร์สาย
  3. เปิดตัว: เพื่อเริ่มการติดตามบรรทัด
  4. MAX SPEED: เพื่อกำหนดขีด จำกัด บนของความเร็วของหุ่นยนต์
  5. ความเร็วในการหมุน: เพื่อกำหนดขีดจำกัดสูงสุดของความเร็วของหุ่นยนต์เมื่อทำการเลี้ยว เช่น เมื่อล้อทั้งสองหมุนด้วยความเร็วเท่ากันในทิศทางตรงกันข้าม
  6. KP: ค่าคงที่ตามสัดส่วน
  7. KD: ค่าคงที่อนุพันธ์
  8. RUN MODE: เพื่อเลือกระหว่างสองโหมดการทำงาน - NORMAL และ ACCL ในโหมดปกติ หุ่นยนต์ทำงานด้วยความเร็วที่กำหนดไว้ล่วงหน้าซึ่งสอดคล้องกับค่าตำแหน่งสาย ในโหมด ACCL ความเร็วสูงสุดของหุ่นยนต์จะถูกแทนที่ด้วย ACCL SPEED ที่ระยะที่กำหนดไว้ล่วงหน้าของลู่วิ่ง สามารถใช้เพื่อเพิ่มความเร็วของหุ่นยนต์ที่ส่วนตรงของราง การตั้งค่าต่อไปนี้สามารถเข้าถึงได้เฉพาะเมื่อตั้งค่า RUN MODE เป็น ACCL
  9. LAP DISTANCE: เพื่อกำหนดความยาวรวมของสนามแข่ง
  10. ACCL SPEED: เพื่อกำหนดความเร็วการเร่งความเร็วของหุ่นยนต์ ความเร็วนี้จะแทนที่ MAX SPEED ที่ระยะต่างๆ ของแทร็กตามที่กำหนดไว้ด้านล่าง
  11. ไม่. OF STAGES: เพื่อกำหนดจำนวนสเตจที่ใช้ ACCL SPEED
  12. ขั้นที่ 1: เพื่อกำหนดระยะทางเริ่มต้นและสิ้นสุดของสเตจที่ MAX SPEED ถูกแทนที่ด้วย ACCL SPEED สำหรับแต่ละขั้นตอน สามารถกำหนดระยะทางเริ่มต้นและสิ้นสุดแยกกันได้

ขั้นตอนที่ 20: การปรับเทียบเซ็นเซอร์สาย

Image
Image

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

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

MIN MAX: ในวิธีนี้ ค่าเซ็นเซอร์จะถูกอ่านซ้ำๆ จนกว่าผู้ใช้จะแจ้งให้หยุด ค่าสูงสุดและต่ำสุดที่พบโดยเซ็นเซอร์แต่ละตัวจะถูกเก็บไว้ ค่าขีดจำกัดคือค่าเฉลี่ยของค่าต่ำสุดและสูงสุด

ค่าเกณฑ์ที่ได้รับจึงถูกแมปกับช่วง 0 ถึง 1,000

การปรับเทียบเซ็นเซอร์สายโดยวิธี MIN MAX แสดงในวิดีโอ หลังจากปรับเทียบเซ็นเซอร์สายแล้ว สามารถดูข้อมูลได้ดังแสดงในภาพ ข้อมูลต่อไปนี้จะปรากฏขึ้น

  • การแสดงตำแหน่งของเส้นแบบไบนารี 16 บิตด้วยเลขฐานสอง 1 ซึ่งบ่งชี้ว่าเซ็นเซอร์สายที่สอดคล้องกันอยู่เหนือเส้น และเลขฐานสอง 0 แสดงว่าเซ็นเซอร์สายอยู่นอกเส้น
  • การนับจำนวนเซ็นเซอร์ทั้งหมดที่เกินเส้น
  • ค่าต่ำสุด สูงสุด และเซ็นเซอร์ (แบบ raw และ normalized) ของเซ็นเซอร์ 16 ตัว ครั้งละหนึ่งเซ็นเซอร์
  • ตำแหน่งเส้นในช่วง -7500 ถึง +7500

ค่าเซ็นเซอร์บรรทัดต่ำสุดและสูงสุดจะถูกเก็บไว้ใน EEPROM

ขั้นตอนที่ 21: ทดสอบการทำงาน

Image
Image

วิดีโอนี้เป็นการทดสอบการทำงานซึ่งหุ่นยนต์ถูกตั้งโปรแกรมให้หยุดหลังจากเสร็จสิ้นหนึ่งรอบ

ขั้นตอนที่ 22: ความคิดสุดท้ายและการปรับปรุง

การแข่งขันหุ่นยนต์
การแข่งขันหุ่นยนต์

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

ขอให้โชคดี.

การแข่งขันหุ่นยนต์
การแข่งขันหุ่นยนต์

รางวัลรองชนะเลิศการประกวดหุ่นยนต์

แนะนำ: