בקרה על מנוע סרבו: מדריך מלא
נקודות למידה עיקריות:
הגדרת בקרה על מנוע סרבו: הבקרה על מנוע הסרבו מאפשרת מניפולציה מדוייקת של מיקום המנוע, מהירותו ותאוצתו באמצעות אותות אלקטרוניים.
מנגנון משוב: מערכת המשוב, שברוב המקרים היא פוטנציאומטר או אncoder, מבטיחה שהפלט של המנוע תואם בדיוק לה擲下繼續翻译:
กลไกป้อนกลับ: ระบบป้อนกลับ,ซึ่งมักจะเป็นโพเทนชิโอมิเตอร์หรืออังโคเดอร์, ทำให้แน่ใจว่าเอาต์พุตของมอเตอร์ตรงกับสัญญาณควบคุมอย่างแม่นยำ. สัญญาณ PWM: การปรับความกว้างพัลส์ (PWM) เป็นสิ่งสำคัญในการกำหนดตำแหน่งของเซอร์โวโดยการเปลี่ยนระยะเวลาของพัลส์ไฟฟ้า. Arduino และมอเตอร์เซอร์โว: การใช้บอร์ด Arduino เป็นวิธีที่ได้รับความนิยมและมีประสิทธิภาพในการเขียนโปรแกรมและควบคุมมอเตอร์เซอร์โวด้วยการตั้งค่าฮาร์ดแวร์ขั้นต่ำ. แอปพลิเคชันของมอเตอร์เซอร์โว: มอเตอร์เซอร์โวเป็นสิ่งจำเป็นสำหรับโครงการที่ต้องการการควบคุมตำแหน่งที่แม่นยำ เช่น หุ่นยนต์และระบบอัตโนมัติ. มอเตอร์เซอร์โวคือมอเตอร์ที่ออกแบบมาเพื่อความแม่นยำและความถูกต้องในการหมุน. มันแตกต่างจากมอเตอร์ DC ทั่วไปโดยความสามารถในการรักษาตำแหน่งเฉพาะแทนที่จะหมุนอย่างต่อเนื่อง. คุณสมบัตินี้ทำให้มอเตอร์เซอร์โวเหมาะสำหรับหุ่นยนต์, อัตโนมัติ, และโครงการงานอดิเรก. บทความนี้อธิบายการทำงานของการควบคุมมอเตอร์เซอร์โว, ประเภทต่างๆ ของมอเตอร์เซอร์โว, และวิธีการควบคุมและการควบคุมอุปกรณ์ต่างๆ. นอกจากนี้ยังให้ตัวอย่างการใช้งานและโครงการของมอเตอร์เซอร์โว. อะไรคือมอเตอร์เซอร์โว? มอเตอร์เซอร์โวถูกกำหนดให้เป็นตัวกระทำที่อนุญาตให้ควบคุมตำแหน่ง (มุม), ความเร็ว, และการเร่งความเร็วอย่างแม่นยำ. มอเตอร์เซอร์โวแบบมาตรฐานประกอบด้วยสามส่วนหลัก: มอเตอร์ DC, วงจรควบคุม, และอุปกรณ์ป้อนกลับ. มอเตอร์ DC จ่ายพลังงานให้กับเซอร์โวและเชื่อมต่อกับเกียร์ที่ลดความเร็วและเพิ่มแรงบิดบนแกนเอาต์พุต. แกนเอาต์พุตเป็นส่วนของเซอร์โวที่หมุนและเคลื่อนย้ายโหลด. วงจรควบคุมรับผิดชอบในการรับและประมวลผลสัญญาณป้อนเข้าจากคอนโทรลเลอร์ภายนอก. สัญญาณเหล่านี้บอกเซอร์โรว่าควรย้ายไปที่ตำแหน่ง, ความเร็ว, หรือทิศทางใด. วงจรควบคุมยังส่งพลังงานไปยังมอเตอร์ DC เพื่อขับเคลื่อนมัน. อุปกรณ์ป้อนกลับมักจะเป็นโพเทนชิโอมิเตอร์หรืออังโคเดอร์ที่วัดตำแหน่งปัจจุบันของแกนเอาต์พุต. อุปกรณ์ป้อนกลับส่งข้อมูลตำแหน่งกลับไปยังวงจรควบคุม ซึ่งจะปรับกำลังไฟของมอเตอร์ DC เพื่อให้ตำแหน่งจริงสอดคล้องกับตำแหน่งที่ต้องการจากสัญญาณป้อนเข้า. วงจรป้อนกลับระหว่างวงจรควบคุมและอุปกรณ์ป้อนกลับทำให้เซอร์โวสามารถเคลื่อนย้ายไปยังและรักษาตำแหน่งใดๆ ภายในช่วงการเคลื่อนไหวได้อย่างแม่นยำ. วิธีควบคุมมอเตอร์เซอร์โว? มอเตอร์เซอร์โวถูกควบคุมโดยการส่งสัญญาณ PWM (Pulse-Width Modulation) ไปยังสายสัญญาณของเซอร์โว. PWM เป็นเทคนิคที่สลับสัญญาณเปิดและปิดอย่างรวดเร็วเพื่อสร้างพัลส์ที่มีความกว้างต่างๆ. ความกว้างของพัลส์กำหนดตำแหน่งของแกนเอาต์พุต. ตัวอย่างเช่น เมื่อคุณส่งสัญญาณ PWM ที่มีความกว้างพัลส์ 1.5 มิลลิวินาที (ms) เซอร์โวจะเคลื่อนย้ายไปยังตำแหน่งกลาง (90 องศา). เมื่อคุณส่งสัญญาณ PWM ที่มีความกว้างพัลส์ 1 ms เซอร์โวจะเคลื่อนย้ายไปยังตำแหน่งต่ำสุด (0 องศา). เมื่อคุณส่งสัญญาณ PWM ที่มีความกว้างพัลส์ 2 ms เซอร์โวจะเคลื่อนย้ายไปยังตำแหน่งสูงสุด (180 องศา). สัญญาณ PWM มีความถี่ 50 Hz ซึ่งหมายความว่ามันจะทำซ้ำทุก 20 ms. ความกว้างพัลส์สามารถเปลี่ยนแปลงจาก 1 ms ถึง 2 ms ภายในช่วงเวลานี้. มีหลายวิธีในการสร้างและส่งสัญญาณ PWM ไปยังมอเตอร์เซอร์โว. วิธีที่พบบ่อยที่สุดคือ: ใช้บอร์ด Arduino หรือไมโครคอนโทรลเลอร์อื่นๆ ใช้โพเทนชิโอมิเตอร์หรือเซ็นเซอร์อนาล็อกอื่นๆ ใช้จอยสติ๊กหรืออุปกรณ์ป้อนข้อมูลดิจิตอลอื่นๆ ใช้คอนโทรลเลอร์หรือไดรเวอร์เซอร์โวเฉพาะ ในส่วนต่อไป เราจะสำรวจแต่ละวิธีอย่างละเอียดและเห็นตัวอย่างว่าพวกมันทำงานอย่างไร. ควบคุมมอเตอร์เซอร์โวด้วย Arduino Arduino เป็นหนึ่งในแพลตฟอร์มที่ได้รับความนิยมมากที่สุดในการควบคุมมอเตอร์เซอร์โว. บอร์ด Arduino มีเอาต์พุต PWM ที่สร้างไว้แล้วที่สามารถใช้ส่งสัญญาณไปยังเซอร์โว. Arduino ยังมีไลบรารี Servo ที่ทำให้ง่ายต่อการเขียนโค้ดสำหรับการควบคุมเซอร์โว. เพื่อควบคุมมอเตอร์เซอร์โวด้วย Arduino คุณจะต้องใช้: บอร์ด Arduino (เช่น Arduino UNO) มอเตอร์เซอร์โวมาตรฐาน (เช่น SG90) สาย jumper เบรดบอร์ด (ตามต้องการ) สายสีแดงจากเซอร์โวเชื่อมต่อกับ 5V บนบอร์ด Arduino. สายสีดำจากเซอร์โวเชื่อมต่อกับ GND บนบอร์ด Arduino. สายสีขาวจากเซอร์โวเชื่อมต่อกับขา 9 บนบอร์ด Arduino. เพื่อเขียนโปรแกรมบอร์ด Arduino คุณจะต้องใช้ Arduino IDE (ออนไลน์หรือออฟไลน์). คุณสามารถใช้ตัวอย่างจากไลบรารี Servo หรือเขียนโค้ดของคุณเอง. โค้ดต่อไปนี้แสดงวิธีการสแกนมอเตอร์เซอร์โวไปและกลับตลอด 180 องศาโดยใช้ loop for: #include <Servo.h> // รวมไลบรารี Servo Servo myservo; // สร้างวัตถุ Servo int pos = 0; // ตัวแปรสำหรับตำแหน่ง void setup() { myservo.attach(9); // ต่อวัตถุ Servo กับขา 9 } void loop() { for (pos = 0; pos <= 180; pos += 1) { // วนรอบจาก 0 ถึง 180 องศา myservo.write(pos); // เขียนตำแหน่งไปยังวัตถุ Servo delay(15); // รอ 15 ms } for (pos = 180; pos >= 0; pos -= 1) { // วนรอบจาก 180 ถึง 0 องศา myservo.write(pos); // เขียนตำแหน่งไปยังวัตถุ Servo delay(15); // รอ 15 ms } } โค้ดนี้ใช้สอง loop เพื่อเพิ่มและลดตัวแปรตำแหน่งจาก 0 ถึง 180 องศาและกลับกัน. จากนั้นเขียนค่านี้ไปยังวัตถุ Servo โดยใช้ myservo.write(pos). ยังเพิ่มการหยุด 15 ms ระหว่างแต่ละขั้นตอนเพื่อลดความเร็วในการเคลื่อนย้าย. อัปโหลดโค้ดนี้ไปยังบอร์ด Arduino ของคุณโดยใช้ปุ่ม Upload ใน IDE และดูว่ามอเตอร์เซอร์โวของคุณสแกนไปและกลับอย่างราบรื่น. ควบคุมมอเตอร์เซอร์โวด้วยโพเทนชิโอมิเตอร์ โพเทนชิโอมิเตอร์คือเซ็นเซอร์อนาล็อกที่สามารถเปลี่ยนความต้านทานได้ตามที่คุณหมุนหัวของมัน. คุณสามารถใช้โพเทนชิโอมิเตอร์เป็นอุปกรณ์ป้อนข้อมูลในการควบคุมมอเตอร์เซอร์โว. เพื่อควบคุมมอเตอร์เซอร์โวด้วยโพเทนชิโอมิเตอร์ คุณจะต้องใช้: บอร์ด Arduino (เช่น Arduino UNO) มอเตอร์เซอร์โวมาตรฐาน (เช่น SG90) โพเทนชิโอมิเตอร์ (10k Ohms) สาย jumper เบรดบอร์ด แผนภาพการเชื่อมต่อโพเทนชิโอมิเตอร์และมอเตอร์เซอร์โวไปยังบอร์ด Arduino แสดงด้านล่าง: สายสีแดงจากโพเทนชิโอมิเตอร์เชื่อมต่อกับ 5V บนบอร์ด Arduino. สายสีดำจากโพเทนชิโอมิเตอร์เชื่อมต่อกับ GND บนบอร์ด Arduino. สายสีเขียวจากโพเทนชิโอมิเตอร์เชื่อมต่อกับขา A0 บนบอร์ด Arduino. สายสีแดงจากเซอร์โวเชื่อมต่อกับ 5V บนแถวอื่นบนเบรดบอร์ด. สายสีดำจากเซอร์โวเชื่อมต่อกับ GND บนแถวอื่นบนเบรดบอร์ด. สายสีขาวจากเซอร์โวเชื่อมต่อกับขา D9 บนแถวอื่นบนเบรดบอร์ด. เพื่อเขียนโปรแกรมบอร์ด Arduino ของคุณ คุณจะต้องใช้โค้ดเดียวกับตัวอย่างก่อนหน้านี้ แต่เปลี่ยนบางบรรทัด: #include <Servo.h> // รวมไลบรารี Servo Servo myservo; // สร้างวัตถุ Servo int potpin = A0; // ขาที่เชื่อมต่อกับโพเทนชิโอมิเตอร์ int val = 0; // ตัวแปรสำหรับอ่านค่าโพเทนชิโอมิเตอร์ void setup() { myservo.attach(9); // ต่อวัตถุ Servo ขา D9 } void loop() { val = analogRead(potpin); // อ่านค่าจากโพเทนชิโอมิเตอร์ (0 -1023) val = map(val,0,1023,0,180); // แมปช่วงค่า (0 -180) myservo.write(val); // เขียนค่าที่แมปไปยังวัตถุ Servo delay(15); // รอ 15 ms } โค้ดนี้ใช้ฟังก์ชัน analogRead(potpin) เพื่ออ่านค่าจากโพเทนชิโอมิเตอร์ที่เชื่อมต่อกับขา A0. จากนั้นใช้ฟังก์ชัน map(val,0,1023,0,180) เพื่อแมปช่วงค่าจาก 0 -1023 องศา. จากนั้นเขียนค่าที่แมปไปยังวัตถุ Servo โดยใช้ฟังก์ชัน myservo.write(val). ยังเพิ่มการหยุด 15 ms เช่นเดียวกับตัวอย่างก่อนหน้านี้. คุณสามารถอัปโหลดโค้ดนี้ไปยังบอร์ด Arduino ของคุณโดยใช้ปุ่ม Upload ใน IDE. คุณควรเห็นมอเตอร์เซอร์โวของคุณเคลื่อนย้ายตามตำแหน่งของหัวหมุนของโพเทนชิโอมิเตอร์. ควบคุมมอเตอร์เซอร์โวด้วยจอยสติ๊ก จอยสติ๊กคืออุปกรณ์ป้อนข้อมูลดิจิตอลที่สามารถตรวจจับทิศทางและขนาดของการเคลื่อนที่ตามสองแกน. คุณสามารถใช้จอยสติ๊กในการควบคุมมอเตอร์เซอร์โวด้วยการแมปแกน x ของจอยสติ๊กไปยังมุมของเซอร์โว. เพื่อควบคุมมอเตอร์เซอร์โวด้วยจอยสติ๊ก คุณจะต้องใช้อุปกรณ์ต่อไปนี้: บอร์ด Arduino (เช่น Arduino UNO) มอเตอร์เซอร์โวมาตรฐาน (เช่น SG90) โมดูลจอยสติ๊ก (เช่น KY-023)  


