Sommario:
- Passaggio 1: componenti necessari
- Passaggio 2: Introduzione a Dynamixel 12A
- Passaggio 3: comunicazione/controllo di Dynamixel 12A
- Passaggio 4: scrittura della posizione dell'obiettivo su Dynamixel Motor
- Passaggio 5: CODICE PYTHON
Video: Controllo di Dynamixel 12A inviando pacchetti in serie: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
DYNAMIXEL 12A
Passaggio 1: componenti necessari
HARDWARE:
1. Dynamixel 12A o qualsiasi motore Dynamixel
2. USB a Dynamixel.
SOFTWARE:
1. Procedura guidata Robotis Dynamixel.
2. Python ---Pacchetto seriale installato
Passaggio 2: Introduzione a Dynamixel 12A
I motori Dynamixel sono altamente precisi e utilizzati principalmente nella robotica. Ogni motore Dynamixel ha un microcontrollore STM all'interno. È possibile leggere la coppia corrente, la tensione, l'assorbimento di corrente, la temperatura, la posizione, ecc., da Dynamixels Motors.
Specifiche di Dynamixel 12A:
Tensione di esercizio --12v
Peso-55g
Corrente massima --900mA
Coppia di stallo--15,3 Kg.cm
Passaggio 3: comunicazione/controllo di Dynamixel 12A
- Dynamixel 12A non è come i normali servomotori che hanno 3 pin GND, PWM, VCC, forniscono alimentazione e segnale PWM e controllano il motore.
- Possiamo controllare i motori Dynamixel utilizzando il protocollo di comunicazione Half Duplex UART.
Che cos'è il protocollo di comunicazione Half Duplex?
La trasmissione di dati half-duplex significa che i dati possono essere trasmessi in entrambe le direzioni su una portante di segnale, ma non contemporaneamente.
Ora impariamo a conoscere il protocollo 1.0 per Dynamixels di Robotis per controllare i motori Dynamixel.
- Puoi comunicare con i motori Dynamixel inviando pacchetti dal tuo laptop/microcontrollore come Arduino, r-pi, ecc., al microcontrollore che è presente all'interno dei motori Dynamixel.
- Ogni Dynamixels ha ID che possono essere modificati.
- Un pacchetto non è altro che un insieme di byte.
In caso di protocollo Dynamixel 1.0 avrai due tipi di pacchetti
- Pacchetti di istruzioni
- Pacchetti di stato
Il pacchetto di istruzioni è il dato di comando inviato al dispositivo.
Il pacchetto di istruzioni è simile a questo:
Intestazione1, Intestazione2, ID, Lunghezza, Istruzione, Param 1…Param, NChecksum
0xFF, 0xFF, ID, Lunghezza, Param istruzione 1…Param, NCHKSUM
Il byte di istruzione dice cosa fare, se leggere i dati o scrivere sul motore Dynamixel.
TABELLA DI CONTROLLO DI UN MOTORE DYNAMIXEL.-La Tabella di controllo è una struttura composta da più campi Dati per memorizzare lo stato o per controllare il dispositivo.
Maggiori informazioni su Control table quiControl Table Robotis.
Possiamo accedere ai dati nella tabella di controllo dal suo indirizzo e possiamo anche scrivere.
Passaggio 4: scrittura della posizione dell'obiettivo su Dynamixel Motor
Pacchetto di istruzioni per scrivere la posizione dell'obiettivo
ogni pacchetto inizia con un'intestazione
H1 H2 ID LEN INST P1 P2 P3 CKSM
0xFF, 0xFF, 0x01, 0x05, 0x04, 0x1E, 0xF4, 0x01, 0xE2
Istruzione LEN byte+p1+p2+p3+chk somma=5 byte
ID=ID motore Dynamixel 1-puoi impostare l'ID dynamixel utilizzando il software robotis dynamixel wizard
INST=reg write-specificando che stai scrivendo sul motore.
P1=Indirizzo iniziale del Data-In nella tabella di controllo La posizione obiettivo ha un indirizzo 30 (0x1E in esadecimale).
P2=byte inferiore di dati
P3=byte di dati più alto
Il calcolo del checksum verrà spiegato a breve………………….
Se invii il pacchetto di cui sopra a Dynamixel in serie utilizzando USB2Dynamixel, la posizione dell'obiettivo del motore Dynamixel verrà impostata su 500.
Passaggio 5: CODICE PYTHON
#Sviluppato da Madhu. Ultimo aggiornamento il 2019-07-19
importazione seriale
tempo di importazione
ser=serial. Serial('com36', '57142')
#cambia la porta com di conseguenza, la mia velocità di trasmissione dei motori dynamixel è 57142, puoi impostarla utilizzando il software della procedura guidata Dynamixel.
mentre (1):
gp1=input('inserisci posizione obiettivo ID1 (0-1023)')
l=gp1&255 #byte basso
h=(gp1>>8)&255 #high byte
li=[0xff, 0xff, 0x01, 0x05, 0x04, 0x1e, l1, h1]
#calcolo della somma di controllo
crc=somma(li[2:])
basso1=crc & 255
chksum=255-basso1
li.append(chksum) #aggiunta di checksum
a=bytearray(li) #conversione lista in bytearray
ser.write(a) #Invia in serie utilizzando usb2dynamixels.
tempo.sonno(0.5)
#Copia il codice incolla nell'IDE Python. Installa il pacchetto pyserial. collega il lato USB di usb2dynamixel alla porta USB del laptop e un'altra estremità al motore Dynamixel. Fornire un'alimentazione 12v esterna a USB2DYNAMIXEL.
ESEGUI il codice, inserisci il valore della posizione obiettivo. Vedi motore in funzione.
Consigliato:
Nodemcu sta inviando dati di temperatura e umidità a Thingspeak: 7 passaggi
Nodemcu sta inviando dati di temperatura e umidità a Thingspeak: qui in questo tutorial abbiamo interfacciato nodemcu con il sensore dht11 e inviato dati di temperatura e umidità al server Thingspeak. Qui abbiamo anche tracciato il grafico della temperatura e dell'umidità sul server di thingspeak
Controllo della luminosità Controllo LED basato su PWM tramite pulsanti, Raspberry Pi e Scratch: 8 passaggi (con immagini)
Controllo della luminosità Controllo LED basato su PWM tramite pulsanti, Raspberry Pi e Scratch: stavo cercando di trovare un modo per spiegare come funzionava il PWM ai miei studenti, quindi mi sono posto il compito di provare a controllare la luminosità di un LED utilizzando 2 pulsanti - un pulsante aumenta la luminosità di un LED e l'altro lo attenua. Per programmare
Sistema di presenza inviando dati RFID al server MySQL utilizzando Python con Arduino: 6 passaggi
Sistema di presenza inviando dati RFID al server MySQL utilizzando Python con Arduino: in questo progetto ho interfacciato RFID-RC522 con arduino e quindi sto inviando i dati RFID al database phpmyadmin. A differenza dei nostri progetti precedenti, in questo caso non stiamo utilizzando alcuno shield ethernet, qui stiamo solo leggendo i dati seriali provenienti da ar
Arduino sta inviando dati Dht11 a MySQL Server (PHPMYADMIN) utilizzando Python: 5 passaggi
Arduino sta inviando dati Dht11 a MySQL Server (PHPMYADMIN) utilizzando Python: in questo progetto ho interfacciato DHT11 con arduino e quindi sto inviando i dati di dht11 che sono umidità e temperatura al database phpmyadmin. A differenza del nostro progetto precedente, in questo caso non stiamo usando alcuno shield ethernet, qui stiamo solo leggendo t
Arduino sta inviando dati di temperatura e umidità a MySQL Server (PHPMYADMIN): 5 passaggi
Arduino sta inviando dati di temperatura e umidità al server MySQL (PHPMYADMIN): in questo progetto ho interfacciato DHT11 con arduino e quindi sto inviando i dati di dht11 che sono umidità e temperatura al database phpmyadmin. Qui stiamo usando uno script PHP per inviare i dati al database phpmyadmin