การควบคุมความเร็วของมอเตอร์กระแสตรงโดยใช้อัลกอริธึม pid (stm32f4)
การเข้าชม: 0 ผู้แต่ง: บรรณาธิการเว็บไซต์ เวลาเผยแพร่: 2020-09-02 ที่มา: เว็บไซต์
สอบถาม
สวัสดีทุกคน ฉันชื่อ tahir ul haq จากโครงการอื่น
ครั้งนี้เป็นเวลาทำ MC ที่ใช้เมื่อ 11-11-2017
นี่คือจุดสิ้นสุดของโครงการกลางภาคเรียน
หวังว่าคุณจะชอบมัน
มันต้องใช้แนวคิดและทฤษฎีมากมาย ดังนั้นเรามาดูกันก่อน
ด้วยการเกิดขึ้นของคอมพิวเตอร์และกระบวนการทางอุตสาหกรรม จึงมีการวิจัยในประวัติศาสตร์ของมนุษย์เพื่อพัฒนาวิธีการกำหนดกระบวนการใหม่ และที่สำคัญกว่านั้นคือการใช้เครื่องจักรเพื่อควบคุมกระบวนการโดยอัตโนมัติ
จุดมุ่งหมายคือเพื่อลดการมีส่วนร่วมของมนุษย์ในกระบวนการเหล่านี้ ซึ่งช่วยลดข้อผิดพลาดในกระบวนการเหล่านี้
ดังนั้นสาขา \'วิศวกรรมระบบควบคุม\' จึงเกิดขึ้น
วิศวกรรมระบบควบคุมสามารถกำหนดได้ว่าเป็นการใช้วิธีการต่างๆ เพื่อควบคุมการทำงานของกระบวนการหรือการบำรุงรักษาสภาพแวดล้อมที่คงที่และเป็นที่ต้องการ ไม่ว่าจะด้วยตนเองหรืออัตโนมัติ
ตัวอย่างง่ายๆ คือการควบคุมอุณหภูมิของห้อง
การควบคุมด้วยตนเองหมายถึงการมีอยู่ของบุคคลที่ตรวจสอบสภาพปัจจุบันบนไซต์ (เซ็นเซอร์)
ด้วยความคาดหวัง (การประมวลผล)
และดำเนินการที่เหมาะสมเพื่อให้ได้ค่าที่ต้องการ (แอคชูเอเตอร์)
ปัญหาของแนวทางนี้คือ มันไม่น่าเชื่อถือมากนัก เนื่องจากมีแนวโน้มที่จะเกิดข้อผิดพลาดหรือประมาทเลินเล่อในที่ทำงาน
นอกจากนี้ ปัญหาอีกประการหนึ่งคืออัตราของกระบวนการที่แอคชูเอเตอร์เริ่มทำงานไม่สม่ำเสมอเสมอไป ซึ่งหมายความว่าบางครั้งอาจเร็วกว่าความเร็วที่ต้องการ และบางครั้งอาจช้า
วิธีแก้ปัญหานี้คือการใช้ไมโครคอนโทรลเลอร์เพื่อควบคุมระบบ
ตามข้อกำหนดที่กำหนด ไมโครคอนโทรลเลอร์ถูกตั้งโปรแกรมให้ควบคุมกระบวนการเชื่อมต่อในวงจร (
หารือในภายหลัง)
ค่าหรือเงื่อนไขของจึงควบคุมกระบวนการเพื่อรักษาค่าที่ต้องการ
ประโยชน์ของกระบวนการนี้คือ ไม่จำเป็นต้องมีการแทรกแซงของมนุษย์ในกระบวนการนี้
นอกจากนี้ความเร็วของกระบวนการนี้ยังสม่ำเสมออีกด้วย
ก่อนที่เราจะดำเนินการต่อ การกำหนดเงื่อนไขต่างๆ ณ จุดนี้เป็นสิ่งสำคัญ: การควบคุมผลป้อนกลับ: ในระบบนี้ อินพุต ณ เวลาหนึ่งจะขึ้นอยู่กับตัวแปรตั้งแต่หนึ่งตัวขึ้นไป รวมถึงเอาต์พุตของระบบด้วย
ข้อเสนอแนะเชิงลบ: ในระบบนี้ การอ้างอิง (อินพุต)
เนื่องจากข้อเสนอแนะ ข้อผิดพลาดจะถูกลบออก และเฟสของอินพุตคือ 180 องศา
ผลตอบรับเชิงบวก: ในระบบนี้
ข้อผิดพลาดในการอ้างอิง (อินพุต) จะถูกเพิ่มเมื่อผลป้อนกลับและอินพุตอยู่ในเฟส
สัญญาณข้อผิดพลาด: ความแตกต่างระหว่างเอาต์พุตที่ต้องการและเอาต์พุตจริง
เซนเซอร์: อุปกรณ์ที่ใช้ในการตรวจจับอุปกรณ์จำนวนหนึ่งในวงจร
โดยปกติแล้วจะวางไว้ในเอาต์พุตหรือที่ใดก็ตามที่เราต้องการทำการวัด
ตัวประมวลผล: ส่วนหนึ่งของระบบควบคุมที่ประมวลผลตามอัลกอริธึมการเขียนโปรแกรม
รับอินพุตบางส่วนและสร้างเอาต์พุตบางส่วน
แอคชูเอเตอร์: ในระบบควบคุม แอคชูเอเตอร์ถูกใช้เพื่อดำเนินเหตุการณ์ตามสัญญาณที่สร้างโดยไมโครคอนโทรลเลอร์เพื่อส่งผลต่อเอาต์พุต
ระบบวงปิด: ระบบที่มีลูปป้อนกลับตั้งแต่หนึ่งรายการขึ้นไป
ระบบลูปเปิด: ไม่มีระบบสำหรับลูปป้อนกลับ
เวลาที่เพิ่มขึ้น: เวลาที่ต้องใช้เพื่อให้เอาต์พุตเพิ่มขึ้นจาก 10% ของแอมพลิจูดสูงสุดของสัญญาณเป็น 90%
Drop Time: เวลาที่ต้องใช้เพื่อให้เอาต์พุตลดลงจาก 90% เป็น 10%
การแก้ไขปัญหาจุดพีค: การแก้ไขปัญหาจุดพีคคือปริมาณเอาต์พุตที่เกินค่าสถานะคงที่ (
ปกติระหว่างการตอบสนองชั่วคราวของระบบ)
เวลาเสถียร: เวลาที่ต้องใช้เพื่อให้เอาต์พุตถึงสถานะเสถียร
ข้อผิดพลาดในสถานะคงที่: ความแตกต่างระหว่างเอาต์พุตจริงและเอาต์พุตที่คาดหวังเมื่อระบบเข้าสู่สถานะคงที่ รูปภาพด้านบนแสดงระบบควบคุมเวอร์ชันที่เรียบง่ายมาก
ไมโครคอนโทรลเลอร์เป็นแกนหลักของระบบควบคุมใดๆ
นี่เป็นองค์ประกอบที่สำคัญมาก ดังนั้นจึงควรเลือกอย่างระมัดระวังตามความต้องการของระบบ
ไมโครคอนโทรลเลอร์รับอินพุตจากผู้ใช้
อินพุตนี้กำหนดเงื่อนไขที่จำเป็นสำหรับระบบ
ไมโครคอนโทรลเลอร์ยังรับอินพุตจากเซ็นเซอร์ด้วย
เซ็นเซอร์เชื่อมต่อกับเอาต์พุต และข้อมูลจะถูกป้อนกลับไปยังอินพุต
ข้อมูลนี้สามารถเรียกว่าการตอบรับเชิงลบได้
มีการอธิบายความคิดเห็นเชิงลบไว้ก่อนหน้านี้
จากการเขียนโปรแกรม ไมโครโปรเซสเซอร์จะทำการคำนวณและส่งออกไปยังแอคชูเอเตอร์ต่างๆ
โรงงานควบคุมแอคทูเอเตอร์แบบอิงเอาท์พุตจะพยายามรักษาสภาวะเหล่านี้
ตัวอย่างอาจเป็นตัวขับมอเตอร์ที่ขับเคลื่อนมอเตอร์ โดยที่ตัวขับมอเตอร์คือตัวขับและมอเตอร์คือโรงงาน
ดังนั้นมอเตอร์จึงหมุนด้วยความเร็วที่กำหนด
เซ็นเซอร์ที่เชื่อมต่อจะอ่านสถานะของโรงงานปัจจุบันและป้อนกลับไปยังไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์จะถูกเปรียบเทียบอีกครั้งและคำนวณ ดังนั้นการวนซ้ำจึงเกิดขึ้นซ้ำ
กระบวนการนี้เกิดขึ้นซ้ำๆ และไม่มีที่สิ้นสุด และไมโครคอนโทรลเลอร์สามารถรักษาสภาวะที่ต้องการได้
ต่อไปนี้เป็นวิธีหลักสองวิธีในการควบคุมความเร็วของมอเตอร์กระแสตรง)
การควบคุมแรงดันไฟฟ้าแบบแมนนวล: ในการใช้งานทางอุตสาหกรรม กลไกการควบคุมความเร็วของมอเตอร์กระแสตรงมีความสำคัญอย่างยิ่ง
บางครั้งเราอาจต้องการความเร็วที่สูงหรือต่ำกว่าปกติ
ดังนั้นเราจึงต้องมีวิธีการควบคุมความเร็วที่มีประสิทธิภาพ
การควบคุมแรงดันไฟฟ้าเป็นหนึ่งในวิธีการควบคุมความเร็วที่ง่ายที่สุด
เราสามารถเปลี่ยนแรงดันไฟฟ้าเพื่อเปลี่ยนความเร็วได้ b)
ควบคุม PWM โดยใช้ PID: อีกวิธีที่มีประสิทธิภาพมากกว่าคือการใช้ไมโครคอนโทรลเลอร์
มอเตอร์กระแสตรงเชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่านตัวขับมอเตอร์
ไดรเวอร์มอเตอร์เป็นไอซีที่รับอินพุต PWM (
การปรับความกว้างพัลส์)
จากไมโครคอนโทรลเลอร์และเอาต์พุตไปยังมอเตอร์กระแสตรงตามอินพุต รูปที่ 1
2: บทที่ 1 ของสัญญาณ PWM
บทนำ 3 เมื่อพิจารณาถึงสัญญาณ PWM จะสามารถอธิบายการทำงานของ PWM ได้ก่อน
ประกอบด้วยพัลส์ต่อเนื่องในช่วงระยะเวลาหนึ่ง
ช่วงเวลาคือเวลาที่ใช้โดยจุดที่เคลื่อนที่ในระยะทางเท่ากับความยาวคลื่น
พัลส์เหล่านี้สามารถมีค่าไบนารี่ได้เท่านั้น (สูงหรือต่ำ)
นอกจากนี้เรายังมีปริมาณอีกสองปริมาณ ได้แก่ ความกว้างของพัลส์ และรอบการทำงาน
ความกว้างพัลส์คือเวลาที่เอาต์พุต PWM สูง
รอบการทำงานคือเปอร์เซ็นต์ของความกว้างพัลส์ต่อช่วงเวลา
สำหรับช่วงเวลาที่เหลือ เอาท์พุตจะต่ำ
รอบการทำงานจะควบคุมความเร็วของมอเตอร์โดยตรง
หากมอเตอร์กระแสตรงให้แรงดันไฟฟ้าบวกภายในระยะเวลาหนึ่ง มอเตอร์จะเคลื่อนที่ด้วยความเร็วที่แน่นอน
ถ้าให้แรงดันไฟฟ้าบวกเป็นระยะเวลานาน ความเร็วจะมากขึ้น
ดังนั้นรอบการทำงานของ PWM จึงสามารถเปลี่ยนได้โดยการเปลี่ยนความกว้างพัลส์
โดยการเปลี่ยนรอบการทำงานของมอเตอร์กระแสตรงจะทำให้ความเร็วของมอเตอร์เปลี่ยนแปลงได้
การควบคุมความเร็วสำหรับปัญหามอเตอร์กระแสตรง: ปัญหาเกี่ยวกับวิธีการควบคุมความเร็วแบบแรกคือแรงดันไฟฟ้าอาจเปลี่ยนแปลงเมื่อเวลาผ่านไป
การเปลี่ยนแปลงเหล่านี้หมายถึงความเร็วไม่สม่ำเสมอ
ดังนั้นวิธีแรกจึงไม่พึงปรารถนา
วิธีแก้ปัญหา: เราใช้วิธีที่สองเพื่อควบคุมความเร็ว
เราใช้อัลกอริทึม PID เพื่อเสริมวิธีที่สอง
PID แสดงถึงอนุพันธ์อินทิกรัลตามสัดส่วน
ในอัลกอริธึม PID ความเร็วปัจจุบันของมอเตอร์จะถูกวัดและเปรียบเทียบกับความเร็วที่ต้องการ
ข้อผิดพลาดนี้ใช้สำหรับการคำนวณที่ซับซ้อนเพื่อเปลี่ยนรอบการทำงานของมอเตอร์ตามเวลา
มีกระบวนการนี้ในแต่ละรอบ
หากความเร็วเกินความเร็วที่ต้องการ รอบการทำงานจะลดลง และรอบการทำงานจะเพิ่มขึ้นหากความเร็วต่ำกว่าความเร็วที่ต้องการ
การปรับนี้ไม่ได้ทำจนกว่าจะถึงความเร็วที่ดีที่สุด
ตรวจสอบและควบคุมความเร็วนี้อย่างต่อเนื่อง
ต่อไปนี้เป็นส่วนประกอบของระบบที่ใช้ในโปรเจ็กต์นี้ และคำแนะนำโดยย่อเกี่ยวกับรายละเอียดของแต่ละส่วนประกอบ
STM 32F407: ไมโครคอนโทรลเลอร์ที่ออกแบบโดย ST Micro-section
มันทำงานบน ARM Cortex เอ็มสถาปัตยกรรม
เป็นผู้นำตระกูลด้วยความถี่สัญญาณนาฬิกาสูงถึง 168 MHz
ตัวขับมอเตอร์ L298N: IC นี้ใช้สำหรับขับเคลื่อนมอเตอร์
มีอินพุตภายนอก 2 ช่อง
หนึ่งอันจากไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์ให้สัญญาณ PWM แก่มัน
สามารถปรับความเร็วมอเตอร์ได้โดยการปรับความกว้างพัลส์
อินพุตที่สองคือแหล่งจ่ายแรงดันไฟฟ้าที่จำเป็นในการขับเคลื่อนมอเตอร์
มอเตอร์กระแสตรง: มอเตอร์กระแสตรงทำงานโดยใช้แหล่งจ่ายไฟกระแสตรง
ในการทดลองนี้ มอเตอร์กระแสตรงทำงานโดยใช้ข้อต่อโฟโตอิเล็กทริกที่เชื่อมต่อกับตัวขับมอเตอร์
เซ็นเซอร์อินฟราเรด: เซ็นเซอร์อินฟราเรดจริงๆ แล้วเป็นตัวรับส่งสัญญาณอินฟราเรด
ทำหน้าที่ส่งและรับคลื่นอินฟราเรดเพื่อนำไปใช้งานต่างๆ
ตัวเข้ารหัส IR ออปติคอลคัปเปลอร์ 4N35: ออปติคัลคัปเปลอร์เป็นอุปกรณ์ที่ใช้ในการแยกส่วนแรงดันไฟฟ้าต่ำของวงจรและส่วนไฟฟ้าแรงสูง
ตามความหมายของชื่อ มันทำงานโดยใช้แสง
เมื่อส่วนไฟฟ้าแรงต่ำได้รับสัญญาณ กระแสจะไหลในส่วนไฟฟ้าแรงสูง
ระบบเป็นระบบควบคุมความเร็ว
ตามที่กล่าวไว้ข้างต้น ระบบถูกนำไปใช้โดยใช้ PID ของปริพันธ์ตามสัดส่วนและอนุพันธ์
ระบบควบคุมความเร็วมีส่วนประกอบข้างต้น
ส่วนแรกคือเซ็นเซอร์ความเร็ว
เซ็นเซอร์ความเร็วเป็นวงจรเครื่องส่งและรับสัญญาณอินฟราเรด
เมื่อของแข็งผ่านช่องรูปตัวยู เซ็นเซอร์จะเข้าสู่สถานะต่ำ
โดยปกติแล้วจะอยู่ในสถานะที่สูง
เอาต์พุตเซ็นเซอร์เชื่อมต่อกับตัวกรองความถี่ต่ำผ่านเพื่อกำจัดการลดทอนที่เกิดจากภาวะชั่วคราวที่เกิดขึ้นเมื่อสถานะของเซ็นเซอร์เปลี่ยนแปลง
ตัวกรองความถี่ต่ำผ่านประกอบด้วยตัวต้านทานและตัวเก็บประจุ
ค่าต่างๆ ถูกเลือกตามต้องการ
ตัวเก็บประจุที่ใช้คือ 1100nf และความต้านทานที่ใช้คือประมาณ 25 โอห์ม
ตัวกรองความถี่ต่ำผ่านขจัดสภาวะชั่วคราวที่ไม่จำเป็นซึ่งอาจส่งผลให้มีการอ่านค่าและค่าขยะเพิ่มเติม
จากนั้นตัวกรองความถี่ต่ำผ่านจะถูกส่งออกผ่านตัวเก็บประจุไปยังพินดิจิทัลอินพุตของไมโครคอนโทรลเลอร์ stm
อีกส่วนหนึ่งคือมอเตอร์ที่ควบคุมโดย pwm ที่มาจากไมโครคอนโทรลเลอร์ stm
การตั้งค่านี้มาพร้อมกับการแยกทางไฟฟ้าโดยใช้ออปติคอลคัปเปลอร์ไอซี
ตัวเชื่อมต่อแบบออปติคอลมีไฟ LED ที่ปล่อยแสงภายในแพ็คเกจไอซี และเมื่อให้พัลส์สูงที่เทอร์มินัลอินพุต จะทำให้เทอร์มินัลเอาต์พุตลัดวงจร
เทอร์มินัลอินพุตให้ pwm ผ่านตัวต้านทานที่จำกัดกระแสของไฟ LED ที่เชื่อมต่อกับตัวเชื่อมต่อแบบออปติคัล
ตัวต้านทานแบบดรอปดาวน์เชื่อมต่ออยู่ที่เอาต์พุต ดังนั้นเมื่อเทอร์มินัลลัดวงจร แรงดันไฟฟ้าจะถูกสร้างขึ้นที่ตัวต้านทานแบบดรอปดาวน์ และพินที่เชื่อมต่อกับเทอร์มินัลบนตัวต้านทานจะได้รับสถานะสูง
เอาต์พุตของโฟโตอิเล็กทริคคัปปลิ้งเชื่อมต่อกับ IN1 ของไอซีไดรเวอร์มอเตอร์ที่รักษาความสูงของพินการเปิดใช้งาน
เมื่อรอบการทำงานของ pwm เปลี่ยนแปลงที่อินพุตตัวเชื่อมต่อแบบออปติคอล พินไดรเวอร์มอเตอร์จะสลับมอเตอร์และควบคุมความเร็วของมอเตอร์
หลังจากที่ pwm จ่ายให้กับมอเตอร์แล้ว ตัวขับมอเตอร์มักจะจ่ายแรงดันไฟฟ้า 12 โวลต์
จากนั้นตัวขับมอเตอร์จะทำให้มอเตอร์ทำงานได้
ขอแนะนำอัลกอริธึมที่เราใช้ในการดำเนินโครงการควบคุมความเร็วมอเตอร์นี้
pwm ของมอเตอร์มีให้โดยการจับเวลาเพียงครั้งเดียว
การกำหนดค่าตัวจับเวลาถูกสร้างขึ้นและตั้งค่าให้เป็น pwm
เมื่อมอเตอร์สตาร์ท มันจะหมุนร่องที่ติดอยู่กับเพลามอเตอร์
รอยกรีดจะผ่านช่องเซ็นเซอร์และสร้างพัลส์ต่ำ
ที่พัลส์ต่ำ โค้ดจะเริ่มต้นและรอให้สลิทเคลื่อนที่
เมื่อรอยกรีดหายไป เซ็นเซอร์จะเข้าสู่สถานะสูงและตัวจับเวลาจะเริ่มนับ
ตัวจับเวลาจะให้เวลาเราระหว่างกรีดทั้งสอง
ตอนนี้ เมื่อมีพัลส์ต่ำอีกอันปรากฏขึ้น คำสั่ง IF จะดำเนินการอีกครั้ง โดยรอขอบขาขึ้นถัดไปและหยุดตัวนับ
หลังจากคำนวณความเร็วแล้ว ให้คำนวณความแตกต่างระหว่างความเร็วกับค่าอ้างอิงจริงแล้วให้ค่า pid
Pid คำนวณค่ารอบการทำงานที่ถึงค่าอ้างอิง ณ ขณะนั้น
ค่านี้มอบให้กับ CCR (
การลงทะเบียนการเปรียบเทียบ)
ความเร็วของตัวจับเวลาจะลดลงหรือเพิ่มขึ้นทั้งนี้ขึ้นอยู่กับข้อผิดพลาด
รหัส Atollic Truestudio ถูกนำมาใช้แล้ว
อาจต้องติดตั้ง STM studio เพื่อการดีบัก
นำเข้าโปรเจ็กต์ในสตูดิโอ STM และนำเข้าตัวแปรที่คุณต้องการดู
การเปลี่ยนแปลงเล็กน้อยคือในวันที่ 2017-11-4xx
เปลี่ยนความถี่สัญญาณนาฬิกาเป็นไฟล์ h ที่ 168 MHz อย่างแม่นยำ
ข้อมูลโค้ดได้รับการระบุไว้ข้างต้น
สรุปคือควบคุมความเร็วของมอเตอร์โดยใช้ PID
อย่างไรก็ตาม เส้นโค้งนั้นไม่ใช่เส้นเรียบเสียทีเดียว
มีสาเหตุหลายประการ: แม้ว่าเซ็นเซอร์ที่เชื่อมต่อกับตัวกรองความถี่ต่ำผ่านยังคงมีข้อบกพร่องบางอย่าง สาเหตุเหล่านี้เกิดจากเหตุผลที่หลีกเลี่ยงไม่ได้บางประการสำหรับตัวต้านทานแบบไม่เชิงเส้นและอุปกรณ์อิเล็กทรอนิกส์แบบอะนาล็อก มอเตอร์ไม่สามารถหมุนได้อย่างราบรื่นที่แรงดันไฟฟ้าหรือ pwm ขนาดเล็ก
มันมีรูตูดที่อาจทำให้ระบบป้อนค่าผิด
เนื่องจากความกระวนกระวายใจ เซ็นเซอร์อาจพลาดช่องบางช่องที่ให้ค่าที่สูงกว่า และสาเหตุหลักของข้อผิดพลาดอื่นอาจเป็นเพราะความถี่สัญญาณนาฬิกาหลักของ stm
นาฬิกาหลักของ Stm คือ 168 MHz
แม้ว่าปัญหานี้ได้รับการแก้ไขแล้วในโครงการนี้ แต่ก็มีแนวคิดแบบองค์รวมของแบบจำลองนี้ที่ไม่ได้ให้ความถี่สูงเช่นนี้
ความเร็วของวงเปิดให้เส้นที่ราบรื่นมากโดยมีค่าที่ไม่คาดคิดเพียงไม่กี่ค่าเท่านั้น
PID ยังทำงานและให้เวลาความเสถียรของมอเตอร์ต่ำมาก
มอเตอร์ PID ได้รับการทดสอบที่แรงดันไฟฟ้าต่างๆ เพื่อรักษาความเร็วอ้างอิงให้คงที่
การเปลี่ยนแปลงแรงดันไฟฟ้าไม่เปลี่ยนความเร็วของมอเตอร์ แสดงว่า PID กำลังทำงาน
นี่คือบางส่วนของเอาต์พุตสุดท้ายของ PID ก)
วงปิด @ 110 rpmb)
วงปิด @ 120 rpmโครงการนี้ไม่สามารถทำได้หากไม่ได้รับความช่วยเหลือจากสมาชิกกลุ่มของฉัน
ฉันอยากจะขอบคุณพวกเขา
ขอบคุณที่รับชมโครงการนี้
หวังว่าจะช่วยคุณได้
โปรดตั้งตารอเพิ่มเติม
ไว้อาลัยกันก่อนนะ :)