openCR 보드와 Dynamixel이 연결되지 않아 멀티미터를 이용해 전압을 확인해보았습니다.
TTL Port VCC와 GND 전압을 측정하였을 때 9V 정도가 출력이 되는 상황입니다.
이 경우 소프트웨어 적으로 포트의 전압을 12V 이상으로 변경할 수 있는 것인지 회로 이상으로 수리가 필요한 것인지 여쭤보고 싶습니다.소프트웨어 적으로 회로의 전압을 변경할 수 있다면 가능한 방법도 알려주시면 많은 도움이 될 것 같습니다! (참고로 입력 전압은 12V로 잘 입력되고 있습니다)
++
아두이노 코드를 실행하며 확인해 본 결과 아래 코드를 실행하기만 하면 전압이 떨어지는 것을 확인하였습니다.
#include <DynamixelWorkbench.h>
#define BAUDRATE 57600
#define DXL_ID_1 1 // 모터 1 ID
#define DXL_ID_2 2 // 모터 2 ID
DynamixelWorkbench dxl_wb;
const int32_t goal_position_1 = 180; // 1번 모터 목표 각도
const int32_t goal_position_2 = 360; // 2번 모터 목표 각도
const int32_t increment_2 = 20; // 2번 모터 증분 각도 (20도)
const int32_t increment_1 = 20; // 1번 모터 증분 각도 (10도)
void setup()
{
Serial.begin(57600);
const char *log;
bool result = false;
}
void loop()
{
int32_t pos_2 = 0; // 2번 모터의 현재 위치를 선언
for (int32_t pos_1 = 0; pos_1 < goal_position_1; pos_1 += increment_1) {
// 1번 모터를 목표 위치로 설정
dxl_wb.goalPosition(DXL_ID_1, pos_1);
delay(100); // 1번 모터가 이동할 시간을 고려
// 2번 모터가 목표 각도에 도달했는지 확인
if (pos_2 == 0) {
// 2번 모터의 각도를 증가시키기
for (pos_2 = 0; pos_2 < goal_position_2; pos_2 += increment_2) {
// 2번 모터를 목표 위치로 설정
dxl_wb.goalPosition(DXL_ID_2, pos_2);
delay(100); // 2번 모터가 이동할 시간을 고려
}
}
else if (pos_2 > 0) {
// 2번 모터의 각도를 감소시키기
for (pos_2 = goal_position_2; pos_2 > 0; pos_2 -= increment_2) {
// 2번 모터를 목표 위치로 설정
dxl_wb.goalPosition(DXL_ID_2, pos_2);
delay(100); // 2번 모터가 이동할 시간을 고려
}
}
}
// 무한 루프 방지
while (true);
}
코드 내용은 이렇고 이렇게 전압이 떨어진 보드의 경우 Examples/openCR/DynamixelSDK/dxl_monitor 해당 코드를 실행시키면 전압이 다시 12V로 돌아옵니다. 왜 위의 코드를 실행했을 때 문제가 발생하는 걸까요?? 코드는 단순히 두 개의 모터를 순서에 맞게 회전시키는 코드입니다.