Dec 06, 2018 ฝากข้อความ

การออกแบบระบบควบคุมมอเตอร์สำหรับเคลื่อนย้ายหุ่นยนต์

การออกแบบซอฟต์แวร์ 2 ระบบ

สถาปัตยกรรม2.1μC / OS-II

μC / OS-II เป็น ROM แบบพกพา, แบบฝัง, เคอร์เนล, ระบบปฏิบัติการแบบมัลติทาสกิ้งแบบเรียลไทม์ซึ่งมีประสิทธิภาพในการประมวลผลสูง, ขนาดเล็ก, ประสิทธิภาพแบบเรียลไทม์ที่ดีและความสามารถในการขยาย คุณสมบัติเคอร์เนลที่เล็กที่สุดสามารถรวบรวมเป็น 2KB μC / OS-II เขียนด้วยภาษา C และภาษาประกอบ รหัสส่วนใหญ่เขียนด้วยภาษาซีมีเพียงไม่กี่รหัสที่เกี่ยวข้องกับโปรเซสเซอร์เท่านั้นที่เขียนด้วยภาษาแอสเซมบลี μC / OS-II เท่านั้นที่มีฟังก์ชั่นพื้นฐานเช่นการตั้งเวลางานการจัดการงานการจัดการเวลาการจัดการหน่วยความจำการสื่อสารระหว่างงานและการซิงโครไนซ์

การมอบหมายงานภายใต้ระบบ2.2μC / OS-II

หลังจากประสบความสำเร็จในการย้ายระบบμC / OS-II ไปยัง STM32F107 การเขียนโปรแกรมที่ใช้μC / OS-II จะกระทำโดยการแบ่งแอพพลิเคชันขนาดใหญ่ออกเป็นงานที่ค่อนข้างอิสระ ลำดับความสำคัญของแต่ละงานถูกกำหนดไว้และเคอร์เนลμC / OS-II และจัดการงานเหล่านี้

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

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

◆ต้องการการปรับความเร็วมอเตอร์อย่างต่อเนื่องและมีประสิทธิภาพคงที่และไดนามิกดี ความเร็วจะไม่ถูกนับด้วยอัลกอริทึม PI

◆ต้องใช้พวงมาลัยเพื่อไปยังมุมที่กำหนดอย่างรวดเร็วและใช้ตำแหน่งป้อนกลับเพื่อปรับความเร็วของพวงมาลัย

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

สำหรับฟังก์ชั่นด้านบนที่จะใช้งานการออกแบบแอพพลิเคชั่นสามารถแบ่งออกเป็นงานต่อไปนี้:

1 เริ่มภารกิจ เริ่มต้นระบบสร้างสถานะมอเตอร์เริ่มต้นจากนั้นลบตัวเองและเริ่มงานเพื่อเข้าสู่โหมดสลีป

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

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

งานควบคุมความเร็วมอเตอร์ 4 สำหรับการควบคุมความเร็วรอบวงปิดของมอเตอร์ลำดับความสำคัญของงานจะถูกกำหนดเป็นระดับ 2

5 งานควบคุมเกียร์พวงมาลัย มันถูกใช้ในการควบคุมพวงมาลัยเพื่อไปยังตำแหน่งที่ระบุภายในเวลาที่กำหนดและลำดับความสำคัญของงานถูกตั้งไว้ที่ระดับ 3

2.3 เริ่มภารกิจ

ในโปรแกรมหลักก่อนที่จะเรียกใช้งานอื่น ๆ ของμC / OS-II อันดับแรกให้เรียกใช้ฟังก์ชันการเริ่มต้นระบบ OSInit () เพื่อเริ่มต้นตัวแปรและโครงสร้างข้อมูลทั้งหมดของμC / OS-II ในเวลาเดียวกันสร้างงานว่าง OS_TaskIdle () งานนี้เสมออยู่ในสถานะพร้อม; เรียกใช้ฟังก์ชัน OSTaskCreate () เพื่อสร้างงานเริ่มต้น เรียกใช้ OSStart (), โอนการควบคุมไปยังเคอร์เนลμC / OS-II, เริ่มการทำงานมัลติทาสกิ้ง

ภารกิจเริ่มต้นถูกสร้างขึ้นในโปรแกรมหลักซึ่งมีหน้าที่หลักสามประการ:

1 สำหรับการเริ่มต้นระบบ (โมดูลเอาต์พุต PWM, พอร์ตอนุกรม, โมดูล ADC, ฟังก์ชั่นการขัดจังหวะระดับอินพุต, ตัวจับเวลา)

2 กำหนดจำนวนสัญญาณที่ใช้โดยระบบ

3 สร้างงานอื่น ๆ ของระบบ

สุดท้ายเรียก OSTaskDel (OS_PRIO_SELF) เพื่อลบตัวเองและเริ่มงานให้เข้าสู่โหมดสลีป โฟลว์งานโปรแกรมหลักแสดงในรูปที่ 4

2.4 งานควบคุมความเร็วมอเตอร์

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

งานควบคุมพวงมาลัยเกียร์ 2.5

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

3 อินเตอร์เฟซระบบเครื่องกลไฟฟ้า

เกียร์พวงมาลัยของหุ่นยนต์ประกอบด้วยตัวลด 30: 1 เชื่อมต่อกับมอเตอร์ DC เอนโค้ดเดอร์ตำแหน่งสัมบูรณ์เชื่อมต่อกับพวงมาลัยและส่งสัญญาณมุมของเฟืองพวงมาลัยไปยังบอร์ดควบคุมไดรฟ์ เพลาทั้งสองของล้อหน้าของหุ่นยนต์เชื่อมต่อกันด้วยก้านเกียร์ หนึ่งในเพลาเชื่อมต่อกับเกียร์พวงมาลัยโดยสายพานส่งเพื่อให้เมื่อหมุนพวงมาลัยเกียร์เข็มขัดขับรถคันเกียร์เพื่อให้แน่ใจว่าล้อหน้าสองล้อสามารถหมุนพร้อมกัน มอเตอร์ขับเคลื่อนล้อหลังคือมอเตอร์ DC ซึ่งเชื่อมต่อโดยตรงกับเครื่องเข้ารหัสแบบเพิ่มหน่วย หลังจากลดอัตราส่วนลดลงด้วยตัวลด 25: 1 ล้อหลังจะถูกขับเคลื่อนด้วยค่าเฟืองท้าย สัญญาณจากตัวเข้ารหัสแบบเพิ่มหน่วยจะถูกส่งไปยังบอร์ดควบคุมไดรฟ์ โครงสร้างของระบบไฟฟ้าแสดงในรูปที่ 7

ข้อสรุป

ในบทความนี้การออกแบบฮาร์ดแวร์และตัวควบคุมเซอร์โวของหุ่นยนต์จัดการนั้นได้รับการยอมรับ ระบบปฏิบัติการแบบเรียลไทม์μC / OS-II ได้รับการติดตั้งบน STM32F107 สำเร็จแล้วและการทดลองแบบลูปปิดความเร็วของมอเตอร์และพวงมาลัยนั้นเสร็จสิ้นแล้ว การใช้คุณสมบัติของการทำงานแบบเรียลไทม์ของคอนโทรลเลอร์คอร์เท็กซ์ -M3 และระบบμC / OS-II นั้นให้พื้นฐานซอฟต์แวร์และฮาร์ดแวร์สำหรับการจับภาพวิดีโอหุ่นยนต์และการติดตามการนำทางที่ตามมา หากอัลกอริทึม PI ที่มีอยู่ได้รับการปรับปรุงและสามารถควบคุมความเร็วและการควบคุมวงคู่ปัจจุบันของมอเตอร์ได้ลักษณะของหุ่นยนต์มอเตอร์จะดีขึ้นและโอกาสในการใช้งานของหุ่นยนต์จัดการจะกว้างขึ้น



ส่งคำถาม

whatsapp

teams

อีเมล

สอบถาม