สารบัญ:
- ขั้นตอนที่ 1: การเตรียมห้องปฏิบัติการก่อนที่นักเรียนจะมาถึง
- ขั้นตอนที่ 2: ทำความคุ้นเคยกับหุ่นยนต์
- ขั้นตอนที่ 3: ปรับเทียบเซ็นเซอร์วัดแสง
- ขั้นตอนที่ 4: ทดสอบการปรับเทียบมอเตอร์
- ขั้นตอนที่ 5: เรียกใช้ On-Off Controller ที่ให้มา
- ขั้นตอนที่ 6: เปิด "01 Line" On-Off Controller Software
- ขั้นตอนที่ 7: ทำความเข้าใจกับซอฟต์แวร์ควบคุมการเปิด-ปิด "01 Line"
- ขั้นตอนที่ 8: การแก้ไขซอฟต์แวร์ควบคุมการเปิด-ปิด "01 Line"
- ขั้นตอนที่ 9: ทำความเข้าใจกับการเปิด-ปิด "02 Line" ด้วยซอฟต์แวร์ Dead-Zone Controller
- ขั้นตอนที่ 10: ทำความเข้าใจกับซอฟต์แวร์ควบคุมตามสัดส่วน "03 Line"
- ขั้นตอนที่ 11: การแก้ไขโปรแกรม 03 Line (การควบคุมตามสัดส่วน)
- ขั้นตอนที่ 12: ตัวควบคุม PID ขั้นสูง
- ขั้นตอนที่ 13: ค้นหาพารามิเตอร์ PID ที่ดีที่สุด
- ขั้นตอนที่ 14: บทสรุป
วีดีโอ: การสอนการควบคุม PID ด้วย Lego Robots: 14 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ผู้ที่ชื่นชอบหุ่นยนต์รุ่นเยาว์หลายคนสนใจหัวข้อการควบคุมขั้นสูง แต่อาจมีปัญหากับแคลคูลัสซึ่งมักใช้ในการวิเคราะห์ระบบลูปปิด มีแหล่งข้อมูลออนไลน์ที่ยอดเยี่ยมซึ่งช่วยลดความยุ่งยากในการสร้าง "Proportional Integral Differential Controller" (PID Controller) และคำอธิบายที่ยอดเยี่ยมอย่างหนึ่งอยู่ที่นี่:
อย่างไรก็ตาม สิ่งเหล่านี้อาจเป็นเรื่องยากที่จะปฏิบัติตาม และอาจไม่เหมาะสำหรับห้องเรียนที่มีนักเรียน 20 คนหรือมากกว่านั้น
คำแนะนำทีละขั้นตอนนี้แสดงวิธีการสอนนักเรียนให้สำเร็จโดยใช้ระบบหุ่นยนต์เลโก้ หุ่นยนต์จำนวนหนึ่ง (5 ถึง 10 ตัว) จำนวนเวิร์กสเตชันคอมพิวเตอร์ที่ใช้ NXT 2.0 เท่ากัน และรางสีดำเจ็ดฟุต เทปไฟฟ้าบนพื้น
ข้างกัน: ขอขอบคุณ J. Sluka ผู้เขียนลิงก์ด้านบน Dr. Bruce Linnell ผู้สร้างแล็บ Lego ในยุคแรกๆ ที่ระดับ ECPI University และ Dr. Reza Jafari ผู้ให้ PID Control ทำแผนที่แนวคิดเกี่ยวกับ EET220 และ หลักสูตร Capstone
ขั้นตอนที่ 1: การเตรียมห้องปฏิบัติการก่อนที่นักเรียนจะมาถึง
ให้นักเรียนรู้เกี่ยวกับการทำงานหนักของคุณ;-)
อาจารย์และผู้ช่วยสอนกำลังยุ่งมากในการเตรียมตัวให้คุณทำแล็บนี้! หุ่นยนต์ถูกชาร์จและประกอบสำหรับห้องปฏิบัติการนี้แล้ว หากจำเป็นต้องประกอบ อาจต้องใช้เวลาถึง 90 นาทีสำหรับหุ่นยนต์ตั้งแต่หนึ่งตัวขึ้นไป ต้องใช้เวลามากขึ้นในการชาร์จแบตเตอรี่หรือปรับสภาพแบตเตอรี่ด้วยรอบการชาร์จ/การคายประจุ สำหรับคำแนะนำโดยละเอียดเกี่ยวกับวิธีสร้างหุ่นยนต์ที่เราจะใช้ในวันนี้ โปรดดูที่ชุดการศึกษา NXT 2.0 หรือ 2.1 คู่มือการสร้างหุ่นยนต์ "ตามเส้น" เราจะใช้การเขียนโปรแกรมที่ซับซ้อนมากขึ้นแม้ว่า… เทปไฟฟ้าสีดำบนเสื่อน้ำมันสีอ่อนทำให้เป็นแทร็กที่ยอดเยี่ยม อันนี้คือ 3 'x 7' พร้อมส่วนโค้งครึ่งวงกลม
ขั้นตอนที่ 2: ทำความคุ้นเคยกับหุ่นยนต์
ขั้นแรก คุณจะทำความคุ้นเคยกับเมนูหุ่นยนต์ รวมถึงบางส่วนของหุ่นยนต์ตัวนี้ คุณจะได้เรียนรู้เกี่ยวกับเทคโนโลยีเซ็นเซอร์แบบอุตสาหกรรมที่หุ่นยนต์ใช้ รวมถึงไดโอดเปล่งแสง เซ็นเซอร์วัดแสง สเต็ปเปอร์มอเตอร์ และเซ็นเซอร์ตำแหน่งการหมุน โปรดกรอกข้อมูลที่ร้องขอทั้งหมด (โดยปกติจะขีดเส้นใต้ช่องว่าง _)
1. ถอดหุ่นยนต์ออกจากเครื่องชาร์จและ/หรือพอร์ต USB ของพีซีของคุณ ใช้ปุ่มสีส้มเพื่อเปิดหุ่นยนต์ ปุ่มสีส้ม ซ้ายและขวา และปุ่มสี่เหลี่ยมสีเทา "ย้อนกลับ" ช่วยให้สามารถนำทางเมนูได้ ไปที่เมนู "Software Files" และเลื่อนดูไฟล์ซอฟต์แวร์ที่มีอยู่บนโรบ็อต ระบุชื่อไฟล์ซอฟต์แวร์แต่ละไฟล์ ว่าสะกดอย่างไร รวมถึงการใช้อักษรตัวพิมพ์ใหญ่และการเว้นวรรค:
_
ขั้นตอนที่ 3: ปรับเทียบเซ็นเซอร์วัดแสง
2 ตรวจสอบเซ็นเซอร์วัดแสงและข้อมูลการสอบเทียบ กลับไปที่เมนูหลักและเลือก "ดู" เลือกตัวเลือก "แสงสะท้อน" และพอร์ต (ควรเป็น "พอร์ต 3") ซึ่งจะทำให้ไฟเปิดขึ้นและตัวเลขจะปรากฏบนหน้าจอ ตรวจสอบให้แน่ใจว่าทุกอย่างใช้งานได้ และบันทึกข้อมูลการสอบเทียบบางส่วน
NS. การอ่านสูงสุดโดยใช้กระดาษขาว: Number:_ อธิบายระยะห่างโดยประมาณจากกระดาษ: _
NS. ค่าการอ่านสูงสุดเมื่ออยู่บนพื้นเสื่อน้ำมันสีอ่อน: _
ค. การอ่านขั้นต่ำเมื่อชี้ไปที่กึ่งกลางของเทปไฟฟ้าสีดำ: _
ขั้นตอนที่ 4: ทดสอบการปรับเทียบมอเตอร์
3 ตรวจสอบมอเตอร์ล้อ (ซ้ายและขวา) ตลอดจนข้อมูลการสอบเทียบ กลับไปที่เมนูหลักและเลือก "การหมุนของมอเตอร์" เลือกพอร์ต (ควรเป็น "พอร์ต B" หรือ "พอร์ต C" สำหรับมอเตอร์ทั้งสอง) ดูว่าคุณสามารถตรวจสอบการสอบเทียบของค่าที่อ่านได้นี้หรือไม่โดยการหมุนมอเตอร์แต่ละตัวตามจำนวนรอบที่กำหนดในขณะที่ดูค่าที่อ่านได้ คุณจะทำการทดสอบการสอบเทียบแบบเดียวกันสำหรับมอเตอร์ทั้งสองโดยใช้หน้าจอการปรับเทียบ "มุมมอง" à "ระดับมอเตอร์"
มอเตอร์บนพอร์ต B
- จำนวนครั้งที่คุณหมุนวงล้อ _
- “การหมุนของมอเตอร์” แสดงค่า_
- ระยะทางเป็นองศา วงล้อหมุน_
- “องศามอเตอร์” แสดงค่า_
มอเตอร์บนพอร์ต C
- จำนวนครั้งที่คุณหมุนวงล้อ _
- “การหมุนของมอเตอร์” แสดงค่า_
- ระยะทางเป็นองศา วงล้อหมุน_
- “องศามอเตอร์” แสดงค่า_
ค่าที่แสดงสอดคล้องกับความคาดหวังของคุณหรือไม่? กรุณาอธิบาย. _
ขั้นตอนที่ 5: เรียกใช้ On-Off Controller ที่ให้มา
ตัวควบคุม "On-Off" (บางครั้งเรียกว่า "Bang-Bang") มีเพียงสองตัวเลือกเท่านั้น คือ เปิดและปิด คล้ายกับตัวควบคุมอุณหภูมิในบ้านของคุณ เมื่อตั้งค่าเป็นอุณหภูมิที่เลือก เทอร์โมสตัทจะทำความร้อนในบ้านหากเย็นเกินไป และทำให้บ้านเย็นลงหากร้อนเกินไป อุณหภูมิที่เลือกจะเรียกว่า "Set Point" และความแตกต่างระหว่างอุณหภูมิโรงเรือนปัจจุบันกับ Set-Point เรียกว่า "ข้อผิดพลาด" ดังนั้นคุณสามารถพูดได้ว่าถ้าข้อผิดพลาดเป็นบวกให้เปิด AC มิฉะนั้นให้เปิดความร้อน
ในกรณีของเรา หุ่นยนต์จะเลี้ยวซ้ายหรือขวา ขึ้นอยู่กับว่า Set-Point ของเซ็นเซอร์วัดแสงมีข้อผิดพลาดเชิงบวกหรือเชิงลบ (มากเกินไปบนพื้นสีขาว หรือมากเกินไปในเทปสีดำ)
คุณจะสังเกตเห็นว่าหุ่นยนต์ของคุณอาจโหลดด้วยโปรแกรมจำนวนหนึ่งแล้ว (หรือคุณสามารถใช้ไฟล์แนบ "01 line.rbt" ที่แนบมาที่นี่) ซึ่งจัดเก็บไว้ในนั้นด้วยชื่อเช่น "1 บรรทัด" และ "2 บรรทัด" และยังมี อาจเป็นตัวอักษรเพิ่มเติมหลังหมายเลขโปรแกรม เช่น “บรรทัด 3b” คุณจะต้องรันโปรแกรมด้วยหมายเลข “1” ในชื่อของมัน จากนั้นวางหุ่นยนต์ไว้บนแทร็กเทป โดยให้ผู้อาวุโสอยู่บนเส้นสีดำ พยายามอยู่ห่างจากหุ่นยนต์ตัวอื่นที่อยู่บนลู่วิ่งอยู่แล้ว เพื่อให้คุณสามารถจับเวลาหุ่นยนต์ของคุณโดยไม่รบกวนการชนกับหุ่นยนต์ตัวอื่น
4 วัดการทดลองตามเวลาต่อไปนี้:
NS. เวลาที่ต้องทำให้เส้นตรงด้านเดียวเสร็จ: _
NS. อธิบายการเคลื่อนที่ของหุ่นยนต์ทางตรง: _
ค. เวลาที่จะทำให้หนึ่งโค้งของแทร็ก: _
NS. อธิบายการเคลื่อนที่ของหุ่นยนต์รางโค้ง: _
อี ได้เวลาไปรอบ ๆ แทร็กเพียงครั้งเดียว: _
ขั้นตอนที่ 6: เปิด "01 Line" On-Off Controller Software
คุณจะเปิดซอฟต์แวร์ “LEGO MINDSTORMS NXT 2.0” (ไม่ใช่ซอฟต์แวร์ Edu 2.1) และคุณจะโหลดโปรแกรมที่เหมาะสมที่เรียกว่า "01 line.rbt" และตรวจสอบและแก้ไขซอฟต์แวร์ตามคำแนะนำด้านล่าง:
เปิดซอฟต์แวร์ “LEGO MINDSTORMS NXT 2.0” (ไม่ใช่ซอฟต์แวร์ Edu 2.1) ผู้สอนของคุณจะบอกคุณว่าไฟล์ถูกเก็บไว้ที่ไหนในคอมพิวเตอร์ของคุณ และจากตำแหน่งนั้น คุณจะเปิดโปรแกรม "1 บรรทัด" เพียงเลือก "ไฟล์" จากนั้นเลือก "เปิด" และเลือกโปรแกรม "1 บรรทัด" เพื่อเปิด
เมื่อเปิดโปรแกรมแล้ว คุณสามารถใช้ไอคอน "มือ" เพื่อย้ายภาพหน้าจอทั้งหมดของโปรแกรมไปรอบๆ และคุณสามารถใช้ไอคอน "ลูกศร" เพื่อคลิกที่วัตถุแต่ละชิ้นเพื่อดูว่ามันทำงานอย่างไร (และทำการเปลี่ยนแปลงด้วย).
ขั้นตอนที่ 7: ทำความเข้าใจกับซอฟต์แวร์ควบคุมการเปิด-ปิด "01 Line"
โปรแกรม “1 line” ใช้วิธีการควบคุมแบบ “เปิด-ปิด” ในกรณีนี้ ตัวเลือกคือ "เลี้ยวซ้าย" หรือ "เลี้ยวขวา" กราฟิกประกอบด้วยคำอธิบายขององค์ประกอบของโปรแกรม:
ขั้นตอนที่ 8: การแก้ไขซอฟต์แวร์ควบคุมการเปิด-ปิด "01 Line"
เปลี่ยน Set-point และเปรียบเทียบผลลัพธ์
คุณค้นพบค่าของมาตรวัดแสงในโลกแห่งความเป็นจริงในขั้นตอนที่ 2 ด้านบน คุณบันทึกค่าในส่วน b และ c ตัวเลขสำหรับค่าต่ำสุดและสูงสุดที่โรบ็อตจะเห็นเมื่อรันแทร็ก
5 คำนวณค่าจุดตั้งต้นที่ดี (ค่าเฉลี่ยของค่าต่ำสุดและสูงสุด): _
6 เลือกค่า set-pint ที่ไม่ดี (ตัวเลขที่ใกล้กับค่าต่ำสุดหรือสูงสุด): _
เปลี่ยน set-point เป็นค่าใดค่าหนึ่งโดยใช้ไอคอนลูกศรเพื่อคลิกที่กล่องการคำนวณข้อผิดพลาด และเปลี่ยนตัวเลขที่จะถูกลบ (ดูภาพด้านล่าง) ตอนนี้เชื่อมต่อหุ่นยนต์กับพีซีโดยใช้สาย USB ตรวจสอบให้แน่ใจว่าหุ่นยนต์เปิดอยู่ และดาวน์โหลดเวอร์ชันใหม่ของโปรแกรม "1 บรรทัด" ไปยังหุ่นยนต์ คุณจะเห็นว่าหุ่นยนต์ใช้เวลานานเท่าใดในการเคลื่อนที่ไปตามทิศทางตามเข็มนาฬิกา หนึ่งครั้งด้วยจุดตั้งค่า GOOD และอีกครั้งหนึ่งด้วยการตั้งค่าจุดแย่
7 ทดลองจับเวลาด้วยค่าเซ็ตพอยท์ GOOD และ BAD
NS. ได้เวลาเดินรอบสนามเพียงครั้งเดียว (GOOD Set-Point): _
NS. ได้เวลาไปรอบ ๆ แทร็กเพียงครั้งเดียว (BAD Set-Point): _
ข้อสังเกต / ข้อสรุปของคุณ? _
ขั้นตอนที่ 9: ทำความเข้าใจกับการเปิด-ปิด "02 Line" ด้วยซอฟต์แวร์ Dead-Zone Controller
หากเครื่องปรับอากาศและความร้อนในบ้านของคุณเปิดและปิดอยู่ตลอดวัน ระบบอาจทำลายระบบ HVAC ของคุณได้ (หรืออย่างน้อยก็ทำให้อายุการใช้งานสั้นลง) เทอร์โมสแตทส่วนใหญ่สร้างด้วย "โซนตาย" ในตัว ตัวอย่างเช่น หากจุดตั้งค่าของคุณคือ 70 องศาฟาเรนไฮต์ ตัวควบคุมอุณหภูมิอาจไม่เปิด AC จนกว่าจะถึง 72 องศา และจะไม่เปิดความร้อนจนกว่าอุณหภูมิจะลดลงเหลือ 68 องศา ถ้าโซนเดดโซนกว้างเกินไป บ้านอาจจะอึดอัด
ในกรณีของเรา เราจะใช้โปรแกรม 02 line เพื่อเพิ่ม dead-zone ระหว่างนั้นหุ่นยนต์จะขับตรงไป
ตอนนี้ตรวจสอบไฟล์ซอฟต์แวร์ "02 บรรทัด" ตามที่อธิบายไว้ในกราฟิกและตามที่มีอยู่ในไฟล์แนบ
ไฟล์ซอฟต์แวร์นี้ตั้งโปรแกรมหุ่นยนต์ให้ทำตามบรรทัดโดยใช้การควบคุมการเปิด-ปิดด้วยช่องว่างที่แตกต่างกัน สิ่งนี้เรียกอีกอย่างว่า Deadband และหมายความว่าหุ่นยนต์จะเลี้ยวซ้ายหรือขวาขึ้นอยู่กับข้อผิดพลาด แต่ถ้าข้อผิดพลาดมีขนาดเล็ก หุ่นยนต์ก็จะตรงไป
โปรแกรม “02 line” คำนวณด้านบนก่อนโดยลบจุดที่ตั้งไว้ออกจากการวัดแสงแล้วทำการเปรียบเทียบตามที่ระบุไว้ข้างต้น ตรวจสอบโปรแกรมบนพีซีและบันทึกค่าที่คุณเห็น
โปรแกรม "2 บรรทัด" ค่าปัจจุบัน (ดั้งเดิม) ของ Set-Point คืออะไร? _
โปรแกรม "2 บรรทัด" ปัจจุบัน (ดั้งเดิม) ค่าอะไร "ใหญ่" ข้อผิดพลาดเชิงบวก? _
โปรแกรม "2 บรรทัด" ปัจจุบัน (ดั้งเดิม) ค่าอะไร "ใหญ่" ข้อผิดพลาดเชิงลบ? _
ช่วงข้อผิดพลาด Dead-Band ใดที่จะทำให้หุ่นยนต์ตรง? จากการ _
เรียกใช้การทดลองใช้เวลาสาม (3) ครั้งด้วยค่าที่ต่างกันสำหรับข้อผิดพลาด "ใหญ่" ด้านบน การตั้งค่า "2 บรรทัด" ปัจจุบันและการตั้งค่าอื่นๆ อีกสองรายการที่คุณจะคำนวณ คุณได้เลือก GOOD Set-Point สำหรับหุ่นยนต์ของคุณแล้ว ตอนนี้ คุณจะเลือกช่วง Dead-Band ที่แตกต่างกันสองช่วง และบันทึกเวลาที่หุ่นยนต์ใช้ในการสร้างรอบตามเข็มนาฬิกาหนึ่งรอบ:
การตั้งค่าดั้งเดิมสำหรับ 02 บรรทัด _
Dead-Band จาก +4 ถึง -4 _
Dead-Band จาก +12 ถึง -12 _
ขั้นตอนที่ 10: ทำความเข้าใจกับซอฟต์แวร์ควบคุมตามสัดส่วน "03 Line"
ด้วยการควบคุมตามสัดส่วน เราไม่เพียงแค่เปิดหรือปิดความร้อน แต่เราอาจมีการตั้งค่าต่างๆ มากมายสำหรับการเปิดเตา (เช่น ขนาดของเปลวไฟบนเตา) ในกรณีของหุ่นยนต์ เราไม่เพียงแค่มีการตั้งค่ามอเตอร์สามแบบ (ซ้าย ขวา และตรง) แต่เราสามารถควบคุมความเร็วของล้อซ้ายและขวาเพื่อให้ได้อัตราการเลี้ยวที่หลากหลาย ยิ่งเกิดข้อผิดพลาดมากเท่าใด เราก็ยิ่งต้องการหันหลังให้บรรทัดเร็วขึ้นเท่านั้น
มาดู Proportional Control ด้วยโปรแกรม “03 line”
โปรแกรมสำหรับ “03 line” นั้นซับซ้อนกว่าเพราะไม่เพียงตั้งค่าวิธีการควบคุม “ตามสัดส่วน” เท่านั้น แต่ยังประกอบด้วยซอฟต์แวร์ทั้งหมดสำหรับควบคุม Proportional-Integral, Proportional-Differential และ Proportional-Integral-Differential (PID). เมื่อคุณโหลดซอฟต์แวร์ ซอฟต์แวร์อาจมีขนาดใหญ่เกินกว่าจะใส่ลงในหน้าจอพร้อมกันได้ทั้งหมด แต่จริงๆ แล้วมีสามส่วนดังที่แสดงในภาพที่แนบมา
A – คณิตศาสตร์เพื่อคำนวณข้อผิดพลาดและ "แคลคูลัส" เพื่อค้นหาอินทิกรัลและอนุพันธ์ของข้อผิดพลาดเมื่อเวลาผ่านไป
B – การคำนวณเพื่อคำนวณความเร็วมอเตอร์ด้านซ้ายตามการตั้งค่าการควบคุม PID ของ Kp, Ki และ Kd
C – คณิตศาสตร์เพื่อทดสอบขีดจำกัดความเร็วของมอเตอร์ และส่งความเร็วมอเตอร์ที่ถูกต้องไปยังมอเตอร์ด้านซ้ายและขวา
ทั้งสามใช้การวนซ้ำแบบไม่สิ้นสุด (หลังจากเริ่มต้น) และคุณสามารถเรียกดูได้โดยใช้ไอคอน "มือ" แต่เปลี่ยนกลับไปที่ไอคอน "ลูกศร" เพื่อตรวจสอบเนื้อหาของกล่องและเปลี่ยนการตั้งค่า
ขั้นตอนที่ 11: การแก้ไขโปรแกรม 03 Line (การควบคุมตามสัดส่วน)
ในส่วนตรงกลาง (ส่วน B ในคำอธิบายก่อนหน้านี้) คุณจะสังเกตเห็นว่าในโปรแกรม "03 บรรทัด" การตั้งค่าของ Ki และ Kd เป็น 0 ทั้งคู่
ปล่อยให้พวกเขาเป็นอย่างนั้น เราจะเปลี่ยนค่าของ Kp ซึ่งเป็นส่วนสัดส่วนของตัวควบคุมเท่านั้น
Kp ตัดสินใจว่าหุ่นยนต์จะเปลี่ยนความเร็วอย่างราบรื่นเพียงใดเมื่อลอยออกจากเส้น ถ้า Kp มากเกินไป การเคลื่อนไหวจะกระตุกมาก (คล้ายกับตัวควบคุมการเปิด-ปิด) ถ้า Kp น้อยเกินไป หุ่นยนต์จะทำการแก้ไขช้าเกินไป และจะลอยออกห่างจากเส้น โดยเฉพาะบนเส้นโค้ง อาจถึงขั้นเสียเส้นไปเลยก็ได้!
13 Set-Point คือโปรแกรม “03 line” ใช้อะไร? (ลบหลังจากตั้งค่าไฟอ่านในวง A)_
14 ค่า Kp ในโปรแกรม “03 line” ปัจจุบันคือเท่าไร? _
Time Trials for Proportional Controller (โปรแกรม 3 บรรทัด)
คุณจะใช้การตั้งค่าดั้งเดิมสำหรับโปรแกรม "03 ไลน์" ที่บันทึกไว้ในหน่วยความจำของหุ่นยนต์เพื่อทำการทดลองแบบเวลา และคุณยังจะใช้การปรับเปลี่ยนอื่นๆ อีกสองรายการในโปรแกรม "03 ไลน์" สำหรับการวัดทั้งหมดสามครั้ง การปรับเปลี่ยนที่คุณต้องทำรวมถึง
DRIFTY - การหาค่า Kp ที่ทำให้หุ่นยนต์เคลื่อนที่ช้ามาก และอาจมองไม่เห็นเส้น (แต่หวังว่าจะไม่เป็นเช่นนั้น) ลองใช้ค่า Kp ที่แตกต่างกันระหว่าง 0.5 ถึง 2.5 (หรือค่าอื่น) จนกว่าคุณจะได้ค่าที่หุ่นยนต์ลอย แต่ยังคงอยู่ในบรรทัด
JERKY - การหาค่า Kp ที่ทำให้หุ่นยนต์กระตุกไปมา คล้ายกับการเคลื่อนไหวแบบเปิด-ปิด ลองใช้ค่า Kp ระหว่าง 1.5 ถึง 3.5 (หรือค่าอื่น) จนกว่าคุณจะได้ค่าที่หุ่นยนต์เพิ่งเริ่มแสดงการเคลื่อนไหวไปมา แต่ไม่มากจนเกินไป สิ่งนี้เรียกอีกอย่างว่าค่า "วิกฤต" ของ Kp
การทดสอบเวลาสำหรับการหมุนตามเข็มนาฬิกาทั้งหมดบนแทร็กนั้นจำเป็นเฉพาะกับค่า "3 เส้น" ดั้งเดิมและชุดค่าใหม่สองชุด (DRIFTY และ JERKY) ที่คุณค้นพบโดยให้หุ่นยนต์เดินตามทางเพียงช่วงสั้นๆ อย่าลืมดาวน์โหลดการเปลี่ยนแปลงไปยังหุ่นยนต์ของคุณทุกครั้ง!
15 บันทึกค่า Proportional Control และ Time Trials สำหรับโปรแกรม "3 line" (อย่าลืมดาวน์โหลดการเปลี่ยนแปลงไปยังหุ่นยนต์!) สำหรับแต่ละค่า Kp ทั้งสามค่านี้ (ค่า 03 บรรทัดเดิม และสองค่าที่คุณกำหนดโดยการลองผิดลองถูก ให้ดริฟตี้และกระตุก)
ขั้นตอนที่ 12: ตัวควบคุม PID ขั้นสูง
ก่อนเริ่มขั้นตอนนี้ อย่าลืมทำตามขั้นตอนก่อนหน้า บันทึกข้อมูลที่ร้องขอทั้งหมดกับหุ่นยนต์เฉพาะที่คุณต้องการใช้สำหรับห้องปฏิบัติการนี้ หุ่นยนต์แต่ละตัวมีความแตกต่างกันเล็กน้อย โดยคำนึงถึงลักษณะทางกล ด้านมอเตอร์ และโดยเฉพาะอย่างยิ่งผลลัพธ์ของเซ็นเซอร์วัดแสงในสนามแข่ง
ตัวเลขที่คุณต้องการจากการทดลองครั้งก่อน
16 การอ่านเซนเซอร์แสงสูงสุด (จากขั้นตอนที่ 2) _
17 การอ่านเซ็นเซอร์วัดแสงขั้นต่ำ (จากขั้นตอนที่ 5) _
18 การตั้งค่าที่ดีสำหรับ Set-Point (ค่าเฉลี่ยของด้านบน) _
19 การตั้งค่า DRIFTY สำหรับ Kp (จากขั้นตอนที่ 15) _
20 การตั้งค่า JERKY (สำคัญ) สำหรับ Kp (จากขั้นตอนที่ 15) _
ทำความเข้าใจกับตัวควบคุม PID
คุณอาจได้เรียนรู้เกี่ยวกับตัวควบคุม Proportional Integral Differential (PID) ซึ่งเป็นส่วนหนึ่งของหลักสูตรการควบคุมทางอุตสาหกรรม และภาพรวมอย่างรวดเร็วทางออนไลน์ที่ Wikipedia (https://en.wikipedia.org/wiki/PID_controller)
ในกรณีของการทดลองนี้ ค่าที่วัดได้คือปริมาณแสงที่สะท้อนจากพื้น จุดตั้งค่าคือปริมาณแสงที่ต้องการเมื่อหุ่นยนต์อยู่เหนือขอบเทปสีดำโดยตรง ข้อผิดพลาดคือความแตกต่างระหว่างการอ่านค่าแสงปัจจุบันและจุดตั้งค่า
ด้วยตัวควบคุมตามสัดส่วน ความเร็วของมอเตอร์ด้านซ้ายจะเป็นสัดส่วนกับข้อผิดพลาด โดยเฉพาะ:
ข้อผิดพลาด = Light Reading – Set-Point
ในกราฟิคนี้ เซ็ตพอยต์ถูกตั้งค่าเป็น 50
ต่อมา เพื่อหาความเร็วของมอเตอร์ด้านซ้าย เราคูณข้อผิดพลาดด้วยค่าคงที่สัดส่วน "Kp" โดยเฉพาะ:
L มอเตอร์ = (Kp * ข้อผิดพลาด) + 35
ในกราฟิกนี้ Kp ถูกตั้งค่าเป็น 1.5 และการเพิ่ม 35 เกิดขึ้นในส่วนอื่นของโปรแกรม เพิ่มค่า 35 เพื่อแปลงตัวเลขที่อยู่ในช่วง -40 ถึง +40 ให้เป็นตัวเลขที่อยู่ระหว่าง 10 ถึง 60 (ความเร็วมอเตอร์ที่เหมาะสม)
Integral เป็นความทรงจำในอดีต หากเกิดข้อผิดพลาดที่ไม่ดีเป็นเวลานาน หุ่นยนต์ควรเร่งความเร็วไปยังจุดที่ตั้งไว้ Ki ใช้เพื่อคูณด้วยอินทิกรัล (อินทิกรัลคือผลรวมของข้อผิดพลาด - ในกรณีนี้ ลดลง 1.5 ในการวนซ้ำแต่ละครั้ง ดังนั้นหุ่นยนต์จะมี "หน่วยความจำที่จางลง" ของข้อผิดพลาดในอดีต)
The Derivative เป็นการทำนายอนาคตชนิดหนึ่ง เราคาดการณ์ข้อผิดพลาดในอนาคตโดยเปรียบเทียบข้อผิดพลาดล่าสุดกับข้อผิดพลาดปัจจุบัน และถือว่าอัตราการเปลี่ยนแปลงข้อผิดพลาดจะค่อนข้างเป็นเส้นตรง ยิ่งคาดการณ์ว่าจะเกิดข้อผิดพลาดในอนาคตมากเท่าใด เราก็ยิ่งต้องย้ายไปยังจุดตั้งค่าเร็วขึ้นเท่านั้น Kd ใช้เพื่อคูณด้วยอนุพันธ์ (อนุพันธ์คือความแตกต่างระหว่างข้อผิดพลาดปัจจุบันและข้อผิดพลาดก่อนหน้า)
L มอเตอร์ = (Kp * ข้อผิดพลาด) + (Ki * อินทิกรัล) + (Kd * อนุพันธ์) + 35
ขั้นตอนที่ 13: ค้นหาพารามิเตอร์ PID ที่ดีที่สุด
มีหลายวิธีที่สามารถใช้เพื่อค้นหาพารามิเตอร์ PID ได้ แต่สถานการณ์ของเรามีลักษณะเฉพาะที่ทำให้เราสามารถใช้วิธีทดลอง "ด้วยตนเอง" มากขึ้นในการค้นหาพารามิเตอร์ ลักษณะเฉพาะที่เรามีคือ:
- ผู้ทดลอง (คุณ) มีความเข้าใจวิธีการทำงานของเครื่องเป็นอย่างดี
- ไม่มีอันตรายจากการบาดเจ็บส่วนบุคคลหากตัวควบคุมทำงานผิดปกติ และไม่มีอันตรายจากความเสียหายต่อหุ่นยนต์เนื่องจากการตั้งค่าตัวควบคุมที่ไม่ดี
- เซ็นเซอร์วัดแสงเป็นอุปกรณ์ตรวจจับที่เลอะเทอะ และมีเซ็นเซอร์แสงเพียงตัวเดียว เราจึงได้แต่หวังว่าจะได้ผลลัพธ์ที่ดีเพียงเล็กน้อย ดังนั้น "ความพยายามอย่างเต็มที่" จึงดีสำหรับการทดลองของเรา
อันดับแรก เราใช้ “03 line” ในการตัดสินใจเลือก Kp ที่ดีที่สุด (ค่า GOOD Set-point และ JERKY Kp เป็นขั้นตอนที่ 18 & 20 ด้านบน) ดูกราฟิกแรกสำหรับคำแนะนำว่าเราพบค่า JERKY สำหรับ Kp อย่างไร
ใช้ซอฟต์แวร์ "04 line" เพื่อกำหนด Ki ก่อนอื่นเราจะแก้ไข "4 บรรทัด" เพื่อให้มีค่าที่เราบันทึกไว้ในรายการที่ 18 และ 20 ข้างต้น ต่อไป เราจะค่อยๆ เพิ่ม Ki อย่างช้าๆ จนกว่าเราจะได้ค่าที่ย้ายเราไปยังจุดที่ตั้งไว้อย่างรวดเร็วจริงๆ ดูคำแนะนำในการเลือกค่าสำหรับ Ki ในกราฟิคที่สอง
21 FASTEST Value of Ki ที่ตัดสินบน set-point เร็วที่สุด (ถึงแม้จะ overshoot บ้าง) _
ใช้ซอฟต์แวร์ “05 line” เพื่อกำหนด Kd ขั้นแรกให้แก้ไข “5 บรรทัด” ด้วยค่าจากขั้นตอนที่ 18, 20 และ 21 จากนั้นเพิ่ม Kd จนกว่าคุณจะได้หุ่นยนต์ทำงานขั้นสุดท้ายที่ไปถึงจุดที่ตั้งไว้อย่างรวดเร็วและมีการโอเวอร์ช็อตน้อยมาก หากมี กราฟิกที่สามแสดงคำแนะนำเกี่ยวกับวิธีการเลือก Kd
22 ค่าที่เหมาะสมที่สุดของ Kd _
23 หุ่นยนต์ของคุณต้องใช้เวลานานเท่าใดในการติดตามวงรอบตอนนี้ ??? _
ขั้นตอนที่ 14: บทสรุป
การทดลองในห้องปฏิบัติการเป็นไปด้วยดี ด้วยนักเรียนประมาณ 20 คน โดยใช้เวิร์กสเตชัน 10 (สิบ) รายการ + การตั้งค่าหุ่นยนต์ที่แสดงในกราฟิกแรก ทรัพยากรจึงไม่มีบันทึก หุ่นยนต์ส่วนใหญ่สามตัวกำลังวนรอบแทร็กในแต่ละครั้งสำหรับการทดสอบครั้ง
ฉันแนะนำให้แยกส่วนควบคุม PID (อย่างน้อยที่สุด โปรแกรม "04 บรรทัด" และ "05 บรรทัด") เป็นวันที่แยกจากกัน เนื่องจากแนวคิดที่เกี่ยวข้อง
ต่อไปนี้คือลำดับของวิดีโอที่แสดงความคืบหน้าของการควบคุม (จาก "01 บรรทัด" ถึง "05 บรรทัด") โดยใช้ค่าที่ฉันเลือก - แต่นักเรียนทุกคนคิดค่าที่แตกต่างกันเล็กน้อย ซึ่งเป็นไปตามที่คาดไว้!
ข้อควรจำ: เหตุผลหลักประการหนึ่งที่ทีมหุ่นยนต์ที่เตรียมการมาอย่างดีทำผลงานได้ไม่ดีในกิจกรรมการแข่งขันคือความจริงที่ว่าพวกเขาไม่ได้ทำการสอบเทียบในตำแหน่งที่แน่นอนที่งานจะจัดขึ้น แสงสว่างและการเปลี่ยนแปลงตำแหน่งเล็กน้อยของเซ็นเซอร์เนื่องจากการกระแทกอาจส่งผลกระทบอย่างมากต่อค่าพารามิเตอร์!
- 01 line (เปิด-ปิด) การควบคุม PID ด้วย Lego Robots -
- 02 line (On-Off with Dead-Zone) การควบคุม PID ด้วย Lego Robots -
- 03 line (สัดส่วน) การควบคุม PID ด้วย Lego Robots -
- 04 line (สัดส่วน-อินทิกรัล) การควบคุม PID ด้วย Lego Robots -
- 05 line (Proportional-Integral-Derivative) การควบคุม PID ด้วย Lego Robots -
แนะนำ:
นาฬิกาบอกตำแหน่ง 'วีสลีย์' ด้วย 4 เข็มนาฬิกา: 11 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกาบอกตำแหน่ง 'Weasley' แบบมี 4 เข็ม: ดังนั้น ด้วย Raspberry Pi ที่ใช้งานมาระยะหนึ่งแล้ว ฉันต้องการค้นหาโครงการดีๆ ที่จะช่วยให้ฉันใช้งานได้ดีที่สุด ฉันเจอนาฬิกาบอกตำแหน่งวีสลีย์ที่สอนได้ดีเยี่ยมนี้โดย ppeters0502 และคิดว่า
ภาพเคลื่อนไหวบิตแมปบนจอแสดงผล OLED SSD1331 (SPI) ด้วย Visuino: 8 ขั้นตอน
ภาพเคลื่อนไหวบิตแมปบนจอแสดงผล OLED SSD1331 (SPI) ด้วย Visuino: ในบทช่วยสอนนี้ เราจะแสดงและย้ายภาพบิตแมปในรูปแบบแอนิเมชั่นอย่างง่ายบนจอแสดงผล OLED SSD1331 (SPI) ด้วย Visuino ดูวิดีโอ
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: 8 ขั้นตอน
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: บางครั้งฉันพูดภาษาอังกฤษได้ดีมาก บางครั้งก็ไม่มี… สิ่งแรกเลย นี่เป็นการสอนครั้งแรกของฉันและภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน ดังนั้นโปรดอย่ากดดันฉันมากเกินไป นี่จะไม่เกี่ยวกับวิธีการสร้างเฟรมที่ง่าย มันเกี่ยวกับการติดตั้ง
Commodore 64 Revamp ด้วย Raspberry Pi, Arduino และ Lego: 17 ขั้นตอน (พร้อมรูปภาพ)
Commodore 64 Revamp ด้วย Raspberry Pi, Arduino และ Lego: โปรเจ็กต์นี้ให้คุณค้นพบฉากการเล่นเกมของปี 1980 อีกครั้งด้วยการรื้อฟื้นคอมพิวเตอร์ที่บ้าน Commodore 64 เครื่องเก่าโดยใช้ส่วนประกอบใหม่และตัวต่อ Lego ที่ใช้งานได้หลากหลาย! หากคุณมีคอมพิวเตอร์เครื่องใดเครื่องหนึ่งเหล่านี้ บิลด์นี้จะให้คุณเล่นเกมที่ลืมไปซ้ำ
วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: 9 ขั้นตอน
วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: ในรูปแรก เรามี Arduino และเรียกว่า "Arduino Uno"ในรูปที่สอง เรามี Arducam และเรียกว่า "Arducam OV2640 มินิ 2MP"พร้อมกับภาพที่สอง มีวัสดุที่คุณต้อง