CAFE

한국직업능력교육원

[Arduino 실습 38] 스탭핑 모터 1상, 2상, 1-2상 돌려보기(17PM시리즈 모터 적용)

작성자송명규|작성시간26.06.23|조회수34 목록 댓글 0

이제 스탭핑 모터 2단계로 제가 나눠드린 큰 모터 17PM시리즈 모터로 1상여자, 2상여자, 1-2상여자 스컨스를 만든 후에 

호출하여 스탭모터를 돌려보도록 하겠습니다.

 

스탭모터 단계

1단계 

      ==  Arduino API 사용 ==  Arduino Kit 제공 스탭모터 사용 =

      ==  udl2003 모터 드라이버 사용 = 유니폴라 구동방식

2단계

      ==   1상, 2상, 1-2상 상여자 스컨스 제작  ==  My Lib 사용  = 제가 드린 모터 사용 = 실전실무

      = L298 모터드라이브 = 바이폴라 구동방식

3단계

       ==  마이크로 스탭 적용  ==  My Lib 사용 =  제가 드린 모터 사용 = 실전실무  =

       ==  A4988 모터드라이브 사용  = 바이폴라 구동방식(부체꼴 초퍼방식)

       == 풀 스탭, 하프스탭도 지원, ==  상 여자신호 안 만들고 단순 펄스수만 계싼하여 제어하면 됨

 

 

st_motor.h

// 2026, 06, 23 AIOT 10기

#ifndef __ST_Motor__

#define __ ST_Motor__

 

// Pin

#define A  8  //1

#define B  9  //2

#define A_ 10 //4

#define B_ 11 //8

 

#define CW  1

#define CCW 2

 

#define PH_1   1

#define PH_2   2

#define PH_1_2 3

 

char mode = 1; // 1: 1상여자, 2: 2상여자, 3: 1-2상여자

char *p;

 

int delay_Time = 2;

 

// 1상여자

const char st_1ph_cw[] = {0x01, 0x02, 0x04, 0x08};

const char st_1ph_ccw[] = {0x08, 0x04, 0x02, 0x01};

 

// 2상여자

const char st_2ph_cw[] ={0x03, 0x06, 0x0c, 0x09};

const char st_2ph_ccw[] ={0x09, 0x0c, 0x06, 0x03};

 

// 1-2상 여자 = 1상 + 2상 여자를 합친것

//                           1상,  2상,  1상,   2상,  1상,  2상,  1상,   2상

const char st_1_2ph_cw[] = {0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x09};

const char st_1_2ph_ccw[] ={0x09, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x01};

 

void st_motor(char mode, char dir)

{

  if(mode == PH_1_2)

  {

    // 1-2상 여자방식 = 0.9도 = 400pulse

    if(dir == CW) p = st_1_2ph_cw;

    else p = st_1_2ph_ccw;

 

    for(int k = 0; k <= 50; k++)

    {

      for(int i = 0; i <= 7; i++)

      {

        PORTB = p[i];

        delay(delay_Time);

      }

    }    

  }

  else

  {

    // 1상, 2상여자방식 = 1.8도 = 200 pulse

    if((mode == PH_1) && (dir == CW)) p = st_1ph_cw;

    else if((mode == PH_1) && (dir == CCW)) p = st_1ph_ccw;

    else if((mode == PH_2) && (dir == CW)) p = st_2ph_cw;

    else if((mode == PH_2) && (dir == CCW)) p = st_2ph_ccw;

   

    for(int k = 0; k <= 50; k++)

    {

     for(int i = 0; i <= 3; i++)

     {

      PORTB = p[i];

      delay(delay_Time);

     }

    }    

  }

}




#endif

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼