모터 > KE-L298N v1.0 - 스텝모터는 왜 열이 심할까?

TODAY1,157 TOTAL2,933,443
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 모터 | KE-L298N강좌 | KE-L298N v1.0 - 스텝모터는 왜 열이 심할까?

페이지 정보

작성자 키트 작성일2017-09-05 14:55 조회1,542회 댓글0건

본문

L298의 이해  [55]

L298 동작원리를 아직 이해하지 못하고 계시는 분은 이 글을 먼저 보세요^^

 

스텝모터는 현재 스텝 상태에서 다음 스텝 상태로 코일에 전류를 흘려주는 것으로 모터의 회전을 유도 합니다.

char m_tbl_2[4] ={0x24,0x50,0x28,0xC0}; // 2상여자
현재 스텝 상태가 첫번째인 0x24라고 해보죠

다음 스텝인 0x50를 출력하면 이동하기 시작합니다.

모터가 이동을 마칠 때까지 스텝 딜레이를 주게 됩니다.

            for(i=0;i<4;i++){ PORTB=m_tbl_2[i]; delay_ms(1); }
이런 식으로 각 스텝을 이동 시키게 됩니다.

2상 제어에서는 각 스텝마다 한개의 코일에 전류가 흐르고 있습니다.

//                           2상      4상     2-4상
#define IN4 PORTB.7 // /B // 0001 // 1001 // 10000011
#define EN2 PORTB.6 //    // 0101 // 1111 // 10111011
#define EN1 PORTB.5 //    // 1010 // 1111 // 11101110
#define IN3 PORTB.4 //  B // 0100 // 0110 // 00111000
#define IN2 PORTB.3 // /A // 0010 // 0011 // 00001110
#define IN1 PORTB.2 //  A // 1000 // 1100 // 11100000
한개의 코일에만 전류가 흐르므로 전류가 가장 적습니다.

 

전류가 흐르지 않는 코일에 이네이블 신호를 주게되면 어떻게 될까요?

INx 신호가 0이라서 코일에 전류가 흐르지는 않을 것처럼 생각 되지만 실제로는 전류가 증가합니다.

브레이크로 작용해서 상전류 흐름을 방해하는 것도 같고...

이 부분은 스텝모터를 잘 아는 분이 설명을 해주시면 감사하겠습니다.^^

 

일반적인 스텝모터는 1.8도 모터이므로 200개의 스텝을 주면 1회전합니다.

모터를 CW 방향으로 1회전 하고 3초 정지 후에 CCW 방향으로 1회전 한 후 10초 멈추는 예제를 만들면

        for(k=0;k<50;k++){ // CW // 4스텝 * 50 = 200스텝 = 1회전 // 200ms
            for(i=0;i<4;i++){ PORTB=m_tbl_2[i]; delay_ms(1); }
        }

        delay_ms(1000); //1초
        for(k=0;k<50;k++){  // CCW // 4스텝 * 50 = 200스텝 = 1회전 // 200ms
            for(i=3;i>=0;i--){ PORTB=m_tbl_4[i]; delay_ms(1); }
        }
        delay_ms(1000); //10초
회전하는 동안에는 각 스텝의 코일에 전류가 흐르는 시간은 1ms이고

m_tbl_2[4] ={0x24,0x50,0x28,0xC0}; // 2상여자
첫번째 딜레이 1초동안에는 m_tbl_2[3] 값이 1초동안 출력 되어서 전류가 흐르고있고

두번째 딜레이 10초동안에는 m_tbl_2[0] 값이 10초동안 출력 되어서 전류가 흐르게 됩니다.

코일에는 끊임없이 전류가 흐르고 있는 것이죠

딜레이 시간에 전류 흐름을 끊으면 열이 그만큼 덜 발생하게 됩니다.

#define EN2 PORTB.6
#define EN1 PORTB.5
이네이블 신호가 PB5,PB6이므로

#define STOP PORTB&=~0x60 // 모터 디저블 

        for(k=0;k<50;k++){ // CW // 4스텝 * 50 = 200스텝 = 1회전 // 200ms
            for(i=0;i<4;i++){ PORTB=m_tbl_2[i]; delay_ms(1); }
        }

        STOP; delay_ms(1000); //1초
        for(k=0;k<50;k++){  // CCW // 4스텝 * 50 = 200스텝 = 1회전 // 200ms
            for(i=3;i>=0;i--){ PORTB=m_tbl_4[i]; delay_ms(1); }
        }
        STOP; delay_ms(1000); //10초 

이처럼 제어하면 전체시간 11.4초 중에서 11초동안 전류를 차단하는 것이니

모터가 정지해있는 동안에는 열이 안나게 됩니다.

댓글 0

조회수 1,542

등록된 댓글이 없습니다.

모터HOME > 모터 > KE-L298N강좌 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기