สนุกไปกับ DYNAMIXEL AX-12A ตอนที่ 1

เซอร์โวมอเตอร์ 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 จะต้องติดตั้งไดรเวอร์ ทำตามขั้นตอนดังนี้

  1. เข้าไปที่ https://ftdichip.com/drivers/vcp-drivers/ เลือกดาวน์โหลด โดยคลิกที่ Setup Executable ในส่วนของ Windows

  1. เมื่อดาวน์โหลดไฟล์มาแล้ว ให้แตกไฟล์ Zip ออกมา จะได้ไฟล์ CDM21236_Setup.exe (เวอร์ชั่นเปลี่ยนตามยุคสมัย) สำหรับติดตั้ง
  2. ดับเบิ้ลคลิกที่ไฟล์เพื่อติดตั้ง



  1. ทำตามขั้นตอนการติดตั้งจนเสร็จสมบูรณ์

ติดตั้งซอฟต์แวร์ DYNAMIXEL Wizard

  1. เช้าไปที่เวปไซต์ Robotis ไปที่เมนู Support เลือก Download หรือ เข้าสู่หน้าดาวน์โหลดด้วยลิงก์ http://en.robotis.com/service/downloadpage.php?ca_id=10 เลือกโหลด DYNAMIXEL Wizard 2.0 (สำหรับ Windows)

  1. เมื่อดาวน์โหลดเรียบร้อยจะได้ไฟล์ DynamixelWizard2Setup_x86 ให้ดับเบิ้ลคลิกเพื่อติดตั้ง




  1. ทำการติดตั้งตามขั้นตอนจนเสร็จเรียบร้อย

  1. หน้าตาของโปรแกรม DYNAMIXEL Wizard 2.0 จะเปิดขึ้นมาดังรูป

โปรแกรม DYNAMIXEL Wizard 2.0

โปรแกรมนี้สร้างขึ้นมาเพื่อจัดการข้อมูลต่างๆ ให้กับเซอร์โวมอเตอร์ในตระกูล DYNAMIXEL ซึ่งประกอบไปด้วย

การอัพเดต Firmware ให้กับเซอร์โวมอเตอร์ DYNAMIXEL
การแก้ตรวจสอบและแก้ปัญหาให้กับตัวมอเตอร์
การกำหนดค่า Config ค่าบอดเรต ค่า ID ต่างๆ
การพล็อตกราฟแสดงการทำงานแบบเรียลไทม์
การดูผลและตรวจวัดค่าต่างๆ ที่ส่งมาจากตัวมอเตอร์

เชื่อมต่อมอเตอร์ AX-12A เข้ากับ DYNAMIXEL Wizard 2.0

  1. เพื่อจะค้นหาเซอร์โวมอเตอร์ที่เชื่อมต่ออยู่กับบอร์ด USB2TLL+RS485 จะต้องกดที่ปุ่ม SCAN แต่การ SCAN นี้จะค้นหามอเตอร์ทุกค่าบอดเรต ทุก Protocol ทำให้เสียเวลานาน ให้คลิกเข้าไปที่เมนู Tools > Options เพื่อปรับเปลี่ยนตัวเลือกในการ Scan ให้ใกล้เคียงกับที่เราต้องการมากที่สุดก่อน

  1. จากรูปให้เลือก COM พอร์ตที่ใช้เชื่อมต่อ เลือกบอดเรต 3 ค่าคือ 57600 115200 และ 1000000 ซึ่งเป็นค่าบอดเรตปกติที่มักใช้ในเซอร์โวมอเตอร์ DYNAMIXEL แล้วกดปุ่ม OK ออกจากหน้าต่าง

  1. เริ่มต้นค้นหา โดยกดที่ปุ่ม Scan

  1. จะมีหน้าต่างแสดงการค้นหา โดยจะเริ่มไล่บอดเรตจาก 57600 และไล่ ID ไปเรื่อยๆ ซึ่งจะใช้เวลาสักระยะ

  1. เมื่อเสร็จขั้นตอน DYNAMIXEL Wizard 2.0 จะแสดงข้อมูลต่างๆ ภายในตัวมอเตอร์ออกมา มีทั้งส่วนที่แสดงค่า เช่น แรงดัน อุณหภูมิ และส่วนที่เราปรับเปลี่ยนค่าได้เช่น ตำแหน่ง (Goal Position) LED เป็นต้น
  2. สังเกตว่าเมื่อซื้อเซอร์โวมอเตอร์ AX-12A มาครั้งแรก บอดเรตที่ใช้จะอยู่ที่ 1000000 และตำแหน่ง ID จะอยู่ที่ 001 ดังนั้นถ้าซื้อ AX-12A มามากกว่า 1 ตัว จะต้องปรับเปลี่ยนตำแหน่ง ID ให้ไม่ตรงกัน และกรณีใช้กับบอร์ดควบคุมที่ความเร็วไม่สูงมากนักเช่นบอร์ด Arduino บอดเรตที่เลือกใช้จะต้องกำหนดให้มีค่าต่ำสักหน่อย ซึ่งอาจใช้เป็น 57600

ทดสอบขับเคลื่อนมอเตอร์เบื้องต้น

ที่บริเวณกรอบด้านขวาของจอภาพจะมีหน้าต่าง สำหรับแสดงและปรับค่าเบื้องต้นให้ใช้งาน โดยรายละเอียดการปรับค่าต่างๆ แสดงดังรูป

การเคลื่อนที่เป็นองศา

มอเตอร์ AX-12A จะควบคุมตำแหน่งได้ 0-300 องศา สามารถทดสอบได้ดังนี้

  1. เลือกโหมดการเคลื่อนที่เป็น Joint
  2. เลื่อนเปิด Torque เพื่อเปิดจ่ายกำลังไปยังมอเตอร์
  3. ที่วงกลมสีดำ ใช้เมาส์ลากเส้นสีแดงไปทางด้านซ้ายหรือขวา สังเกตว่า มอเตอร์จะปรับเปลี่ยนตำแหน่งตาม
  4. เลื่อนเปิด LED เพื่อให้ LED ที่ตัวมอเตอร์ติดสว่าง สังเกตที่มอเตอร์ AX-12A จะมี LED สีแดงติดสว่าง

การเคลื่อนที่หมุนรอบตัว

มอเตอร์ AX-12A โหมดหมุนรอบตัวจะควบคุมทิศทางและความเร็วได้ แต่ไม่สามารถระบุตำแหน่งได้ ทดสอบได้ดังนี้

  1. เลื่อนปิด Torque เพื่อให้สามารถเปลี่ยนโหมดจาก Joint เป็น Wheel ได้
  2. เปลี่ยนโหมดจาก Joint เป็น Wheel
  3. เลื่อนเปิด Torque เพื่อจ่ายกำลังไปยังมอเตอร์ AX-12A
  4. ใช้เมาส์คลิกลาก ปุ่มสีแดง CW คือ ตามเข็มนาฬิกา CCW คือทวนเข็มนาฬิกา
  5. สังเกตการณ์แสดงสถานะตำแหน่งปัจจุบัน จะแสดงได้ที่ตำแหน่ง 0-300 องศาเท่านั้น

เมื่อเลิกใช้งานให้เลื่อนปิด Torque เพื่อให้สามารถปรับเปลี่ยนค่าอย่างอื่นได้

การเปลี่ยนค่า ID ของมอเตอร์

  1. เลือกไปยังมอเตอร์ที่ต้องการเปลี่ยนหมายเลข ID
  2. คลิกเลือกไปยังแถวของ ID
  3. ที่หน้าต่าง ID ด้านขวามือ ให้เลือกตำแหน่ง ID ใหม่ที่ต้องการเปลี่ยน (ในที่นี้เลือก ID 2)
  4. กดปุ่ม Save ค่า ID จะถูกเปลี่ยนเป็นค่าใหม่ทันที

  1. ค่า ID ค่าใหม่จะแสดงขึ้นมาทันที

การเปลี่ยนค่าบอดเรตที่ใช้สื่อสาร

  1. เลือกไปยังมอเตอร์ที่ต้องการเปลี่ยนค่าบอดเรต
  2. คลิกเลือกไปยังแถว Baud Rate (Bus)
  3. ที่หน้าต่าง Baud Rate (Bus) ด้านขวามือ ให้เลือกค่าบอดเรตใหม่ ในต่ออย่างเลือก 57600
  4. กดปุ่ม Save โปรแกรมจะตัดการเชื่อมต่อ และเชื่อมต่อใหม่ด้วยค่าบอดเรตค่าใหม่

  1. โปรแกรม DYNAMIXEL Wizard จะสื่อสารกับมอเตอร์ AX-12A ด้วยบอดเรตค่าใหม่

ค่าต่างๆตามตารางเหล่านี้ ถ้าเป็นแถบสีเทา จะสามารถอ่านค่ามาแสดงได้อย่างเดียว แต่ถ้าเป็นแถบปกติ สามารถปรับตั้งค่าได้ ตอนต่อไปจะนำบอร์ด Arduino ใช้งานร่วมกับ DYNAMIXEL Shield เพื่อที่จะเขียนโค้ดควบคุมมอเตอร์ AX-12A ซึ่งจะใช้ชุดคำสั่ง ที่มาจากตารางเหล่านี้เพื่อเรียกใช้งาน

Facebook Comments Box