สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดี!
นี่เป็นครั้งแรกที่ฉันเขียนเกี่ยวกับ Instrucables และวันนี้ฉันจะพาคุณไป และอธิบายเกี่ยวกับวิธีการสร้างสายตาม PID ตามหุ่นยนต์โดยใช้อาร์เรย์เซ็นเซอร์ QTR-8RC
ก่อนจะไปสร้างหุ่นยนต์ เราต้องเข้าใจก่อนว่า PID คืออะไร
ขั้นตอนที่ 1: หลักการทำงาน
PID คืออะไร??
คำว่า PID หมายถึง สัดส่วน ปริพันธ์ อนุพันธ์ ดังนั้นง่ายๆ สิ่งที่เราทำกับ PID ที่มีบรรทัดตามหลังคือ เรากำลังออกคำสั่งให้หุ่นยนต์ติดตามเส้นและตรวจจับการเลี้ยวโดยการคำนวณข้อผิดพลาดโดยพิจารณาจากวิธี ไกลมันได้ย้ายออกจากการติดตาม
คำสำคัญตามที่ระบุไว้ในเอกสาร polalu
ค่าตามสัดส่วนเป็นสัดส่วนโดยประมาณกับตำแหน่งของหุ่นยนต์ของคุณเทียบกับเส้น นั่นคือ หากหุ่นยนต์ของคุณมีศูนย์กลางที่เส้นตรงอย่างแม่นยำ เราคาดว่าค่าตามสัดส่วนจะเป็น 0 อย่างแน่นอน
ค่าปริพันธ์จะบันทึกประวัติการเคลื่อนไหวของหุ่นยนต์ของคุณ: เป็นผลรวมของค่าทั้งหมดของระยะตามสัดส่วนที่บันทึกไว้ตั้งแต่หุ่นยนต์เริ่มทำงาน
อนุพันธ์คืออัตราการเปลี่ยนแปลงของมูลค่าตามสัดส่วน
ในบทช่วยสอนนี้ เราจะพูดถึงเฉพาะคำศัพท์ Kp และ Kd เท่านั้น อย่างไรก็ตาม ผลลัพธ์สามารถทำได้โดยใช้คำศัพท์ Ki เช่นกัน การอ่านที่เราได้รับจากเซ็นเซอร์ไม่ได้เป็นเพียงการอ่านแบบแอนะล็อกเท่านั้น แต่ยังรวมถึงการอ่านตำแหน่งของหุ่นยนต์ด้วย.โดยพื้นฐานแล้ว เซ็นเซอร์จะให้ค่าตั้งแต่ 0 ถึง 2500 ตั้งแต่การสะท้อนแสงสูงสุดไปจนถึงการสะท้อนแสงต่ำสุด แต่ในขณะเดียวกันก็ยังให้ข้อมูลว่าหุ่นยนต์อยู่ไกลจากเส้นมากเพียงใด)
ตอนนี้เราต้องพิจารณาข้อผิดพลาด, นี่คือความแตกต่างของค่า setpoint สองค่าและค่าปัจจุบัน ค่าคือค่าที่อ่านได้ทันทีของเซ็นเซอร์ ตัวอย่างเช่น หากคุณใช้เซ็นเซอร์อาร์เรย์นี้และใช้งานเซ็นเซอร์ 8 ตัว คุณจะได้รับค่าการอ่านตำแหน่ง 3500 หากคุณอยู่ตรงจุด ประมาณ 0 ถ้าคุณอยู่ไกลจาก เส้นและประมาณ 7000 ถ้าคุณอยู่ไกลเกินไป) เป้าหมายของเราคือทำให้ข้อผิดพลาดเป็นศูนย์ จากนั้นหุ่นยนต์เท่านั้นที่สามารถทำตามเส้นได้อย่างราบรื่น
แล้วก็มาถึงส่วนการคำนวณ.
1) คำนวณข้อผิดพลาด
ข้อผิดพลาด = ค่าที่ตั้งไว้ - ค่าปัจจุบัน = 3500 - ตำแหน่ง
ในขณะที่ฉันใช้เซ็นเซอร์ 8 ตัว เซ็นเซอร์ให้การอ่านตำแหน่ง 3500 เมื่อวางหุ่นยนต์อย่างสมบูรณ์ ตอนนี้เราได้คำนวณข้อผิดพลาดของเราแล้ว ระยะขอบที่หุ่นยนต์ของเราลอยข้ามแทร็ก ถึงเวลาที่เราจะพิจารณาข้อผิดพลาดและปรับความเร็วของมอเตอร์ให้เหมาะสม
2) กำหนดความเร็วที่ปรับของมอเตอร์
MotorSpeed = Kp * ข้อผิดพลาด + Kd * (ข้อผิดพลาด - LastError);
LastError = ข้อผิดพลาด;
RightMotorSpeed = RightBaseSpeed + MotorSpeed;
LeftMotorSpeed = LeftBaseSpeed - ความเร็วมอเตอร์;
ในทางตรรกะ ข้อผิดพลาด 0 หมายความว่าหุ่นยนต์ของเราออกไปทางซ้าย ซึ่งหมายความว่าหุ่นยนต์ของเราต้องไปทางขวาเล็กน้อย ซึ่งหมายความว่ามอเตอร์ด้านขวาต้องช้าลงและมอเตอร์ด้านซ้ายต้องเร่งความเร็ว นี่คือ PID!
ค่า MotorSpeed ถูกกำหนดจากสมการเอง RightBaseSpeed และ LeftBaseSpeed คือความเร็ว (ค่าใดๆ ของ PWM 0-255) ที่หุ่นยนต์ทำงานเมื่อข้อผิดพลาดเป็นศูนย์
รหัสที่ฉันแนบมานั้นยังรวมถึงวิธีตรวจสอบค่าตำแหน่งของเซ็นเซอร์ด้วย เพื่อให้คุณสามารถเปิดมอนิเตอร์แบบอนุกรมและอัปโหลดโค้ด และดูด้วยตัวคุณเองด้วยเส้นที่มอเตอร์หมุนเมื่อตำแหน่งต่างกันไป
หากคุณประสบปัญหาในการใช้งานหุ่นยนต์ ให้ตรวจสอบดูว่าโดยการเปลี่ยนสัญลักษณ์ของสมการหรือไม่ !!!
และตอนนี้ส่วนที่ยากที่สุดในการค้นหา Kp และ Kd ฉันต้องใช้เวลามากกว่า 1 ชั่วโมงในการปรับแต่งหุ่นยนต์ของฉันให้สมบูรณ์แบบ แทนที่จะใส่ค่าแบบสุ่ม ฉันพบวิธีที่ง่ายกว่าในการพิจารณาสิ่งนี้
- เริ่มต้นด้วย kp และ Kd เท่ากับ 0 และเริ่มด้วย Kp ขั้นแรกให้ลองตั้งค่า Kp เป็น 1 และสังเกตหุ่นยนต์ เป้าหมายของเราคือทำตามเส้นแม้ว่าจะสั่นก็ตาม ถ้าหุ่นยนต์ยิงเกินและเสียเส้นจะลดค่า kp.ถ้าหุ่นยนต์ไม่สามารถนำทางเลี้ยวและเฉื่อยเพิ่มค่า Kp
- เมื่อหุ่นยนต์ดูเหมือนว่าจะไปตามเส้นบ้าง ให้ปรับค่า Kd (ค่า Kd >ค่า Kp) เริ่มจาก 1 และเพิ่มค่าจนกว่าคุณจะเห็นการขับที่ราบรื่นและมีการโยกเยกน้อยลง
- เมื่อหุ่นยนต์เริ่มเดินตามเส้น ให้เพิ่มความเร็วและดูว่าหุ่นยนต์สามารถรักษาและเดินตามเส้นได้หรือไม่
โปรดทราบว่าความเร็วมีผลโดยตรงต่อการปรับแต่ง PID และบางครั้งคุณอาจต้องปรับใหม่เพื่อให้ตรงกับความเร็วของหุ่นยนต์ของคุณ
ตอนนี้เราสามารถลงไปสร้างหุ่นยนต์ของเราได้แล้ว
ขั้นตอนที่ 2: การสร้าง
Arduino atmega 2560 พร้อมสาย USB – นี่คือไมโครคอนโทรลเลอร์หลักที่ใช้
แชสซี- สำหรับแชสซีของหุ่นยนต์ ฉันใช้แผ่นอะคริลิกทรงกลม 2 แผ่นที่ใช้สำหรับโปรเจ็กต์อื่นซึ่งเหมาะสำหรับสิ่งนี้ ฉันได้สร้างโครงเครื่อง 2 ชั้นโดยใช้น็อตและสกรู เพื่อให้ฉันสามารถแนบโมดูลอื่นๆ เข้ากับเพลตบนได้ คุณสามารถใช้แชสซีสำเร็จรูปได้
www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…
มอเตอร์เกียร์แบบไมโครเมทัล- หุ่นยนต์ต้องการมอเตอร์ที่หมุนเร็วเพื่อรับมือกับกิจวัตร PID เพราะผมใช้มอเตอร์ที่มีอัตราความเร็ว 6V 400rpm และล้อที่ยึดเกาะได้ดี
www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…
www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…
อาร์เรย์เซ็นเซอร์ QTR 8Rc – สามารถใช้สำหรับการติดตามสายตามที่กล่าวไว้ก่อนหน้านี้ ฉันคิดว่าตอนนี้คุณมีความเข้าใจที่ชัดเจนเกี่ยวกับวิธีการใช้งานอาร์เรย์เซ็นเซอร์ด้วย PID โค้ดนี้ง่ายมากและการใช้ไลบรารี Arduino ที่มีอยู่ คุณจะทำได้ เพื่อสร้างผู้ติดตามสายด่วน
www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…
TB6612FNG ไดรเวอร์มอเตอร์-ฉันต้องการใช้ตัวขับมอเตอร์ที่สามารถจัดการกับการเลี้ยวและเปลี่ยนทิศทางได้ในพริบตา ซึ่งสามารถเบรกมอเตอร์ได้อย่างมีประสิทธิภาพเมื่อสัญญาณ PWM เหลือน้อย
www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…
แบตเตอรี่ Lipo - แบตเตอรี่ lipo 11.1V ใช้เพื่อให้พลังงานแก่หุ่นยนต์ แม้ว่าฉันจะใช้แบตเตอรี่ lipo 11.1 V ความจุนี้มากกว่าที่จำเป็นสำหรับ Arduino และมอเตอร์ หากคุณพบ 7.4V ที่มีน้ำหนักเบา แบตเตอรี่ lipo หรือก้อนแบตเตอรี่ Ni-MH 6V มันจะสมบูรณ์แบบ ด้วยเหตุนี้ฉันจึงต้องใช้ตัวแปลงบั๊กเพื่อแปลงแรงดันไฟฟ้าเป็น 6V
11.1V-
7.4 V-
โมดูลแปลงบั๊ก-
นอกจากนี้ คุณต้องใช้สายจัมเปอร์ น็อตและสลักเกลียว ไขควงและเทปไฟฟ้า และสายรัดซิปเพื่อให้แน่ใจว่าทุกอย่างเข้าที่
ขั้นตอนที่ 3: การประกอบ
ติดมอเตอร์และล้อลูกล้อขนาดเล็กเข้ากับจานโดยใช้น็อตและสกรู จากนั้นจึงติดตั้งเซ็นเซอร์ QTR, ไดรเวอร์มอเตอร์, บอร์ด Arduino และสุดท้ายใส่แบตเตอรี่เข้ากับแชสซี
นี่คือไดอะแกรมที่สมบูรณ์แบบที่ฉันพบบนอินเทอร์เน็ต ซึ่งจะบอกคุณว่าควรทำการเชื่อมต่ออย่างไร
ขั้นตอนที่ 4: ออกแบบ Line Track ของคุณ
ตอนนี้โปรเจ็กต์ของคุณใกล้จะจบลงแล้ว สำหรับขั้นตอนสุดท้าย คุณต้องมีเวทีเล็ก ๆ เพื่อทดสอบหุ่นยนต์ของคุณ ฉันใช้เส้นสุ่มเส้นสีขาวกว้าง 3 ซม. บนพื้นหลังสีดำ ตรวจสอบให้แน่ใจว่าคุณวางทุกอย่างไว้อย่างดีและในขณะนี้ให้หลีกเลี่ยงมุมตัดและหน้าตัด 90 องศา เนื่องจากเป็นกรณีที่ซับซ้อนในจุดของการเข้ารหัส
ขั้นตอนที่ 5: ตั้งโปรแกรมรหัสของคุณ
1. ดาวน์โหลดและติดตั้ง Arduino
IDE เดสก์ท็อป
· windows -
· Mac OS X -
· ลินุกซ์ -
2. ดาวน์โหลดและวางไฟล์อาร์เรย์เซ็นเซอร์ QTR 8 RC ลงในโฟลเดอร์ไลบรารี Arduino
·
· วางไฟล์ลงในพาธ - C:\Arduino\libraries
3. ดาวน์โหลดและเปิดLINEFOLLOWING.ino
4. อัปโหลดรหัสไปยังบอร์ด Arduino ผ่านสาย USB
ขั้นตอนที่ 6: เสร็จสิ้น !
ตอนนี้คุณมีหุ่นยนต์ติดตามบรรทัดที่สร้างขึ้นเองแล้ว
หวังว่าบทช่วยสอนนี้จะเป็นประโยชน์ อย่าลังเลที่จะติดต่อฉันทาง [email protected] หากคุณมีปัญหาใดๆ
แล้วพบกันใหม่กับโครงการใหม่
สนุกกับการสร้าง!!