학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

스텝모터제어(PWM제어)

학습목표

AVR에서 PWM 펄스를 만들어 스텝모터의 속도를 제어한다.

학습주제

 

오토닉스의 스텝모터와 드라이버를 AVR 연결하여 이를 제어한다.

사용기기 : 모터드라이버(오토닉스KR55M), 스텝모터(오토닉스02K-S523)

오른쪽 그림과 같이 Hz duty 값을 가지고 펄스를 발생시켜 모터를 동작 시킨다.

예습내용

타이머1 의한 PWM 펄스 만들기

실습방법

   

아래와 같이 프로젝트를 만든다.

새로운 프로젝트를 만든다.

CPU 선정

통신을 위한 RS232 Rx, Tx 인터럽트를 설정한다.

 

B 포트를 출력으로 설정한다.

Timer1 사용한 PWM 설정한다.

 

 

모터의 회전속도를 제어한다.

 

예제1 hz, duty 펄스의 주기와 듀티비(%) 제어하는 AVR 프로그램

 

 

unsigned int duty,period,hz,duty100;

TCCR1A=0x21;

TCCR1B=0x13;

TCCR1C=0x00;

hz=3000;

duty100=5;

period=(int)(125000/hz);

duty = (int)(period*duty100/100);

OCR1AH = (period>>8);

OCR1AL = period & 0xff; 

OCR1BH = (duty>>8);

OCR1BL = duty & 0xff;

//PORTB.2=1;       //회전방향 설정 0=CCW 1=CW

 

 

CW- 방향은 PORTB.2=1; 한다.

[소스 프로그램 내려받기]

 

 

 

예제2  PC에서 신호 받아 스텝모터 동작 AVR 프로그램  [소스 프로그램 내려받기]

 

 

if(receive==1) {

              if(rx_buffer0[1]==0x30)

                            TCCR1B=0x15;      // 1024분주

                             else if(rx_buffer0[1]==0x31)

                                          TCCR1B=0x14;      // 256분주  

                             else if(rx_buffer0[1]==0x32)

                                           TCCR1B=0x13;      // 64분주

                             else if(rx_buffer0[1]==0x33)

                                           TCCR1B=0x12;      // 8분주

                                          

                             OCR1AH = rx_buffer0[2];

                             OCR1AL = rx_buffer0[3]; 

                             OCR1BH = rx_buffer0[4];

                             OCR1BL = rx_buffer0[5]; 

                                          

                             if(rx_buffer0[6]==0x30)

                                           PORTB.2=1;         //회전방향 설정 0=CCW 1=CW

                             else if(rx_buffer0[6]==0x31)

                                           TCCR1B=0x10;

                             else if(rx_buffer0[6]==0x32)

                                           PORTB.2=0;         //회전방향 설정 0=CCW 1=CW

                                                        

                             receive=0;

 }

 

 

PC 프로그램 [소스 프로그램 내려받기]

 

처음

   

원하는 각도만큼 회전하는 노브를 하나 추가한다.

PC프로그램에 [각도] 노브를 하나 추가하고 노브를 움직임에 따라 스텝모터가 회전하도록 한다.

[힌트] rx_buffer0[1]=0x34 때는 각도에 의해 회전하도록한다.

rx_buffer0[2]에는 회전각의 데이터로 사용한다. 데이터는 8비트(1~255) 이므로 프로그램을 쉽게 하기위해서 0~255 까지만 회전하도록 하자. rx_buffer0[3], rx_buffer0[4], rx_buffer0[5] 사용하지 않고 나머지 데이터는 그대로 사용한다.

AVR 프로그램도 저번 주의 프로그램을 참조하여 프로그램을 수정한다.