İçindekiler:

Dynamixel 12A'yı Seri Olarak Paket Göndererek Kontrol Etme: 5 Adım
Dynamixel 12A'yı Seri Olarak Paket Göndererek Kontrol Etme: 5 Adım

Video: Dynamixel 12A'yı Seri Olarak Paket Göndererek Kontrol Etme: 5 Adım

Video: Dynamixel 12A'yı Seri Olarak Paket Göndererek Kontrol Etme: 5 Adım
Video: 3D Baskı ve Dynamixel Motorlar ile Üretilen Robot 2024, Temmuz
Anonim
Dynamixel 12A'yı Seri Olarak Paket Göndererek Kontrol Etme
Dynamixel 12A'yı Seri Olarak Paket Göndererek Kontrol Etme

DİNAMİKSEL 12A

Adım 1: Gerekli Bileşenler

DONANIM:

1. Dynamixel 12A veya herhangi bir Dynamixel motor

2. USB'den Dynamixel'e.

YAZILIM:

1. Robotis Dynamixel sihirbazı.

2. Python ---Seri paket yüklendi

Adım 2: Dynamixel 12A'ya Giriş

Dynamixel motorlar oldukça hassastır ve çoğunlukla Robotikte kullanılır. Her Dynamixel motorun içinde STM mikrodenetleyici bulunur. Dynamixels Motors'dan akım torku, voltaj, akım çekimi, sıcaklık, konum vb. bilgileri okuyabilirsiniz.

Dynamixel 12A'nın Özellikleri:

Çalışma Gerilimi --12v

Ağırlık--55g

Maksimum akım --900mA

Durak Torku - -15.3 Kg.cm

Adım 3: Dynamixel 12A ile iletişim/kontrol etme

  • Dynamixel 12A, 3pin GND, PWM, VCC'ye sahip, güç kaynağı ve PWM sinyali veren ve motoru kontrol eden normal servo motorlar gibi değildir.
  • Dynamixel motorları Half Duplex UART haberleşme protokolü ile kontrol edebiliyoruz.

Yarım Dubleks İletişim Protokolü Nedir?

Yarım çift yönlü veri iletimi, verilerin bir sinyal taşıyıcı üzerinde her iki yönde iletilebilmesi, ancak aynı anda iletilemeyeceği anlamına gelir.

Şimdi Robotis'ten Dynamixel motorlarını kontrol etmek için Dynamixels için Protokol 1.0'ı öğreniyoruz.

  • Dynamixel motorların içinde bulunan mikrodenetleyiciye Arduino, r-pi vb. gibi laptop/mikrodenetleyicilerinizden paketler göndererek Dynamixel motorlar ile haberleşebilirsiniz.
  • Her Dynamixel'in değiştirilebilen kimlikleri vardır.
  • Bir paket, bayt kümesinden başka bir şey değildir.

Dynamixel protokolü 1.0 durumunda, iki tür paketiniz olacaktır.

  • talimat paketleri
  • Durum paketleri

Talimat Paketi, Cihaza gönderilen komut verileridir.

Talimat paketi şöyle görünür:

Header1, Header2, ID, Length, Instruction, Param 1…Param, NChecksum

0xFF, 0xFF, ID, Uzunluk, Komut Param 1…Param, NCHKSUM

Komut baytı, Dynamixel motoruna veri okumak veya yazmak için ne yapılacağını söyler.

BİR DİNAMİKSEL MOTORUN KONTROL TABLOSU.-Kontrol Tablosu, durumu saklamak veya cihazı kontrol etmek için birden fazla Veri alanından oluşan bir yapıdır.

Kontrol tablosu HereControl Table Robotis hakkında daha fazla bilgi edinin.

Adresinden kontrol tablosundaki verilere ulaşabilir ve ayrıca yazabiliriz.

Adım 4: Dynamixel Motor'a Hedef Konumu Yazma

Hedef pozisyonunu yazmak için talimat paketi

her paket bir başlık ile başlar

H1 H2 ID LEN INST P1 P2 P3 CKSM

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

LEN komut baytı+p1+p2+p3+chk toplam=5 bayt

ID=Dynamixel motor ID 1-dynamixel kimliğini robotis dynamixel sihirbaz yazılımını kullanarak ayarlayabilirsiniz

INST=reg yazma-motora yazdığınızı belirtir.

P1=Kontrol tablosundaki Verilerin başlangıç adresi Hedef konumu 30(onaltılık olarak 0x1E) adresine sahip.

P2=alt veri baytı

P3=daha yüksek veri baytı

Checksum hesaplaması birazdan anlatılacaktır………………….

Yukarıdaki paketi USB2Dynamixel kullanarak Seri olarak Dynamixel'e gönderirseniz, Dynamixel motor hedef konumu 500 olarak ayarlanır.

Adım 5: PYTHON KODU

#Madhu tarafından geliştirildi. 2019-07-19 tarihindeki son güncelleme

seriyi içe aktar

ithalat zamanı

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

#com portunu buna göre değiştirin, dynamixel motorlarımın baud hızı 57142, Dynamixel sihirbaz yazılımı kullanarak ayarlayabilirsiniz.

süre(1):

gp1=input('ID1 hedef konumunu girin(0-1023)')

l=gp1&255 #düşük bayt

h=(gp1>>8)&255 #yüksek bayt

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

#kontrol toplamı hesaplaması

crc=toplam(li[2:])

low1=crc & 255

chksum=255-düşük1

li.append(chksum) #kontrol toplamı ekleme

a=bytearray(li) #listeyi bytearray'e dönüştürme

ser.write(a) #usb2dynamixels kullanarak seri olarak gönder.

zaman.uyku(0.5)

#python IDE'de kod yapıştırmasını kopyala. pyserial paketini kurun. usb2dynamixel'in USB tarafını dizüstü bilgisayarın USB bağlantı noktasına ve diğer ucunu Dynamixel motoruna bağlayın. USB2DYNAMIXEL'e harici bir 12v besleme verin.

Kodu ÇALIŞTIRIN, hedef konum değerini girin. Motorun çalıştığını görün.

Önerilen: