Índice:

Controlando Dynamixel 12A enviando pacotes em série: 5 etapas
Controlando Dynamixel 12A enviando pacotes em série: 5 etapas

Vídeo: Controlando Dynamixel 12A enviando pacotes em série: 5 etapas

Vídeo: Controlando Dynamixel 12A enviando pacotes em série: 5 etapas
Vídeo: Dynamixel Tutorial | How to control the Dynamixel Ax12 Motor using Python 2024, Novembro
Anonim
Controle do Dynamixel 12A enviando pacotes em série
Controle do Dynamixel 12A enviando pacotes em série

DYNAMIXEL 12A

Etapa 1: Componentes necessários

HARDWARE:

1. Dinamixel 12A ou qualquer motor Dynamixel

2. USB para Dynamixel.

PROGRAMAS:

1. Assistente Robotis Dynamixel.

2. Python --- Pacote serial instalado

Etapa 2: Introdução ao Dynamixel 12A

Os motores Dynamixel são altamente precisos e usados principalmente em robótica. Cada motor Dynamixel tem um microcontrolador STM dentro. Você pode ler o torque atual, a tensão, o consumo de corrente, a temperatura, a posição, etc., dos motores Dynamixels.

Especificações do Dynamixel 12A:

Tensão operacional - 12v

Peso - 55g

Corrente máxima - 900mA

Torque de parada - 15,3 Kg.cm

Etapa 3: Comunicação / controle do Dynamixel 12A

  • Dynamixel 12A não é como servo motores normais que têm 3 pinos GND, PWM, VCC, fornecem fonte de alimentação e sinal PWM e controlam o motor.
  • Podemos controlar motores Dynamixel usando o protocolo de comunicação UART Half Duplex.

O que é o protocolo de comunicação Half Duplex?

A transmissão de dados half-duplex significa que os dados podem ser transmitidos em ambas as direções em uma portadora de sinal, mas não ao mesmo tempo.

Agora aprendemos sobre o Protocolo 1.0 para Dynamixels da Robotis para controlar os motores Dynamixel.

  • Você pode se comunicar com motores Dynamixel enviando pacotes de seu laptop / microcontrolador como Arduino, r-pi, etc., para o microcontrolador que está presente dentro dos motores Dynamixel.
  • Todos os Dynamixels possuem IDs que podem ser modificados.
  • Um pacote nada mais é que um conjunto de bytes.

No caso do protocolo Dynamixel 1.0 você terá dois tipos de pacotes

  • Pacotes de instrução
  • Pacotes de status

Pacote de instruções são os dados de comando enviados ao dispositivo.

O pacote de instruções é parecido com este:

Cabeçalho1, Cabeçalho2, ID, Comprimento, Instrução, Parâmetro 1 … Parâmetro, NChecksum

0xFF, 0xFF, ID, Comprimento, Instrução Param 1… Param, NCHKSUM

O byte de instrução informa o que fazer, seja ler dados ou gravar no motor Dynamixel.

TABELA DE CONTROLE DE UM MOTOR DINAMIXEL.-A Tabela de controle é uma estrutura que consiste em vários campos de dados para armazenar o status ou para controlar o dispositivo.

Leia mais sobre a tabela de controle HereControl Table Robotis.

Podemos acessar dados na tabela de controle a partir de seu endereço e também podemos escrever.

Etapa 4: Escrevendo a posição da meta no motor Dynamixel

Pacote de instruções para escrever a posição da meta

cada pacote começa com um cabeçalho

H1 H2 ID LEN INST P1 P2 P3 CKSM

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

Byte de instrução LEN + p1 + p2 + p3 + chk sum = 5 bytes

ID = ID do motor Dynamixel 1 - você pode definir a id do dynamixel usando o software do assistente do dynamixel do robotis

INST = reg write - especificando que você está escrevendo no motor.

P1 = Endereço inicial do Data-In na tabela de controle A posição objetivo é ter um endereço 30 (0x1E em hexadecimal).

P2 = byte inferior de dados

P3 = byte superior de dados

O cálculo da soma de verificação será explicado em breve ………………….

Se você enviar o pacote acima para Dynamixel Serially usando USB2Dynamixel, a posição da meta do motor Dynamixel será definida como 500.

Etapa 5: CÓDIGO DE PYTHON

# Desenvolvido por Madhu. Última atualização em 2019-07-19

importar série

tempo de importação

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

#change com port em conformidade, minha taxa de bauds dos motores dynamixel é 57142, você pode configurá-la usando o software assistente Dynamixel.

enquanto (1):

gp1 = input ('insira a posição da meta ID1 (0-1023)')

l = gp1 e 255 #byte lento

h = (gp1 >> 8) e 255 # byte alto

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

#check soma cálculo

crc = soma (li [2:])

low1 = crc & 255

chksum = 255-low1

li.append (chksum) #adding check sum

a = bytearray (li) #convertendo lista em bytearray

ser.write (a) #Serially Send using usb2dynamixels.

tempo.sono (0,5)

#Copie o código e cole no IDE do python. Instale o pacote pyserial. conecte o lado USB do usb2dynamixel à porta USB do laptop e a outra extremidade ao motor Dynamixel. Forneça uma alimentação externa de 12 V ao USB2DYNAMIXEL.

EXECUTE o código e insira o valor da posição da meta. Veja motor funcionando.

Recomendado: