[ROBOT]/LegoRobot2005. 11. 9. 23:15

항만물류 실뮬레이션 - 크레인 테스트

항만물류 실뮬레이션 - 크레인 테스트












Posted by nexp

댓글을 달아 주세요

[MODULE]/MOTOR2005. 8. 16. 12:53

스텝모터 컨트롤러 + 드라이버 보드 제작

스텝모터 컨트롤러 + 드라이버 보드 제작

사용자 삽입 이미지


로봇 컨트롤러 보드에 사용될 스탭모터 컨트롤러 및 드라이버 보드를 제작했다.



2채널 스텝모터 드라이버(SLA7024)가 있고, 컨트롤러가 포함되어 있어 메인 CPU의 부하를 덜어 줄 수 있다.
Posted by nexp

댓글을 달아 주세요

[ROBOT]/Robot2005. 6. 3. 12:48

[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이동 동영상

Posted by nexp

댓글을 달아 주세요

[ROBOT]/Robot2005. 6. 2. 22:30

[RobotController] 스텝모터 가감속 제어 테스트 (AVR Robot Controller)

[RobotController] 스텝모터 가감속 제어 테스트 (AVR Robot Controller)

StepMotor Body(http://nexp.tistory.com/171) 조립후 스텝모터 가감속 제어 테스트를 했다.
스텝모터 가감속 테이블은 [스텝모터 가감속 테이블 생성기]를 이용했다.







스텝모터의 회전 속도는 스위칭 펄스의 주파수에 따라 결정되며 그림과 같은 특성을 가진다. 기동시 탈출 토크이상의 주파수로 구동하면 탈조가 된다. 따라서 기동시 낮은 주파수로 기동하여 점점 가속하여 정속 운전하고 정지시 점점 낮은 주파수로 기동하여 부드럽게 정지하는 가감속 구동법을 사용해야 한다. 로봇의 스텝모터는 기본적으로 가감속 구동을 하며 StmSetAcc()함수를 이용하여 기본 가감속, 등속, 사용자 정의 가감속을 설정할 수 있다. StmRun()함수는 스텝모터를 가감속 구동 방법으로 구동 하도록 한다.

엑셀을 이용하여 작성한 스텝모터 저속가감속 테이블 및 고속가감속 테이블의 그래프



소스코드



 

//=============================================================================

// Ez-RoboMaster Test Program - Step Test

//

// by nexp76@naver.com
// [.c]

//=============================================================================

/*

 - 사용자 정의 가감속 테이블 이용

 - 스위치1을 누르면 스텝모터를

 - 저속의 가감속 테이블을 이용하여 1000펄스동안 전진/후진 하고

 - 고속의 가감속 테이블을 이용하여 1000펄스동안 전진/후진 하고

*/

//Lib file head 추가

#include "c:\winavr\ezrobomaster\ezrmlib.h"

#include "step_table1.h"

#include "step_table2.h"

//이동할 거리 설정

#define DIST_MOVE                 3000

#define ROBOT_FORWARD           1

#define ROBOT_BACKWARD          2

void RobotMoveTo(unsigned char Status, unsigned int Distance);

void main(void)

{

        char flag = 0;

       

        //로보마스터 초기화

        SysInit();

        //스텝모터 초기화

        StmInit();

        //스텝모터의 최고 값 설정

        StmSetSpd(STEP_LEFT+STEP_RIGHT, 1160);

        StmSetAcc(STEP_LEFT+STEP_RIGHT, ACC_USER);

       

        LcdDspStr(0,0, "StepTest");

        LcdDspStr(0,1, "Press-SW1");

        while(1)

        {

                //스위치1이 눌러 지면..

                if(Sw1GetStat())

                {

                        //로봇 구동

                        flag = TRUE;

               

                        Delay(300);

                }

                if(flag)

                {                      

                        //저속 가감속 테이블 설정

                        StmSetAccTbl(m_TimeTable1, 500);

                        //로봇 구동 - 전진

                        RobotMoveTo(ROBOT_FORWARD, DIST_MOVE);

                        RobotMoveTo(ROBOT_BACKWARD, DIST_MOVE);

                        BzrTemp(100);

                       

                        //고속 가감속 테이블 설정

                        StmSetAccTbl(m_TimeTable2, 500);

                        //로봇 구동 - 후진

                        RobotMoveTo(ROBOT_FORWARD, DIST_MOVE);

                        RobotMoveTo(ROBOT_BACKWARD, DIST_MOVE);

                        BzrTemp(100);

                       

                        flag = FALSE;                    

                }       

        }

       

        return 0;

}

void RobotMoveTo(unsigned char Status, unsigned int 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;

        }

        StmRunOutVol(STEP_LEFT+STEP_RIGHT, Distance );                      

}


 
Posted by nexp

댓글을 달아 주세요

  1. 박동천

    관리자의 승인을 기다리고 있는 댓글입니다

    2012.02.15 12:20 [ ADDR : EDIT/ DEL : REPLY ]

[ROBOT]/Robot2005. 6. 1. 21:08

[RobotController]용 레고 스텝모터 바디

[RobotController]용 레고 스텝모터 바디

레고를 이용하면 임베디 로봇 컨크롤러 (http://nexp.tistory.com/135) 를 이용하여 스텝모터 로봇바디를 쉽게 제작 할 수 있다.

정말 심플하고 저렴한 가격으로 로봇 바디를 제작 해 보았다.
임베디 로봇 컨크롤러는 2개의 스텝모터 컨트롤 및 드라이버를 제공하고 API함수까지 제공하므로 간단한 로봇 제작에 편리하게 사용될 수 있다.
->AVR Robot Controller를 이용한  스텝모터 테스트 동영상











Posted by nexp

댓글을 달아 주세요