สารบัญ:

การควบคุม Dynamixel 12A โดยการส่งแพ็คเก็ตตามลำดับ: 5 ขั้นตอน
การควบคุม Dynamixel 12A โดยการส่งแพ็คเก็ตตามลำดับ: 5 ขั้นตอน

วีดีโอ: การควบคุม Dynamixel 12A โดยการส่งแพ็คเก็ตตามลำดับ: 5 ขั้นตอน

วีดีโอ: การควบคุม Dynamixel 12A โดยการส่งแพ็คเก็ตตามลำดับ: 5 ขั้นตอน
วีดีโอ: How To: Use Packet Control in Dynamixel Wizard 2.0 2024, พฤศจิกายน
Anonim
การควบคุม Dynamixel 12A โดยการส่งแพ็คเก็ตแบบอนุกรม
การควบคุม Dynamixel 12A โดยการส่งแพ็คเก็ตแบบอนุกรม

ไดนามิกเซล 12A

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น

ฮาร์ดแวร์:

1. Dynamixel 12A หรือมอเตอร์ Dynamixel ใดๆ

2. USB ไปยังไดนามิกเซล

ซอฟต์แวร์:

1.ตัวช่วยสร้าง Robotis Dynamixel

2. Python --- ติดตั้งแพ็คเกจอนุกรม

ขั้นตอนที่ 2: บทนำสู่ Dynamixel 12A

มอเตอร์ Dynamixel มีความแม่นยำสูงและส่วนใหญ่ใช้ในวิทยาการหุ่นยนต์ มอเตอร์ Dynamixel ทุกตัวมีไมโครคอนโทรลเลอร์ STM อยู่ภายใน คุณสามารถอ่านค่าแรงบิดปัจจุบัน แรงดันไฟ การดึงกระแส อุณหภูมิ ตำแหน่ง ฯลฯ.. จาก Dynamixels Motors

ข้อมูลจำเพาะของ Dynamixel 12A:

แรงดันไฟฟ้าที่ใช้งาน ---12v

น้ำหนัก--55g

กระแสสูงสุด --900mA

แรงบิดแผงลอย--15.3 Kg.cm

ขั้นตอนที่ 3: การสื่อสาร/การควบคุม Dynamixel 12A

  • Dynamixel 12A ไม่เหมือนกับเซอร์โวมอเตอร์ทั่วไปที่มี 3 พิน GND, PWM, VCC ให้แหล่งจ่ายไฟและสัญญาณ PWM และควบคุมมอเตอร์
  • เราสามารถควบคุมมอเตอร์ Dynamixel โดยใช้โปรโตคอลการสื่อสาร Half Duplex UART

Half Duplex Communication Protocol คืออะไร?

การส่งข้อมูลฮาล์ฟดูเพล็กซ์หมายความว่าข้อมูลสามารถส่งได้ทั้งสองทิศทางบนตัวส่งสัญญาณ แต่ไม่ใช่ในเวลาเดียวกัน

ตอนนี้เราเรียนรู้เกี่ยวกับโปรโตคอล 1.0 สำหรับ Dynamixels จาก Robotis เพื่อควบคุมมอเตอร์ Dynamixel

  • คุณสามารถสื่อสารกับมอเตอร์ Dynamixel ได้โดยส่งแพ็กเก็ตจากแล็ปท็อป/ไมโครคอนโทรลเลอร์ เช่น Arduino, r-pi ฯลฯ ไปยังไมโครคอนโทรลเลอร์ที่มีอยู่ในมอเตอร์ Dynamixel
  • Dynamixels ทุกตัวมี ID ที่สามารถแก้ไขได้
  • แพ็กเก็ตไม่มีอะไรเลยนอกจากชุดของไบต์

ในกรณีของ Dynamixel protocol 1.0 คุณจะมีแพ็คเก็ตสองประเภท

  • แพ็กเก็ตคำสั่ง
  • แพ็กเก็ตสถานะ

Instruction Packet เป็นข้อมูลคำสั่งที่ส่งไปยังอุปกรณ์

แพ็กเก็ตคำสั่งมีลักษณะดังนี้:

Header1, Header2, ID, Length, Instruction, พารามิเตอร์ 1…พารามิเตอร์, NChecksum

0xFF, 0xFF, ID, Length, Instruction Param 1…Param, NCHKSUM

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

ตารางควบคุมของมอเตอร์ไดนามิกเซล - ตารางควบคุมเป็นโครงสร้างที่ประกอบด้วยช่องข้อมูลหลายช่องเพื่อจัดเก็บสถานะหรือควบคุมอุปกรณ์

อ่านเพิ่มเติมเกี่ยวกับตารางควบคุม HereControl Table Robotis

เราสามารถเข้าถึงข้อมูลในตารางควบคุมจากที่อยู่ของมันและยังสามารถเขียนได้อีกด้วย

ขั้นตอนที่ 4: การเขียนตำแหน่งเป้าหมายไปยัง Dynamixel Motor

ชุดคำสั่งเขียนตำแหน่งเป้าหมาย

ทุกแพ็กเก็ตเริ่มต้นด้วยส่วนหัว

H1 H2 ID LEN INST P1 P2 P3 CKSM

0xFF, 0xFF, 0x01, 0x05, 0x04, 0x1E, 0xF4, 0x01, 0xE2

LEN-คำสั่งไบต์+p1+p2+p3+chk ผลรวม=5 ไบต์

ID=Dynamixel motor ID 1-คุณสามารถตั้งค่า dynamixel id โดยใช้ซอฟต์แวร์ตัวช่วยสร้าง robotis dynamixel

INST=reg เขียน-ระบุว่าคุณกำลังเขียนถึงมอเตอร์

P1=ที่อยู่เริ่มต้นของข้อมูล-ในตารางควบคุม ตำแหน่งเป้าหมายมีที่อยู่ 30(0x1E ในเลขฐานสิบหก)

P2=ไบต์ล่างของข้อมูล

P3=ไบต์ที่สูงกว่าของข้อมูล

การคำนวณ Checksum จะอธิบายในไม่ช้า……….

หากคุณส่งแพ็กเก็ตข้างต้นไปยัง Dynamixel Serially โดยใช้ USB2Dynamixel ตำแหน่งเป้าหมายของมอเตอร์ Dynamixel จะถูกตั้งค่าเป็น 500

ขั้นตอนที่ 5: รหัสหลาม

#พัฒนาโดย Madhu ปรับปรุงล่าสุดเมื่อ 2019-07-19

นำเข้า Serial

เวลานำเข้า

ser=serial. Serial('com36', '57142')

#เปลี่ยนพอร์ต com ตามนั้น อัตรารับส่งข้อมูลของมอเตอร์ไดนามิกเซลของฉันคือ 57142 คุณสามารถตั้งค่าได้โดยใช้ซอฟต์แวร์ตัวช่วยสร้าง Dynamixel

ในขณะที่(1):

gp1=input('ป้อน ID1 ตำแหน่งเป้าหมาย(0-1023)')

l=gp1&255 #ไบต์ต่ำ

h=(gp1>>8)&255 #ไบต์สูง

li=[0xff, 0xff, 0x01, 0x05, 0x04, 0x1e, l1, h1]

#ตรวจสอบการคำนวณผลรวม

crc=sum(li[2:])

ต่ำ1=crc & 255

chksum=255-low1

li.append(chksum) #เพิ่มเช็คซัม

a=bytearray(li) #converting list เป็น bytearray

ser.write(a) #ส่งแบบอนุกรมโดยใช้ usb2dynamixels

เวลานอน(0.5)

#Copy การวางโค้ดใน python IDE ติดตั้งแพ็คเกจ pyserial เชื่อมต่อ USB ด้าน USB ของ usb2dynamixel เข้ากับพอร์ต USB ของแล็ปท็อปและปลายอีกด้านหนึ่งกับมอเตอร์ Dynamixel จ่ายไฟ 12v ภายนอกให้กับ USB2DYNAMIXEL

เรียกใช้รหัส ป้อนค่าตำแหน่งเป้าหมาย ดู การทำงานของมอเตอร์

แนะนำ: