Show
Servo Motor เป็นอุปกรณ์ที่สามารถควบคุมเครื่องจักรกล หรือระบบการทํางานนั้นๆ ให้เป็นไปตามความต้องการ เช่น ควบคุมความเร็ว (Speed) , ควบคุมแรงบิด (Torque) , ควบคุมแรงตําแหน่ง (Position) โดยให้ผลลัพธ์ตามความต้องการที่มีความแม่นยําสูง Panasonic A5II Siries Servo Drive & Servo Motorทําไมต้องใช้ Servo MotorServo Motor เป็นอุปกรณ์ที่ผู้ใช้งานสามารถ ควบคุมความเร็ว (Speed Control) , แรงบิดของมอเตอร์ (Torque Control) , ระยะทางในการเคลื่อนที่(หมุน) (Position Control) ของตัวมอเตอร์ได้ ซึ่งมอเตอร์ทั่วไปไม่สามารถ ควบคุมในลักษณะงานเบื้องต้นได้ ขนาดของ Servo Motorขนาดของ Servo Motor จะมีหน่วยในการบอกขนาดเป็นวัตต์ (Watt) Servo Motor ของ Panasonic จะมีขนาดตั้งแต่ 50W-15kWทําให้ผู้ใช้งานมีความหลากหลายในการใช้งาน ทำไม Servo Motor ถึงสามารถควบคุมการทำงานได้การทํางานเพียงตัว Servo Motor เพียงอย่างเดียวนั้นไม่สามารถทํางานได้ การที่จะให้ Servo Motor จะควบคุมลักษณะที่กล่าวมาข้างต้นนั้นต้องมีองค์ประกอบดังนี้ 1. Controllerหลักการทํางานหลักๆ หน้าที่ของ ControllerController มีหน้าที่รับคําสั่งจากผู้ใช้งานว่าต้องการให้ Servo Motor นั้นเคลื่อนที่ด้วยความเร็วเท่าไหร่และระยะทาง ใกล้หรือไกลแค่ไหน หน้าที่ตรงจุดนี้จะเป็น Controller จะเป็นตัวกําหนดให้กับตัว Servo Moter 2. Servo Driverหน้าที่ของ Servo DriverServo Driver จะรับสัญญาณมาจาก Controller และสั่งการให้กับตัว Servo Motor เคลื่อนที่ตามที่ Controller สั่งการมา แต่ทําไม Controller ไม่สั่งการควบคุมไปที่ Servo Motor โดยตรง ???เนื่องจาก Servo Driver จะเป็นตัวที่ปรับตั้งค่าของตัว Servo Motor ให้ทํางานตามรูปแบบของการควบคุมไม่ว่า จะเป็นการควบคุม ความเร็ว(Speed Control) , แรงบิด(Toucque) และ ตําแหน่ง(Position Control) ตัว Servo Driver จะเป็น ตัวกําหนดค่าตัวแปรหรือพารามิเตอร์ต่างๆ ให้กับตัว Servo Motor ให้ทํางานได้อย่างถูกต้องและแม่นยํา เพราะฉะนั้นเมื่อใช้ Servo Motor ก็จะต้องมี Servo Driver เสมอ 3. Servo Motorหน้าที่ของ Servo MotorServo Motor มีหน้าที่ขับเคลื่อนอุปกรณ์ของเครื่องจักรกลหรือระบบของการทํางานนั้นๆ ให้เป็นไปตามรูปแบบที่ ได้รับคําสั่งจากตัว Servo Driver พร้อมกับส่งสัญญาณป้อนกลับให้กับตัว Servo Driver ว่าตอนนี้ Servo Motor เคลื่อนที่ด้วย ความเร็วเท่าไหร่และระยะทางในการเคลื่อนที่เป็นระยะทางเท่าไหร่แล้ว ด้วยสัญญาณของตัว Encoder ที่อยู่ภายในตัว Servo Moter ทําให้การเคลื่อนที่ของ Servo Motor นั้นมีความแม่นยําสูง ด้วยองค์ประกอบข้างต้นทั้งหมดทั้งมวลนั้น พอจะทําให้ผู้ที่จะใช้งานหรือผู้ที่กําลังศึกษา พอที่จะมองภาพของการ ทํางานของระบบ Servo Motor ว่าองค์ประกอบของระบบหรือการที่จะใช้งาน Servo Motor นั้นต้องมีองค์ประกอบอะไรบ้างจึงจะใช้งาน Servo Motor ได้อย่างถูกต้องและมีประสิทธิภาพ
Servo Motor คืออะไร ???หากต้องการข้อมูลเพิ่มเติมกรุณากรอกอีเมลล์ด้านล่างบริษัทฯจะส่งไฟล์ ให้ดาวน์โหลดทางอีเมลล์ของคุณ เซอร์โวมอเตอร์ (Servo Motor) เป็นการรวมมอเตอร์ไฟฟ้ากระแสตรง (DC Motor) เข้ากับวงจรควบคุม โดยความแตกต่างที่สำคัญของเซอร์โวมอเตอร์กับมอเตอร์แบบอื่น ๆ คือเซอร์โวมอเตอร์จะรู้ตำแหน่งที่ตัวเองอยู่ และสั่งเปลี่ยนตำแหน่งโดยการเปลี่ยนองศาได้ นิยมใช้งานในเครื่องบินบังคับ เรือบังคับ โดยใช้กำหนดทิศทางของหางเสือเป็นองศา รูปที่ 1 ตัวอย่างการใช้งานเซอร์โวมอเตอร์ควบคุมหางเสือของเรือบังคับ (ที่มา : FT009 RC BOAT - Servo Replacement) การเลือกใช้งานเซอร์โวมอเตอร์เซอร์โวมอเตอร์(ส่วนใหญ่)ใช้แรงดันไฟฟ้า 5V และมีองศาการหมุนที่ 0 ถึงประมาณ 200 องศา (ยกเว้นมีการดัดแปลงให้หมุน 360 องศา) นอกจาก 2 ข้อนี้ที่เซอร์โวมอเตอร์ทุกรุ่นมีเหมือนกัน ยังมีอีก 4 ข้อที่เซอร์โวมอเตอร์แต่ละรุ่นมีไม่เหมือนกัน
ปัจจัยทั้ง 4 นี้ จะแปรผันตรงกับราคาของเซอร์โวมอเตอร์ ตัวอย่างข้อมูลใน Datasheet ของเซอร์โวมอเตอร์รุ่น SG90 ตาราง Dimensions & Specifications แสดงข้อมูลแรงบิด (Torque) และความเร็วในการหมุน (Speed) ของเซอร์โวมอเตอร์รุ่น SG90 รูปที่ 2 ตาราง Dimensions & Specifications แสดงข้อมูลแรงบิด (Torque) และความเร็วในการหมุน (Speed) ของเซอร์โวมอเตอร์รุ่น SG90 ตัวอย่าง ข้อมูลใน Datasheet ของเซอร์โวมอเตอร์รุ่น MG995 หัวข้อ Specifications แสดงข้อมูลแรงบิด (Torque) และความเร็วในการหมุน (Speed) ของเซอร์โวมอเตอร์รุ่น MG995 โดยแสดงไว้ 2 ค่า คือค่าที่แรงดันต่ำสุดที่เซอร์โวมอเตอร์รุ่นนี้ทำงานได้ และแรงดันสูงสุดที่เซอร์โวมอเตอร์รุ่นนี้ทำงานได้ รูปที่ 3 หัวข้อ Specifications แสดงข้อมูลแรงบิด (Torque) และความเร็วในการหมุน (Speed) ของเซอร์โวมอเตอร์รุ่น MG995 หลักการทำงานของเซอร์โวมอเตอร์เซอร์โวมอเตอร์ประกอบด้วย 4 ส่วนหลัก คือ มอเตอร์กระแสตรง (DC Motor) ชุดเฟืองทดรอบ (Gear system) วอลุ่ม (Potentiometer หรือ VR) และวงจรควบคุม (Control Electronics) รูปที่ 4 แสดงส่วนประกอบของเซอร์โวมอเตอร์ (ที่มา : Inside A Servo Motor - Electrical Engineering Books) หลักการทำงานของเซอร์โวมอเตอร์เริ่มที่วงจรควบคุม เมื่อวงจรควบคุมได้รับข้อมูลองศาที่ต้องการมาแล้ว วงจรควบคุมจะคำนวณว่ามอเตอร์จะต้องหมุนในทิศทางตามเข็มนาฬิกา หรือทวนเข็มนาฬิกา เพื่อให้ไปสู่องศาที่ต้องการได้ เมื่อมอเตอร์เริ่มหมุน ตัววอลุ่มที่ติดอยู่กับชุดเฟืองมอเตอร์จะตรวจสอบตำแหน่งที่มอเตอร์หมุนไป โดยหากวอลุ่มตรวจพบว่าตำแหน่งที่มอเตอร์หมุนเริ่มใกล้กับองศาที่ผู้ใช้กำหนด วงจรส่วนควบคุมจะเริ่มสั่งให้มอเตอร์หมุนช้าลงเพื่อให้หมุนเข้าใกล้องศาที่กำหนดได้มากที่สุด เมื่อมอเตอร์หมุนได้ตำแหน่งองศาที่ถูกต้องแล้ว วงจรส่วนควบคุมจะตรวจสอบตำแหน่งของมอเตอร์เป็นระยะ ๆ โดยอ่านค่าจากวอลุ่ม หากตรวจพบว่าตำแหน่งผิดเพี้ยนไปจากค่าที่ตั้งไว้ (อันอาจเกิดจากผู้ใช้เอามือไปหมุนเล่น หรือภาระส่งผลให้ตำแหน่งเคลื่อน) วงจรควบคุมก็จะสั่งให้มอเตอร์หมุนกลับมาให้ได้ตำแหน่งเป็นระยะ ๆ ชนิดของเซอร์โวมอเตอร์เซอร์โวมอเตอร์แบ่งออกเป็น 2 ชนิด ดังนี้ เซอร์โวมอเตอร์ 180 องศาเป็นเซอร์โวมอเตอร์ที่นิยมใช้งานทั่วไป มีหลายรุ่น หลายขนาด และหลายราคา สามารถควบคุมให้หมุดได้ตามองศาที่ต้องการ โดยหมุนได้ 0 ถึง 180 องศา (ในบางรุ่นหมุนได้สุดที่ประมาณ 200 องศา) เซอร์โวมอเตอร์ 360 องศาเป็นเซอร์โวมอเตอร์ที่ส่วนใหญ่ดัดแปลงมาจากแบบ 180 องศา โดยดัดแปลงวงจรควบคุม และตัดแกนหรือนำเอาวอลุ่มออก เพื่อให้เซอร์โวมอเตอร์สามารถหมุนได้ครบรอบ เซอร์โวมอเตอร์ชนิดนี้ไม่สามารถควบคุมองศาได้ ควบคุมได้แค่ความเร็ว และทิศทางการหมุนเท่านั้น นิยมนำมาใช้เป็นมอเตอร์สำหรับรถบังคับ รถวิ่งตามเส้น เพราะอาศัยชุดเฟืองที่เซอร์โวมอเตอร์มีอยู่แล้ว ทำให้ได้แรงบิดที่มากกว่ามอเตอร์กระแสตรงปกติ รวมทั้งการควบคุมยังไม่ต้องใช้วงจรขับมอเตอร์แยก ทำให้ลดความยุ่งยากในการต่อวงจรไปได้มาก รวมทั้งประหยัดค่าใช้จ่ายด้วย เซอร์โวมอเตอร์ชื่อรุ่นเดียวกัน แต่อาจจะมีทั้งชนิด 180 องศา และ 360 องศา จำเป็นต้องใช้ความระมัดระวังอย่างมากในการเลือกซื้อ การใช้งานเซอร์โวมอเตอร์เซอร์โวมอเตอร์มีสาย 3 เส้น ประกอบด้วย
การควบคุมการหมุนของเซอร์โวมอเตอร์จะทำที่สาย Signal โดยป้อนสัญญาณ PWM ความถี่ 50Hz เข้าไป โดยมีความกว้างพัสล์บวกที่ 0.5mS (ค่าต่ำสุด) ถึง 2.5mS (ค่าสูงสุด) หรือ 1mS (ค่าต่ำสุด) ถึง 2mS (ค่าสูงสุด) ตามแต่รุ่นของเซอร์โวมอเตอร์ โดยหากป้อนสัญญาณ PWM ที่มีความกว้างช่วงบวกเข้าไปเท่าค่าต่ำสุด เซอร์โวมอเตอร์จะหมุนไปที่ 0 องศา หากป้อนสัญญาณ PWM เข้าไปเท่าค่าสูงสุด เซอร์โวมอเตอร์จะหมุนไปที่ 180 องศา รูปที่ 5 สัญญาณ PWM ที่ส่งผลต่อองศาการหมุนของเซอร์โวมอเตอร์ การหาค่าความกว้างช่วงบวกของสัญญาณ PWM จากค่าองศา สามารถหาได้จากสูตร ตัวอย่าง หากต้องการให้ Servo มอเตอร์ที่ทำงาน 0.5mS - 2.5mS หมุนไปที่ 120 องศา ความกว้างพัสล์บวกจะเป็นเท่าใด จึงสรุปได้ว่า ความกว้างพัสล์บวก คือ 1.833mS สัญญาณ PWM เกิดจากพัสล์บวกและพัสล์ลบ การหาความกว้างพัสล์ลบต้องหาคาบเวลาของสัญญาณก่อน และคาบเวลาของสัญญาณหาได้จากความถี่ โดยใช้สูตร เมื่อ
เนื่องจากเซอร์โวมอเตอร์ทำงานด้วยสัญญาณ PWM ความถี่ 50Hz ดังนั้นคาบเวลาของสัญญาณจึงหาได้ดังนี้ จึงสรุปได้ว่าที่ความถี่ 50Hz มีคาบเวลาของสัญญาณเป็น 20mS คาบเวลาของสัญญาณเกิดจากการนำความกว้างพัสล์บวกมาบวกกับความกว้างพัสล์ลบ (T=t1+t2) ดังนั้นหากรู้กว้างพัสล์บวก และรู้คาบเวลาของสัญญาณ ก็จะหาความกว้างพัสล์ลบได้ จากสูตร เมื่อ
เมื่อแทนค่าความกว้างคลื่นและความกว้างพัสล์บวกลงไป จะได้ จึงสรุปว่า ความกว้างพัสล์ลบมีค่า 18.167mS การใช้งานเซอร์โวมอเตอร์กับแพลตฟอร์ม Arduinoต่อเซอร์โวมอเตอร์เข้ากับบอร์ด Arduino Uno R3 ดังนี้ ตัวอย่างใช้เซอร์โวมอเตอร์รุ่น SG90 รูปที่ 6 การต่อเซอร์โวมอเตอร์เข้ากับบอร์ด Arduino Uno R3
จากตัวอย่างการคำนวณหาค่าความกว้างพัสล์บวก สามารถเขียนโค้ดในโปรแกรม Arduino ได้ดังนี้ หลังจากต่อวงจรครบแล้ว และอัพโหลดโปรแกรมลงไป เซอร์โวมอเตอร์จะหมุนไปที่ 120 องศา ทันที แต่การสั่งงานเซอร์โวมอเตอร์โดยใช้คำสั่ง delay() มักไม่เป็นที่นิยมใช้งาน เพราะจะทำให้การพัฒนาโปรแกรมต่อทำได้ยาก ดังนั้นการสั่งงานเซอร์โวจึงมักใช้วงจรส่วน Timer ที่มีอยู่ในไมโครคอนโทรลเลอร์ทุกเบอร์อยู่แล้วมาสั่งงานแทน สำหรับแพลตฟอร์ม Arduino ไม่จำเป็นต้องเขียนโปรแกรมสั่งงาน Timer เอง เนื่องจากแพลตฟอร์มมีไลบารี่ Servo ให้อยู่แล้ว ทำมาเพื่อให้การเขียนโปรแกรมสั่งงานเซอร์โวมอเตอร์ในแพลตฟอร์ม Arduino ทำได้ง่ายมากขึ้น โค้ดโปรแกรมตัวอย่างการใช้งานไลบารี่ Servo ดังโค้ดด้านล่าง มีคำสั่งที่น่าสนใจดังนี้ บรรทัดที่ 3 เป็นการสร้างออปเจค myservo จากคลาส Servo โดยคำสั่งนี้ 1 คำสั่ง จะใช้ควบคุมเซอร์โวมอเตอร์ได้ 1 ตัวเท่านั้น บรรทัดที่ 6 คำสั่ง myservo.attach(); กำหนดขา Signal ของเซอร์โวมอเตอร์ต่อเข้ากับบอร์ด Arduino จากวงจรด้านบนให้ต่อขา Signal ไว้ที่ขา 9 ในบรรทัดนี้จึงใส่ 9 บรรทัดที่ 10 12 และ 14 คำสั่ง myservo.write(); ใช้กำหนดองศาที่ต้องการให้เซอร์โวมอเตอร์หมุนไป การใช้งานเซอร์โวมอเตอร์ 360 องศาเซอร์โวมอเตอร์แบบ 360 องศา การควบคุมองศาจะเป็นการควบคุมความเร็วและทิศทางแทน โดยหาก
การเขียนโปรแกรมบนแพลตฟอร์ม Arduino ของเซอร์โว 360 องศา จะเหมือนกันกับแบบ 180 องศา เพียงแต่การกำหนดองศา จะเป็นตัวกำหนดทิศทางการหมุน และความเร็วในการหมุน ตัวอย่างโค้ดโปรแกรมควบคุมเซอร์โวมอเตอร์ 360 องศา มีดังนี้ การลดความเร็วของเซอร์โวมอเตอร์เซอร์โวมอเตอร์หากกำหนดองศาที่ต้องการให้หมุนแตกต่างจากองศาที่อยู่ ณ ปัจจุบันมาก จะทำให้เซอร์โวมอเตอร์หมุนเปลี่ยนองศาเร็วมาก ใบบางงานที่ไม่ต้องการให้เซอร์โวมอเตอร์เปลี่ยนองศาด้วยความเร็ว จำเป็นต้องใช้คำสั่ง for loop เข้ามาช่วยให้การเปลี่ยงองศาของเซอร์โวมอเตอร์ช้าลง หากองศาก่อนหน้ามีค่าน้อยกว่าองศาที่ต้องการให้เซอร์โวมอเตอร์หมุนไป ให้ใช้ for loop วิ่งค่าองศาในตัวแปร angle เป็นค่าขององศาเก่า ไปค่าองศาใหม่ ตัวอย่างโค้ดให้วิ่งจาก 40 องศา ไป 160 องศา อย่างช้า ๆ เป็นดังด้านล่าง แต่หากองศาเก่ามีค่ามากกว่าองศาใหม่ เงื่อนไขในคำสั่ง for loop จะไปเปลี่ยนไป ตัวอย่างโค้ดให้วิ่งจาก 160 องศา ไป 40 องศา อย่างช้า ๆ เป็นดังด้านล่าง การจ่ายไฟให้เซอร์โวมอเตอร์เซอร์โวมอเตอร์เป็นอุปกรณ์ที่ใช้กระแสไฟฟ้ามาก หากใช้เซอร์โวมอเตอร์รุ่นเล็กอย่าง SG90 หรือ MG90S ไฟที่มาจากช่อง USB ของคอมฯ ยังพอจะเลี้ยงได้อยู่ แต่หากเป็นเซอร์โวมอเตอร์ที่มีขนาดใหญ่ แรงบิดสูง อย่าง Futaba S3003 หรือ MG995 จำเป็นต้องใช้แหล่งจ่ายไฟภายนอกเพิ่ม โดยอาจจะเลือกใช้อแดปเตอร์ 5V มาจ่ายไฟเลี้ยงเซอร์โวมอเตอร์เพิ่ม หรือเลือกใช้สวิตชิ่ง 5V ก็ได้เช่นกัน
รูปที่ 7 ตัวอย่างการต่อไฟเลี้ยงเซอร์โวมอเตอร์เพิ่มเติมโดยใช้สวิตชิ่ง 5V 5A อ้างอิง
ข้อมูลเขียนบรรณานุกรมสนธยา นงนุช. ทุกเรื่องที่ควรรู้เกี่ยวกับเซอร์โวมอเตอร์และการใช้งาน. (2563). [ออนไลน์]. [สืบค้นเมื่อ ....]. จาก https://www.ioxhop.com/b/105 |