สารบัญ:

การสอนการควบคุม PID ด้วย Lego Robots: 14 ขั้นตอน
การสอนการควบคุม PID ด้วย Lego Robots: 14 ขั้นตอน

วีดีโอ: การสอนการควบคุม PID ด้วย Lego Robots: 14 ขั้นตอน

วีดีโอ: การสอนการควบคุม PID ด้วย Lego Robots: 14 ขั้นตอน
วีดีโอ: How to Defy Physics With LEGO 51515 - PID Self Balancing Robot 2024, พฤศจิกายน
Anonim
สอนการควบคุม PID ด้วย Lego Robots
สอนการควบคุม PID ด้วย Lego Robots

ผู้ที่ชื่นชอบหุ่นยนต์รุ่นเยาว์หลายคนสนใจหัวข้อการควบคุมขั้นสูง แต่อาจมีปัญหากับแคลคูลัสซึ่งมักใช้ในการวิเคราะห์ระบบลูปปิด มีแหล่งข้อมูลออนไลน์ที่ยอดเยี่ยมซึ่งช่วยลดความยุ่งยากในการสร้าง "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 (การควบคุมตามสัดส่วน)

การแก้ไขโปรแกรม 03 Line (การควบคุมตามสัดส่วน)
การแก้ไขโปรแกรม 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 ขั้นสูง

ตัวควบคุม PID ขั้นสูง
ตัวควบคุม PID ขั้นสูง
ตัวควบคุม PID ขั้นสูง
ตัวควบคุม 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 ที่ดีที่สุด
ค้นหาพารามิเตอร์ PID ที่ดีที่สุด
การค้นหาพารามิเตอร์ PID ที่ดีที่สุด
การค้นหาพารามิเตอร์ PID ที่ดีที่สุด
ค้นหาพารามิเตอร์ PID ที่ดีที่สุด
ค้นหาพารามิเตอร์ 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 -

แนะนำ: