스텝모터 드라이버 NT-BST2406 사용기
안녕하세요. 바이폴라 스테핑모터를 컨트롤할 수 있는 드라이버에 대해 소개하고자 합니다.
저희 회사에서 개발한 스테핑모터는 여러 종류가 있는데요 차이점은 얼마만큼의 용량을가진 모터를 구동시키느냐의 차이일 뿐 구동방식은 똑같습니다.
그중 오늘은 가장 최근에 출시된 제품인 NT-BST2406을 파헤쳐 보겠습니다.
NT-BST2406
Bipolar MicroStepping Drive 라는 뜻을 가지고있는 이 모터드라이버는 2상 바이폴라 PWM정전류 쵸퍼 방식으로 구동됩니다.
모터드라이버의 자세한 스펙 및 설정법은 아래 링크에 접속하시면 메뉴얼을 받을수 있습니다.
메뉴얼에 나와있는 입력전압으로 보아하니 어느정도 덩치가 나가는 모터도 구동시킬수 있을 것 같은 느낌이 들것입니다. 그래서 이번 구동을 위해 선택한 모터! 바로 FL110STH99-5504B 라는 110각 2상 스테핑 모터입니다.!! 아래 사진에서 보듯 어마어마한 크기를 가지고 있는 스테핑모터입니다.(사진에서 알 수 있듯 크기만큼이나 무게도 장난이 아니라는…..) 먼저 모터구동에 앞서 모터드라이버의 외형 및 각 부분의 기능을 살펴보도록 하겠습니다. 아래는 NT-BST2406의 제품의 외형 사진입니다. 설명을 위해 사진에 번호를 매겨봤습니다. 먼저 그림에서 보이는 1번은 전원 입력커넥터로써 전원입력장치로부터 18V~40V의 +,-전원을 입력시켜 주는 부분이고, 계속해서 3번은 기능설정 딥 스위치로써 Micro Step설정 및 Current Auto Save설정 과 SR(Synchronous Rectification)설정 그리고 Current Decay설정을 할 수 있는 스위치입니다. 아래 그림을 보면 이해가 편하실겁니다. 저는 구동을 위해 모든스위치를 OFF시킨 모드로 설정을 하였습니다. 그리고 바로 옆에보이는 4번 가변저항의 용도는 전류 설정용 가변저항으로 스테핑모터의 입력전류에 맞게 설정(2A~6A)할 수 있습니다. 이 때 주의해야 할 점은!! 허용전류보다 높게 설정할 경우 모터가 진동 또는 탈조할 수 있으므로 모터사양에 맞게 적절한 전류를 설정하여야 한다는 점입니다!! 마지막 5번커넥터는 SIGNAL 입력 커넥터로써 모터의 진행방향(DIRECTION), Enable/Disable, 그리고 Clock신호를 입력하는 부분입니다. 각 입력신호의 +부분은 5V레벨 전원에 연결하고, -부분은 오픈 콜렉터 신호를 연결합니다. 이제 NT-BST2406의 이론적 지식을 간단하게나마 습득하였으니 본격적으로 구동을 시켜보겠습니다. 구동을 위한 저만의 만능기판 NT-A64-BOARD입니다 …^^ MCU는 ATMEGA16을 사용중이며 AVR stdio4를 사용하여 소스작성을 하였습니다. 구동이 목적이기에 약간 너저분한점은….이해해주시리라 생각합니다 ^^ 어쨋든 ! 아래 첨부한 간단한 구동프로그램 작성 후 26V의 전원을 넣고 구동을 시켜본 결과 !! 파형은 아주 잘~~나옵니다. 물론 구동도 잘~~됩니다 /*========= Include =========*/ #include<avr/io.h> volatile unsigned char data; DDRA=0xF0; sei(); return 0; ISR(ADC_vect) 나름 설명한다고 노력하였으나 아직 글쓰기실력이 아직 많이 부족하다고 생각합니다. 그래도 앞으로 점점 발전해 나갈 것을 약속드리며 바이폴라 스테핑모터구동을 위한 드라이버로써 NT-BST2406 을 적극 추천해드리며 마치겠습니다. ^.^
(모터의 자세한 스펙은 디바이스마트 홈페이지에서 확인하시길 바랍니다…^^;;)
2번은 모터 출력 커넥터로써 각각의 스테핑모터의 데이터시트를 참고하여 A상과 B상을 각각 알맞게 연결해주면 되겠습니다.
DIR(DIRECTION)신호는 LOW level일 경우 정방향, HIGH level일 경우 역방향으로 회전합니다.
ENA(Enable)신호는 LOW level일 경우 모터드라이버가 Enable되고, HIGH level일 경우 Disable이 되어 동작하지 않습니다.
모든신호의 (+)단자는 +5V에 연결하였고
DIR의(-)와 초록색스위치는 PORTB.2에 연결하여 버튼을 눌렀다 떼었다를 하며 모터의 진행방향이 바뀌도록 설정하였고,
ENA의(-)와 빨간색스위치는 PORTD.3에 연결하여 Enable/Disable을 선택하도록 설정하였으며,
ADC변환을 통해 CLK신호를 조절하여 모터의 속도제어를 위해 가변저항과 CLK(-)신호는 PORTB.3(OCR0)에 연결하였습니다.간단한 예제소스
#include<util/delay.h>
#include<avr/interrupt.h>
//////////MAIN/////////////
int main(void)
{
DDRB = 0xFB;//PORTB를 출력으로 설정.
TCCR0 = 0b00011010; //CTC 모드, OC0셋,clk분주비 8
ADMUX = 0b00100000; //AREF 에 입력 되는 외부 전압 사용, ADC 데이터 우측 정렬, PIN ADC0 (PA0) 아날로그 입력,ADCH 상위부터 8비트 사용.
ADCSRA = 0b11101111; //ADC Enable, Free Running Mode, ADC Interrupt Enable, 128 분주
while(1)
{
OCR0=data;
}
}
{
data = (int)ADCH+((int)ADCL<<8); //ADC 데이터 저장
}