본문 바로가기

[ROBOT]/Robot

[RobotController] 스텝모터 제어 - 10cm 이동 하기

[RobotController] 스텝모터 제어 - 10cm 이동 하기





스텝모터를 이용하여 원하는 거리(cm)단위로 이동하기위해 먼저 1cm이동하기 위한 펄스수를 알아 보면 아래와 같다.

[Robot Controller]에서 제공되는 스텝모터는 1펄스 출력시 0.9도 회전하는 모터 이다.

바퀴가 1회전(360도) 하려면

    1pulse : 0.9도 = Xpulse : 360도

    X = 400pulse

400펄스가 필요 합니다.


반지름  r = 2.6cm인 바퀴의  원주 길이는 2π x r = 16.3cm이고

1cm이동하기 위한 펄스의 수는

    400pulse : 16.3cm = Xpulse : 1cm

    X = 24.53pulse


따라서 1cm이동하기 위해 24~25개의 펄스가 출력되면 된다.


원하는 거리(cm)로 이동하기 위한 함수 RobotMoveTo()를 아래와 같이 작성하면 응용프로그램에 편리하게 사용할 수 있다.


void RobotMoveTo(unsigned char Status, unsigned char Distance)
{
 switch(Status)
 {
  case ROBOT_FORWARD:
   //스텝모터 방향 설정 -> 로봇 전진
   StmSetDir(STEP_LEFT, DIR_CCW);
   StmSetDir(STEP_RIGHT, DIR_CW);  
   break;
 
  case ROBOT_BACKWARD:
   //스텝모터 방향 설정 -> 로봇 후진   
   StmSetDir(STEP_LEFT, DIR_CW);
   StmSetDir(STEP_RIGHT, DIR_CCW);
   break;
 }

 //스텝모터 1cm구동 펄스수(25펄스)로 Distance cm구동
 StmRunVol(STEP_LEFT+STEP_RIGHT, 25*Distance);  
}


스텝모터를 이용한 [Robot Controller] 10cm이동 동영상

반응형