เซอร์โวมอเตอร์ Dynamixel AX-12A จาก Robotis เป็นมอเตอร์ที่มีไมโครคอนโทรลเลอร์และวงจรขับอยู่ในตัว มีโหมดสั่งการให้หมุนเป็นแบบล้อ หมุนแบบระบุตำแหน่ง ที่สำคัญสามารถอ่านค่าต่างๆ ย้อนกลับมาได้ ไม่ว่าจะเป็นแรงดัน อุณหภูมิ ความเร็ว ตำแหน่งปัจจุบันของมอเตอร์ การควบคุมทำได้โดยใช้สัญญาณเพียงเส้นเดียว ต่อพ่วงกันได้หลายๆ ตัวแบบอนุกรม และอ้างอิงตำแหน่งมอเตอร์ด้วย ID ของมอเตอร์แต่ละตัวที่ไม่ซ้ำกัน
คุณสมบัติของ Dynamixel AX-12A
-
น้ำหนัก 53.5 กรัม
-
ขนาด 32มม. x 50มม. x 40มม.
-
ความละเอียด 0.29 องศา
-
อัตราทด 254:1
-
ทำงานที่แรงดันในช่วง 9-12V แนะนำ 11.1V
-
แรงบิต 1.5 นิวตัน.เมตร ที่แรงดัน 12V กระแส 1.5A
-
ความเร็วหมุนขณะไม่มีโหลด 59 รอบต่อนาทีที่แรงดัน 12V
-
ควบคุมตำแหน่งได้ 300 องศา หรือควบคุมการเคลื่อนที่แบบต่อเนื่องได้
-
รูปแบบโปรโตคอล Half duplex Asynchronous Serial Communication (8bit,1stop,No Parity)
-
ต่อพ่วงกันได้ 254 ID (0~253)
-
ความเร็วในการสื่อสาร 7343 bps ถึง 1 Mbps
-
มีการป้อนกลับตำแหน่ง และค่าที่ใช้ในการควบคุมครบถ้วน
เพื่อใช้งาน Dynamixel AX-12A ให้เห็นภาพง่ายที่สุดทาง Robotis ได้เตรียมซอฟต์แวร์บนคอมพิวเตอร์เพื่อทดสอบปรับตั้งค่าต่างๆ ไว้ให้แล้วชื่อว่า DYNAMIXEL Wizard 2.0 ซึ่งจะสามารถต่อกับบอร์ดพ่วงได้หลายๆ ตัวในที่นี้จะเลือกใช้ บอร์ด USB2TTL+RS485 ของ Smile-Robotics
บอร์ด USB2TTL+RS485
บอร์ด USB2TTL+RS485 จะแปลงจากการสื่อสาร USB จากคอมพิวเตอร์เป็นการสื่อสารอนุกรม และแปลงรูปแบบสัญญาณอีกครั้งเพื่อใช้งานกับมอเตอร์ในตระกูล DYNAMIXEL หลายๆแบบ ในที่นี้ขอโฟกัสไปที่ AX-12A ซึ่งใช้สายเพียง 3 เส้น และสื่อสารอนุกรมแบบ Half Duplex (รับและส่งสัญญาณด้วยสายเพียงเส้นเดียว)
ไฟเลี้ยงที่ใช้เลี้ยงมอเตอร์ ให้ต่อเข้ากับจุดต่อ Terminal Block สีเขียว โดยแรงดันที่ใช้จะต้องอยู่ในช่วง 9-12V ถ้าเป็น Adapter จะต้องจ่ายกระแสอย่างน้อย 2A สำหรับมอเตอร์ 1-2 ตัว กรณีมอเตอร์มากกว่า 2 ตัวแนะนำเป็นแบตเตอรี่แบบ Li-Po ขนาด 3 เซล (11.1V) จะสามารถจ่ายกระแสชั่วขณะได้ดีกว่า
การเชื่อมต่อ
สำหรับมอเตอร์ AX-12A จะใช้ตำแหน่งเสียบสายเป็นจุดต่อ 3 ขา ตรงกลาง ส่วนแหล่งจ่ายไฟในที่นี้เลือกใช้เป็น Adater ขนาด 12V 5A ซึ่งใช้ขั้วต่อแจ๊กอแดปเตอร์ที่สามารถเสียบสายเข้าไปได้ง่าย ให้สังเกตว่าขั้วบวกจะเป็นสายไฟสีแดง GND จะเป็นสายไฟสีดำ
ติดตั้งไดรเวอร์ USB to Serial
บอร์ด USB2TTL+RS485 ใช้ไอซี USB to Serial ของ FTDI จะต้องติดตั้งไดรเวอร์ ทำตามขั้นตอนดังนี้
-
เข้าไปที่ https://ftdichip.com/drivers/vcp-drivers/ เลือกดาวน์โหลด โดยคลิกที่ Setup Executable ในส่วนของ Windows
-
เมื่อดาวน์โหลดไฟล์มาแล้ว ให้แตกไฟล์ Zip ออกมา จะได้ไฟล์ CDM21236_Setup.exe (เวอร์ชั่นเปลี่ยนตามยุคสมัย) สำหรับติดตั้ง
-
ดับเบิ้ลคลิกที่ไฟล์เพื่อติดตั้ง
-
ทำตามขั้นตอนการติดตั้งจนเสร็จสมบูรณ์
ติดตั้งซอฟต์แวร์ DYNAMIXEL Wizard
-
เช้าไปที่เวปไซต์ Robotis ไปที่เมนู Support เลือก Download หรือ เข้าสู่หน้าดาวน์โหลดด้วยลิงก์ http://en.robotis.com/service/downloadpage.php?ca_id=10 เลือกโหลด DYNAMIXEL Wizard 2.0 (สำหรับ Windows)
-
เมื่อดาวน์โหลดเรียบร้อยจะได้ไฟล์ DynamixelWizard2Setup_x86 ให้ดับเบิ้ลคลิกเพื่อติดตั้ง
-
ทำการติดตั้งตามขั้นตอนจนเสร็จเรียบร้อย
-
หน้าตาของโปรแกรม DYNAMIXEL Wizard 2.0 จะเปิดขึ้นมาดังรูป
โปรแกรม DYNAMIXEL Wizard 2.0
โปรแกรมนี้สร้างขึ้นมาเพื่อจัดการข้อมูลต่างๆ ให้กับเซอร์โวมอเตอร์ในตระกูล DYNAMIXEL ซึ่งประกอบไปด้วย
การอัพเดต Firmware ให้กับเซอร์โวมอเตอร์ DYNAMIXEL
การแก้ตรวจสอบและแก้ปัญหาให้กับตัวมอเตอร์
การกำหนดค่า Config ค่าบอดเรต ค่า ID ต่างๆ
การพล็อตกราฟแสดงการทำงานแบบเรียลไทม์
การดูผลและตรวจวัดค่าต่างๆ ที่ส่งมาจากตัวมอเตอร์
เชื่อมต่อมอเตอร์ AX-12A เข้ากับ DYNAMIXEL Wizard 2.0
-
เพื่อจะค้นหาเซอร์โวมอเตอร์ที่เชื่อมต่ออยู่กับบอร์ด USB2TLL+RS485 จะต้องกดที่ปุ่ม SCAN แต่การ SCAN นี้จะค้นหามอเตอร์ทุกค่าบอดเรต ทุก Protocol ทำให้เสียเวลานาน ให้คลิกเข้าไปที่เมนู Tools > Options เพื่อปรับเปลี่ยนตัวเลือกในการ Scan ให้ใกล้เคียงกับที่เราต้องการมากที่สุดก่อน
-
จากรูปให้เลือก COM พอร์ตที่ใช้เชื่อมต่อ เลือกบอดเรต 3 ค่าคือ 57600 115200 และ 1000000 ซึ่งเป็นค่าบอดเรตปกติที่มักใช้ในเซอร์โวมอเตอร์ DYNAMIXEL แล้วกดปุ่ม OK ออกจากหน้าต่าง
-
เริ่มต้นค้นหา โดยกดที่ปุ่ม Scan
-
จะมีหน้าต่างแสดงการค้นหา โดยจะเริ่มไล่บอดเรตจาก 57600 และไล่ ID ไปเรื่อยๆ ซึ่งจะใช้เวลาสักระยะ
-
เมื่อเสร็จขั้นตอน DYNAMIXEL Wizard 2.0 จะแสดงข้อมูลต่างๆ ภายในตัวมอเตอร์ออกมา มีทั้งส่วนที่แสดงค่า เช่น แรงดัน อุณหภูมิ และส่วนที่เราปรับเปลี่ยนค่าได้เช่น ตำแหน่ง (Goal Position) LED เป็นต้น
-
สังเกตว่าเมื่อซื้อเซอร์โวมอเตอร์ AX-12A มาครั้งแรก บอดเรตที่ใช้จะอยู่ที่ 1000000 และตำแหน่ง ID จะอยู่ที่ 001 ดังนั้นถ้าซื้อ AX-12A มามากกว่า 1 ตัว จะต้องปรับเปลี่ยนตำแหน่ง ID ให้ไม่ตรงกัน และกรณีใช้กับบอร์ดควบคุมที่ความเร็วไม่สูงมากนักเช่นบอร์ด Arduino บอดเรตที่เลือกใช้จะต้องกำหนดให้มีค่าต่ำสักหน่อย ซึ่งอาจใช้เป็น 57600
ทดสอบขับเคลื่อนมอเตอร์เบื้องต้น
ที่บริเวณกรอบด้านขวาของจอภาพจะมีหน้าต่าง สำหรับแสดงและปรับค่าเบื้องต้นให้ใช้งาน โดยรายละเอียดการปรับค่าต่างๆ แสดงดังรูป
การเคลื่อนที่เป็นองศา
มอเตอร์ AX-12A จะควบคุมตำแหน่งได้ 0-300 องศา สามารถทดสอบได้ดังนี้
-
เลือกโหมดการเคลื่อนที่เป็น Joint
-
เลื่อนเปิด Torque เพื่อเปิดจ่ายกำลังไปยังมอเตอร์
-
ที่วงกลมสีดำ ใช้เมาส์ลากเส้นสีแดงไปทางด้านซ้ายหรือขวา สังเกตว่า มอเตอร์จะปรับเปลี่ยนตำแหน่งตาม
-
เลื่อนเปิด LED เพื่อให้ LED ที่ตัวมอเตอร์ติดสว่าง สังเกตที่มอเตอร์ AX-12A จะมี LED สีแดงติดสว่าง
การเคลื่อนที่หมุนรอบตัว
มอเตอร์ AX-12A โหมดหมุนรอบตัวจะควบคุมทิศทางและความเร็วได้ แต่ไม่สามารถระบุตำแหน่งได้ ทดสอบได้ดังนี้
-
เลื่อนปิด Torque เพื่อให้สามารถเปลี่ยนโหมดจาก Joint เป็น Wheel ได้
-
เปลี่ยนโหมดจาก Joint เป็น Wheel
-
เลื่อนเปิด Torque เพื่อจ่ายกำลังไปยังมอเตอร์ AX-12A
-
ใช้เมาส์คลิกลาก ปุ่มสีแดง CW คือ ตามเข็มนาฬิกา CCW คือทวนเข็มนาฬิกา
-
สังเกตการณ์แสดงสถานะตำแหน่งปัจจุบัน จะแสดงได้ที่ตำแหน่ง 0-300 องศาเท่านั้น
เมื่อเลิกใช้งานให้เลื่อนปิด Torque เพื่อให้สามารถปรับเปลี่ยนค่าอย่างอื่นได้
การเปลี่ยนค่า ID ของมอเตอร์
-
เลือกไปยังมอเตอร์ที่ต้องการเปลี่ยนหมายเลข ID
-
คลิกเลือกไปยังแถวของ ID
-
ที่หน้าต่าง ID ด้านขวามือ ให้เลือกตำแหน่ง ID ใหม่ที่ต้องการเปลี่ยน (ในที่นี้เลือก ID 2)
-
กดปุ่ม Save ค่า ID จะถูกเปลี่ยนเป็นค่าใหม่ทันที
-
ค่า ID ค่าใหม่จะแสดงขึ้นมาทันที
การเปลี่ยนค่าบอดเรตที่ใช้สื่อสาร
-
เลือกไปยังมอเตอร์ที่ต้องการเปลี่ยนค่าบอดเรต
-
คลิกเลือกไปยังแถว Baud Rate (Bus)
-
ที่หน้าต่าง Baud Rate (Bus) ด้านขวามือ ให้เลือกค่าบอดเรตใหม่ ในต่ออย่างเลือก 57600
-
กดปุ่ม Save โปรแกรมจะตัดการเชื่อมต่อ และเชื่อมต่อใหม่ด้วยค่าบอดเรตค่าใหม่
-
โปรแกรม DYNAMIXEL Wizard จะสื่อสารกับมอเตอร์ AX-12A ด้วยบอดเรตค่าใหม่
ค่าต่างๆตามตารางเหล่านี้ ถ้าเป็นแถบสีเทา จะสามารถอ่านค่ามาแสดงได้อย่างเดียว แต่ถ้าเป็นแถบปกติ สามารถปรับตั้งค่าได้ ตอนต่อไปจะนำบอร์ด Arduino ใช้งานร่วมกับ DYNAMIXEL Shield เพื่อที่จะเขียนโค้ดควบคุมมอเตอร์ AX-12A ซึ่งจะใช้ชุดคำสั่ง ที่มาจากตารางเหล่านี้เพื่อเรียกใช้งาน