스텝모터를 이용하여 원하는 거리(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이동 동영상