วันเสาร์ที่ 28 กุมภาพันธ์ พ.ศ. 2552

เปลี่ยน Servo ธรรมดาให้เป็น Digital Servo จริงๆ

ก่อนอื่นก็ต้องทำความเข้าใจกันก่อนว่า Digital servo กับ Analog servo มันแตกต่างกันยังงัย โดยโครงสร้างก็ไม่แตกต่างกัน มอเตอร์ก็เหมือนๆ กัน ปัจจุบันมอเตอร์อาจปรับเปลี่ยนไปเป็น brushless ก็จะมีส่วนที่แตกต่างกันคือ วงจรขับมอเตอร์ แค่นั้น และก็ยังคงใช้ตัวต้านทานเพื่อระบุตำแหน่งของเซอร์โวเหมือนกัน

Analog Servo จะอ่านค่า PWM เข้าขา A/D ครับความละอียดแล้วแต่รุ่น ส่วนมากก็ 10บิท
Digital Servo จะอ่านค่า PWM เข้ามาเป็นพัลส์ครับ ความละเอียดก็จะมากกว่า

ส่วนที่ต่างนั้นก็เนื่องจาก digital servo จะมี processor ค่อยตรวจสอบสัญญาณ และจะขับสัญญาณเล็กๆ ไปยังมอเตอร์ตลอดเวลา เพื่อให้ servo สามารถเคลื่อนไปยังตำแหน่งต่อไปตามสัญญาณได้อย่างรวดเร็วนั่นเอง เราจะสังเกตุได้ว่า Servo digital มันมักจะครางแม้จะมีแรงมากระทำเพียงเล็กน้อย แน่นอนว่าต้องใช้กระแสเพิ่มขึ้นแม้จะเป็นสัญญาณเล็กๆ ก็ตาม

คราวนี้หากต้องการจะแปลง servo อะไรก็ตามให้ทำงานแบบ digital ล่ะก้อ ก็สามารถประยุกต์ใช้หลักการนี้ได้เลย

อ่านเพิ่มเติมได้ที่
http://www.futabarc.com/servos/digitalservos.pdf

ในงานควบคุมอื่นๆ ที่ต้องใช้ Servo จำนวนมากนั้น I/O ของ processor ที่ต้องใ้ช้ควบคุมก็เพิ่มขึ้นเป็นเงา ในบทความต่างประเทศนี้ เค้าใช้เทคนิคการส่งผ่านข้อมูล ซึ่งเร็วเพียงพอสำหรับการควบคุม servo หลายๆ ตัวโดยใช้สัญญาณเพิ่มขึ้นอีกไม่กี่เส้น

รายละเอียด
http://www.openservo.com/StepByStep

เหมาะกับงานพวกที่ต้องการความละเอียดหรืออ่ะไรที่มีอัตราการส่งข้อมูลสูงหน่อย หรือว่าเอาไปทำหุ่นยนต์พวกกิ้งกืออ่ะนะ ขามันเยอะดี หุ หุ

อ่านแล้วเกิด idea กระทันหัน

เซอร์โวดิจิตัลมันจะเหมือนกันทุกตัวหรือเปล่าหนอ

หลังจากที่เขียนโปรแกรมปะสา C คุม MCU มาจนเกือบจะเสร็จแล้ว ก็มาถึงการทดสอบส่วนของ Server Tester


ก่อนอื่นเหลาเพื่อให้พอทราบเลาๆ โดยหลักการก่อนว่าสัญญาณสำหรับควบคุมเซอร์โวโดยทั่วไป จะใช้ Pules Width Modulation โดยมี period ที่ 20 mS แต่ละความกว้างของสัญญาณก็จะเป็นตัวบอกตำแหน่งของ servo นั่นเอง โดยทั่วไปจะมีค่าโดยประมาณ 1-2 mS โดยใช้ค่า 1.5mS หรือ 1500 uS เพื่อใช้เป็นค่าสำหรับกำหนดจุดกึ่งกลางเป็น 90 องศา ซึ่งเซอร์โวแต่ละยี่ห้อ อาจจะสามารถทำงานกับความกว้างของ pulse มากหรือน้อยกว่านี้ได้
อ่านเพิ่มเติมได้ที่นี่ http://en.wikipedia.org/wiki/Servomechanism#RC_servos

เรื่องตลก ที่เรามักบอกตัวเองว่าต้องใช้เซอร์โวที่เร็วๆ เนื่องจากส่วนใหญ่ servo มักจะบอก spec เป็นความเร็วที่การกวาดแขน ทำมุม 60 องศา ทำให้นึกถึงเวลาไปตลาดแล้วเจอป้ายประเภท (ครึ่ง) โลละ 20 บาท ดูแล้ว น่าสนใจดี ซึ่งผู้ผลิตก็ใช้องศานี้ไว้อ้างอิงกันเสมอ

แล้วจริงๆ แล้ว เซอร์โวแต่ละตัวของเรามันทำงานได้แค่ไหนกันแน่ล่ะ ใครจะบอกเราได้ล่ะ แต่เราก็อาจจะเคยสงสัยก็ได้ว่า ค่าที่กำหนดในวิทยุมันจะแตกต่างกันตามยี่ห้อของเซอร์โวที่ใช้ เหมือนกันนะ

ในการทดสอบ เราใช้ค่าของความกว้างของสัญญาณ ตั้งแต่ 0.7 mS (700 uS) จนถึง 2.3 mS (2300 uS) จะได้รู้แล้วรู้รอดันไปว่า เซอร์ของเราใช้งานได้ขนาดไหน

ผลการทดสอบสำหรับ Servo analog ทั่วไปนั้น ไม่่ว่าจะเป็น Hitech65, TowerPro, E-Sky ทำงานได้ดี และส่วนระยะการทำงาน Hitech ทำได้เกือบ 90 องศาจากจุดศูนย์กลาง

แต่กับ digital servo ผมใช้ 9257 ก็แปลกใจว่าทำไม ที่ขอบบนสุดกับขอบล่างสุด มันไม่ทำงานเลย แต่จะทำงานที่ 1 mS จนถึง 2mS เท่านั้น ฮ่วย !!!