이번에 구매한  모터 드라이버 연결해보려고 하는데 흐음.. 안터지겠지?

일단 모터는 아래의 스펙인데.. A상 B상은 그냥 대충 잡아 찍으면되나?

BLK A+

GRN A-

RED B+

BLU B- 로 일단 간주하고 ㄱㄱ. 안되면 서로 A/B바꾸면 되겠지 머 ㅋㅋ(아니면 반대로 돌거나)

 

2025.11.28 - [하드웨어/모터(motor)] - 스텝 모터 2상 4상

 

[링크 : https://blog.naver.com/roboholic84/222406097514]

 

+

ENA- ENA+ 에 연결하면 소비전류가 9 V 0.018 A 인데 연결하지 않으면 9 V 0.670 A를 먹고 홀딩 토크가 발생한다.

부논리인가??? 아무튼 alarm은 왜 불이 들어오느지도 모르겠고 멘붕모드..

 

[링크 : https://www.youtube.com/watch?v=OUE1JajuYGw]

 

 

내가 가진 건 유니폴라인가.. 일단 결선이 좀 다른 것 같으니 고민..

그런데.. 어짜피 black - green 묶으면 똑같지 않나?

[링크 : https://m.blog.naver.com/simonsayz/120123367852]

 

+

웃긴게(?)

0.5A로 하면 작동하고

1.0A로 하면 못돌고 떨기만 한다 -_-??

 

전류 설정 주의
스펙표의 0.95A/phase는 센터탭을 사용하는 유니폴라(하프코일) 기준값입니다. 지금처럼 센터탭을 빼고 풀코일로 쓰는 바이폴라 방식에서는 저항이 2배가 되므로, 같은 전류를 흘리면 발열이 2배가 되어 위험합니다. 일반적인 변환 공식(÷1.4)을 적용하면:

권장 전류 ≈ 0.95A ÷ 1.4 ≈ 0.7A

TB6600 DIP 스위치를 0.7A 근처로 맞추고, 너무 뜨거워지지 않는 선에서 서서히 조정해보세요. 만약 이렇게 정확히 배선했는데도 진동만 한다면, 이전 답변의 5단계처럼 A+/A-(흑/녹) 극성만 한 번 바꿔서 테스트해보시면 됩니다.

[링크 : https://claude.ai/share/37d30687-5cae-4547-8407-a48977073755]

 

속도는 아직 제어 못하고 있고 방향은 되는것 같은데..

일단 ENA는 확실히 부논리인것 같고(high로 인가되면 전원이 안들어감)

나머지도 그럼 같으니까.. 펄스를 반대로 줘야하나?

SET(high) - dir / CW

 

스텝은 pulse/rev 값을 따르면 된다.

 12Mhz 에서 딜레이 없이 하면 작동안하는걸 봐서는 최소 펄스가 있는것 같은데..

1.2us~2.5us 정도라고 한다.

[링크 : https://easyelecmodule.com/tb6600-stepper-motor-driver-tutorial/]

 

usec 딜레이 만들어서 하면 더 좋았을테지만

귀찮아서 -ㅁ- 일단 실험적으로 200 넣으면 못 돌고 250은 나름 빠르게 돌아서 일단 만족

 

신호선의 + 에 연결하고 -에는 GND 연결해줌

PB12 - EN

PB13 - DIR

PB14 - PULSE

RED A+

BLU A- 

BLK B+

GRN B-

 

void init_tb6600()
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); // EN HIGH
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET); // DIR HIGH
}

int val = 0;
void gpio_proc()
{
  int uslp = 250;
  int cnt = 800 * 5;
  sprintf((char*)usb_buf, "EN:RST DIR:RST %d pulse\r\n", cnt);
  CDC_Transmit_FS(usb_buf, BUF_SIZE);
  memset(usb_buf,0,BUF_SIZE);
  count++;

  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
  for(int idx = 0; idx < cnt; idx++)
  {
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
      for(volatile int usec = 0; usec < uslp ; usec++);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
  }
  HAL_Delay(2000);

  sprintf((char*)usb_buf, "EN:RST DIR:SET %d pulse\r\n", cnt);
  CDC_Transmit_FS(usb_buf, BUF_SIZE);
  memset(usb_buf,0,BUF_SIZE);
  count++;

  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); // EN HIGH
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); // DIR LOW
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
  for(int idx = 0; idx < cnt ; idx++)
  {
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
      for(volatile int usec = 0; usec < uslp ; usec++);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
  }
  HAL_Delay(2000);
}

'하드웨어 > 모터(motor)' 카테고리의 다른 글

모터 드라이버 TB6600 분해  (0) 2026.09.03
스테핑 모터와 컨트롤러  (0) 2026.08.31
진공펌프  (0) 2026.07.03
하모닉 드라이브, 사이클로이드 드라이브  (0) 2026.01.13
스텝 모터 2상 4상  (0) 2025.11.28
Posted by 구차니