สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ภาพรวมระบบ
- ขั้นตอนที่ 2: มาเริ่มสร้างต้นแบบกันเถอะ
- ขั้นตอนที่ 3: การสร้างต้นแบบ - Perfboard
- ขั้นตอนที่ 4: การสร้างต้นแบบ - Prop Shield
- ขั้นตอนที่ 5: การสร้างต้นแบบ - พลังและพื้นดิน
- ขั้นตอนที่ 6: การสร้างต้นแบบ - Motor Driver Carrier
- ขั้นตอนที่ 7: การสร้างต้นแบบ - Line Sensor Array Header
- ขั้นตอนที่ 8: การสร้างต้นแบบ - ไมโครเกียร์มอเตอร์และตัวเข้ารหัส
- ขั้นตอนที่ 9: การสร้างต้นแบบ - LEDs
- ขั้นตอนที่ 10: การสร้างต้นแบบ - ฝ่าวงล้อม
- ขั้นตอนที่ 11: ภาพรวมไลบรารีซอฟต์แวร์
- ขั้นตอนที่ 12: อธิบายไลบรารี - ปุ่มกด
- ขั้นตอนที่ 13: อธิบายไลบรารี - Line Sensor
- ขั้นตอนที่ 14: อธิบายไลบรารี่ - TeensyviewMenu
- ขั้นตอนที่ 15: อธิบายไลบรารี่ - Motors
- ขั้นตอนที่ 16: การทดสอบ - Encoder Odometry
- ขั้นตอนที่ 17: การทดสอบ - Prop Shield Motion Sensors
- ขั้นตอนที่ 18: ภาพรวมโปรแกรม
- ขั้นตอนที่ 19: การนำทางเมนูและการตั้งค่า
- ขั้นตอนที่ 20: การปรับเทียบเซ็นเซอร์สาย
- ขั้นตอนที่ 21: ทดสอบการทำงาน
- ขั้นตอนที่ 22: ความคิดสุดท้ายและการปรับปรุง
วีดีโอ: หุ่นยนต์ติดตามบรรทัดขั้นสูง: 22 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
นี่คือหุ่นยนต์ติดตามบรรทัดขั้นสูงที่ใช้เซ็นเซอร์สาย 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: มาเริ่มสร้างต้นแบบกันเถอะ
เราจะนำวงจรข้างต้นไปใช้กับบอร์ดที่สมบูรณ์แบบ ก่อนอื่นเราต้องเตรียมบอร์ดฝ่าวงล้อมให้พร้อมด้วยการบัดกรีส่วนหัว วิดีโอจะให้แนวคิดเกี่ยวกับส่วนหัวที่ควรบัดกรีบนกระดานฝ่าวงล้อม
หลังจากบัดกรีส่วนหัวบนกระดานฝ่าวงล้อมแล้ว ให้วาง Teensyview และปุ่ม breakout ที่ด้านบนของ Teensy
ขั้นตอนที่ 3: การสร้างต้นแบบ - Perfboard
รับแผ่นต่อต้นแบบสองด้านขนาด 15x20 ซม. และทำเครื่องหมายขอบด้วยเครื่องหมายถาวรตามที่แสดงในภาพ เจาะรูขนาด M2 สำหรับติดตั้งอาร์เรย์เซ็นเซอร์ ล้อเลื่อน และมอเตอร์เกียร์โลหะขนาดเล็กบนตำแหน่งที่ทำเครื่องหมายด้วยวงกลมสีขาว ต่อมาเราจะตัดแผ่นไม้อัดตามขอบหลังจากบัดกรีและทดสอบส่วนประกอบทั้งหมด
เราจะเริ่มสร้างต้นแบบของเราด้วยการบัดกรีหมุดส่วนหัวและซ็อกเก็ตบนกระดานต่อ กระดานฝ่าวงล้อมจะถูกแทรกลงในส่วนหัวเหล่านี้ในภายหลัง ให้ความสนใจกับตำแหน่งของส่วนหัวบนแผ่นกระดานอย่างระมัดระวัง เราจะเชื่อมต่อสายไฟทั้งหมดตามเลย์เอาต์ของส่วนหัวนี้
ขั้นตอนที่ 4: การสร้างต้นแบบ - 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
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
ไฟ LED สองดวงระบุว่าหุ่นยนต์ตรวจพบการเลี้ยวหรือไม่ ฉันใช้ตัวต้านทานซีรีย์ 470 โอห์มเพื่อเชื่อมต่อ LED กับ Teensy
- แอโนด LED ซ้ายที่พิน Teensy 6
- แอโนด LED ขวาที่พิน Teensy 8
ขั้นตอนที่ 10: การสร้างต้นแบบ - ฝ่าวงล้อม
ตอนนี้เราได้ทำการบัดกรีทั้งหมดของเราบน 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: การนำทางเมนูและการตั้งค่า
เมนูมีการตั้งค่าต่อไปนี้ซึ่งสามารถนำทางได้โดยใช้ปุ่มกดซ้ายและขวา และเลือกโดยใช้ปุ่มกดตรงกลาง การตั้งค่าและฟังก์ชันต่างๆ ได้อธิบายไว้ด้านล่าง
- ปรับเทียบ: เพื่อสอบเทียบเซ็นเซอร์สาย
- ทดสอบ: เพื่อแสดงค่าเซ็นเซอร์สาย
- เปิดตัว: เพื่อเริ่มการติดตามบรรทัด
- MAX SPEED: เพื่อกำหนดขีด จำกัด บนของความเร็วของหุ่นยนต์
- ความเร็วในการหมุน: เพื่อกำหนดขีดจำกัดสูงสุดของความเร็วของหุ่นยนต์เมื่อทำการเลี้ยว เช่น เมื่อล้อทั้งสองหมุนด้วยความเร็วเท่ากันในทิศทางตรงกันข้าม
- KP: ค่าคงที่ตามสัดส่วน
- KD: ค่าคงที่อนุพันธ์
- RUN MODE: เพื่อเลือกระหว่างสองโหมดการทำงาน - NORMAL และ ACCL ในโหมดปกติ หุ่นยนต์ทำงานด้วยความเร็วที่กำหนดไว้ล่วงหน้าซึ่งสอดคล้องกับค่าตำแหน่งสาย ในโหมด ACCL ความเร็วสูงสุดของหุ่นยนต์จะถูกแทนที่ด้วย ACCL SPEED ที่ระยะที่กำหนดไว้ล่วงหน้าของลู่วิ่ง สามารถใช้เพื่อเพิ่มความเร็วของหุ่นยนต์ที่ส่วนตรงของราง การตั้งค่าต่อไปนี้สามารถเข้าถึงได้เฉพาะเมื่อตั้งค่า RUN MODE เป็น ACCL
- LAP DISTANCE: เพื่อกำหนดความยาวรวมของสนามแข่ง
- ACCL SPEED: เพื่อกำหนดความเร็วการเร่งความเร็วของหุ่นยนต์ ความเร็วนี้จะแทนที่ MAX SPEED ที่ระยะต่างๆ ของแทร็กตามที่กำหนดไว้ด้านล่าง
- ไม่. OF STAGES: เพื่อกำหนดจำนวนสเตจที่ใช้ ACCL SPEED
- ขั้นที่ 1: เพื่อกำหนดระยะทางเริ่มต้นและสิ้นสุดของสเตจที่ MAX SPEED ถูกแทนที่ด้วย ACCL SPEED สำหรับแต่ละขั้นตอน สามารถกำหนดระยะทางเริ่มต้นและสิ้นสุดแยกกันได้
ขั้นตอนที่ 20: การปรับเทียบเซ็นเซอร์สาย
การสอบเทียบเซ็นเซอร์สายเป็นกระบวนการที่กำหนดค่าเกณฑ์ของเซ็นเซอร์ทั้ง 16 ตัว ค่าเกณฑ์นี้ใช้เพื่อตัดสินใจว่าเซ็นเซอร์ตัวใดตัวหนึ่งอยู่เหนือเส้นหรือไม่ ในการกำหนดค่าเกณฑ์ของเซ็นเซอร์ 16 ตัว เราใช้วิธีใดวิธีหนึ่งจากสองวิธี
ตัวกรองค่ามัธยฐาน: ในวิธีนี้ เซนเซอร์แบบเส้นจะวางอยู่เหนือพื้นผิวสีขาว และจะมีการอ่านค่าเซนเซอร์ที่กำหนดไว้ล่วงหน้าสำหรับเซนเซอร์ทั้ง 16 ตัว ค่ามัธยฐานของเซ็นเซอร์ทั้ง 16 ตัวถูกกำหนด ขั้นตอนเดียวกันนี้ทำซ้ำหลังจากวางเซ็นเซอร์สายเหนือพื้นผิวสีดำ ค่าธรณีประตูคือค่าเฉลี่ยของค่ามัธยฐานของพื้นผิวขาวดำ
MIN MAX: ในวิธีนี้ ค่าเซ็นเซอร์จะถูกอ่านซ้ำๆ จนกว่าผู้ใช้จะแจ้งให้หยุด ค่าสูงสุดและต่ำสุดที่พบโดยเซ็นเซอร์แต่ละตัวจะถูกเก็บไว้ ค่าขีดจำกัดคือค่าเฉลี่ยของค่าต่ำสุดและสูงสุด
ค่าเกณฑ์ที่ได้รับจึงถูกแมปกับช่วง 0 ถึง 1,000
การปรับเทียบเซ็นเซอร์สายโดยวิธี MIN MAX แสดงในวิดีโอ หลังจากปรับเทียบเซ็นเซอร์สายแล้ว สามารถดูข้อมูลได้ดังแสดงในภาพ ข้อมูลต่อไปนี้จะปรากฏขึ้น
- การแสดงตำแหน่งของเส้นแบบไบนารี 16 บิตด้วยเลขฐานสอง 1 ซึ่งบ่งชี้ว่าเซ็นเซอร์สายที่สอดคล้องกันอยู่เหนือเส้น และเลขฐานสอง 0 แสดงว่าเซ็นเซอร์สายอยู่นอกเส้น
- การนับจำนวนเซ็นเซอร์ทั้งหมดที่เกินเส้น
- ค่าต่ำสุด สูงสุด และเซ็นเซอร์ (แบบ raw และ normalized) ของเซ็นเซอร์ 16 ตัว ครั้งละหนึ่งเซ็นเซอร์
- ตำแหน่งเส้นในช่วง -7500 ถึง +7500
ค่าเซ็นเซอร์บรรทัดต่ำสุดและสูงสุดจะถูกเก็บไว้ใน EEPROM
ขั้นตอนที่ 21: ทดสอบการทำงาน
วิดีโอนี้เป็นการทดสอบการทำงานซึ่งหุ่นยนต์ถูกตั้งโปรแกรมให้หยุดหลังจากเสร็จสิ้นหนึ่งรอบ
ขั้นตอนที่ 22: ความคิดสุดท้ายและการปรับปรุง
ฮาร์ดแวร์ที่ประกอบเข้าด้วยกันเพื่อสร้างหุ่นยนต์ตัวนี้ไม่ได้ถูกใช้งานอย่างเต็มรูปแบบโดยโปรแกรมที่รันมัน สามารถทำการปรับปรุงได้มากมายในส่วนของโปรแกรม ปัจจุบันเซนเซอร์จับความเคลื่อนไหวของ prop shield ไม่ได้ใช้สำหรับกำหนดตำแหน่งและทิศทาง ข้อมูลการวัดระยะทางจากตัวเข้ารหัสสามารถรวมกับข้อมูลการวางแนวจาก prop shield เพื่อกำหนดตำแหน่งและส่วนหัวของหุ่นยนต์ได้อย่างแม่นยำ ข้อมูลนี้อาจใช้เพื่อตั้งโปรแกรมให้หุ่นยนต์เรียนรู้เส้นทางในหลายรอบ ฉันแนะนำให้คุณทดลองในส่วนนี้และแบ่งปันผลลัพธ์ของคุณ
ขอให้โชคดี.
รางวัลรองชนะเลิศการประกวดหุ่นยนต์
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-