...
POST No. 2591892
다이나믹셀 쉴드를 이용한 다이나믹셀 구동
2022-05-29 15:45:10 ikxoghd

다이나믹셀 쉴드와 아두이노 우도 보드를 결합하여 DynamixelShield의 아두이노 예제 프로그램을 구동 중에 처음에는 정상적으로 구동이 됐으나, 어느 순간 업로드 후 다이나믹셀 구동을 시도하여도 구동이 되지 않습니다. 현재 TTL통신을 이용 중이며 전원을 켰을 때 모터의 전원(LED점등)은 정상적으로 확인되는 상태입니다. 예제 프로그램에서 바꾼 점은 저희는 시리얼 모니터링을 이용하지 않기에, 이와 관련된 코드만 삭제하였습니다. 

U2D2보드와 위자드를 이용한 다이나믹셀 구동에는 문제가 없는 상태입니다. 모든 다이나믹셀에서 현재 같은 현상이 보이고 U2D2와 위자드를 이용하면 구동이 되므로 다이나믹셀의 문제도 아닌것이라 판단되고, 예제 프로그램을 크게 바꾸지도 않았고 초기에는 잘 구동 됐었던 만큼 프로그램에도 문제가 없다고 생각합니다. 다이나믹셀 쉴드의 TTL통신상태나 UART 스위치 쪽에 문제가 있거나 어떤 설정이 바뀌었다고 생각하고 있는데 혹시 이와 관련하여 도움을 받을 수 있었으면 좋겠습니다.

 

아래는 저희가 사용한 아두이노 프로그램의 예제파일 코드입니다.

 

#include <DynamixelShield.h>

 

#include <SoftwareSerial.h>

 

const uint8_t DXL2_ID = 2;

const uint8_t DXL3_ID = 3;

const uint8_t DXL4_ID = 4;

 

const float DXL_PROTOCOL_VERSION = 2.0;

 

DynamixelShield dxl;

 

 

void setup() {

 

  dxl.begin(57600);

 

  dxl.setPortProtocolVersion(DXL_PROTOCOL_VERSION);

 

  dxl.ping(DXL2_ID);

   dxl.ping(DXL3_ID);

    dxl.ping(DXL4_ID);

 

 

  dxl.torqueOff(DXL2_ID);

    dxl.torqueOff(DXL3_ID);

      dxl.torqueOff(DXL4_ID);

      

  dxl.setOperatingMode(DXL2_ID, OP_POSITION);

  dxl.setOperatingMode(DXL3_ID, OP_POSITION);

  dxl.setOperatingMode(DXL4_ID, OP_POSITION);

    

  dxl.torqueOn(DXL2_ID);

  dxl.torqueOn(DXL3_ID);

  dxl.torqueOn(DXL4_ID);

}

 

void loop() {

 

  dxl.setGoalPosition(DXL2_ID, 0);

  delay(1000);

  dxl.setGoalPosition(DXL2_ID, 1024);

  delay(1000);

 

  dxl.setGoalPosition(DXL3_ID, 512);

  delay(1000);

  dxl.setGoalPosition(DXL3_ID, 2048);

  delay(1000);

 

    dxl.setGoalPosition(DXL4_ID, 1024);

  delay(1000);

  dxl.setGoalPosition(DXL4_ID, 3073);

  delay(1000);

}

2022-05-29 15:45:10
ikxoghd
2022-05-30 11:43:00 유기웅

안녕하세요.

올려주신 코드로는 정상 동작 확인했습니다.

사용하시는 다이나믹셀 쉴드 및 아두이노 보드를 확인해 봐야 할 뜻합니다.

여유분의 보드가 있으시면 교체하여 확인해 주세요.

확인이 어려우시면 AS 신청 및 AS 규정을 참고하여 보내주시면 점검해 드리겠습니다.

감사합니다. 

2022-05-30 11:43:00
ykw4463