모터는 일반적으로 그냥 전압의 크기에 따라 돌아가는 dc 모터,
그리고 각도가 제어가능한 rc서보모터는 아마도 그냥 쉽게 사용할 수 있을 겁니다.
스테핑모터를 제어하면 이제 또 다시 제어의 수준이 한단계 더 올라간다는 것을
알게 될 겁니다.
스텝모터는 특이하게 펄스를 주어 신호에 따라 모터의 회전이 가능 합니다.
어렵게 생각하면 제어하기 힘들어지니 그냥 이렇게 생각하면 좋을 것 같습니다.
한번의 신호(1과0 , 한번 주게 되는 짧은 신호)를 흘리면 모터는 1.8도 돌아간다.
모든 스테핑모터가 그렇게 되어 있는 건 아니지만 일반적으로 한번의 신호를 주면1.8도가
회전하고 한번이 아니라 100번의 신호를 (1과0을) 반복해서 100번 주게 되면
모터는 당연히 1.8도가 100번, 즉 180도(반바퀴) 회전할 수 있다.
이렇게 정의 할 수 있겠죠.
즉 180도가 아니라 360도를 회전시킬려면 그럼 모터에 신호를 몇 번 주면
될까요.
계산을 해보면 360/1.8 = 200
200번의 신호를 주면 모터는 360도 회전시킬 수 있습니다.
한마디로 스테핑 모터는 한번의 특정신호를 만들어 두면
신호에 따라 특정 각도까지만 회전하는 모터라고 이해하면 됩니다.
원하는 회전 각도를 정확히 계산할 수 있도록 만들어진 모터라고 생각하면
이해하기 편하죠.
그런데 이런 점도 있습니다. 신호를 보낼 때 주게 되는 신호의 시간
이것을 주기와 연관을 짓게 됩니다. 1,0으로 신호를 만들어서 보낼 때
이때의 신호의 길고 짧음에 따라 모터의 회전속도도 정해지게 된다는 점
우리는 이것을 흔히 PWM이라고 부릅니다. 어려운 용어가 하나 나왔는데..
이것은 실제 서보모터에서 개념적인 것은 이해했기 때문에 다시 설명을 드립니다.
PWM은 Pulse Width Modulation의 약자로 높은 전압 값(5V)와 낮은 전압 값(0V)를
비율로 설정해 전압의 비율에 따라 제어를 하게 되는 방식을 이야기 합니다.
보다 자세한 내용은 다음의 사이트에 내용이 잘 나와 있어 PWM을 이해하시면 되겠습니다.
https://opentutorials.org/module/2106/12246
스테핑 모터의 실제 구조를 한번 이해해 볼까요?
스테핑모터의 주축은 다음과 같이 생겨서 톱니 형태로 이루어져 있습니다.
톱니형태로 생겼기 때문에 모터가 1.8도라는 각도를 만들어 낼 수 있다고
보면 되겠습니다.
외부에는 8개의 코일로 감겨져 있어 코일의 전기가 흐르는 순서에 따라서
스테핑모터를 회전 시키게 된다고 이해하면됩니다.
각 코일마다 실제로 감겨 있는 상태는 A,/A,B,/B
다음과 같은 형태로 선이 순차적으로 감기게 됩니다.
스테핑 모터의 전류는 순차적으로 흘려야 된다고 했죠.
다음과 같은 순서로 A, B , /A, /B 순으로 전류를 구동하게 됩니다.
물론 이렇게 전류를 흘리는 방식 외에 다르게 전류를 줄 수도 있지만
보편적인 방법을 이용해서 전류를 구동하게 됩니다.
일반적으로 다음과 같이 전류를 순차적으로 발생시키는 드라이버가
존재를 하는데요. 그런 장치로 스테핑 모터 콘트롤러를 사용하기도합니다.
그리고 순차적으로 모터신호를 아두이노 또는 제어기를 이용해 신호를
발생시키기도 합니다. 발생시킨 신호는 전류 증폭기를 통해 모터를
회전시키기도 합니다.
처음 스테핑모터를 구동하실 때 어려운 점이 많으실 수 있으니
조심해서 제어하시기 바랍니다.
그럼 우리가 보편적인 방법으로 아두이노 예제를 참고해서
스테핑 모터를 돌려보도록 하겠습니다.
가지고 있는 스테핑 모터가 선이 4개인지 6개인지 파악하셔야 합니다.
아니면 구매하실 때 어떤 모터를 선택할지 고민 하셔야 됩니다.
보통은 4선을 이용하는 것이 쉬울 수 있습니다.
전원이 따로 입력되지 않아도 되니 4선이 편리할 수 있고,
상황에 따라 6선의 경우 공통 단자가 2개가 더 있으니 참고 하셔야 됩니다.
스테핑모터의 4선과 6선에 관한 정보는 게시글에 더 적어 두도록 하겠습니다.
http://www.ntrexgo.com/archives/21591
이제 스테핑모터를 돌리기 위해 예제파일을 열도록 하겠습니다.
파일 탭 => 예제 => stepper => stepper_oneRevolution을 클릭
열게 되면 다음과 같은 프로그램 코드가 열릴 것 입니다.
#include
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
myStepper.setSpeed(60);
Serial.begin(9600);
}
void loop() {
Serial.println(“clockwise”);
myStepper.step(stepsPerRevolution);
delay(500);
Serial.println(“counterclockwise”);
myStepper.step(-stepsPerRevolution);
delay(500);
}
이제 어느 정도 배워와서 개념은 알지만 또 새로운 것에 대해 이해를
해야 겠죠.
#include <== 이건 스테핑모터를 사용하기위한 프로그램이
설정된 곳이죠. 흔히들 헤더파일이라고 정의 하는데요. 스테핑모터에 대한
해더파일이라고 이해하십시오.
이것을 사용함으로써 myStepper <=이런 명령어를 활용할 수 있게 됩니다.
그리고 const int stepsPerRevolution = 200; 변수 stepsPerRevolution여기에
값을 200회 넣는 다는 말은 딱 봤을 때 1.8도의 모터를 360도 까지 회전시길 값을
넣어 놓은 거라고 볼 수 있습니다.
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); 여기의 뒤편을 유의해야 되는데요.
Stepper myStepper() <== 여기 안에 200회의 회전이 가능한 형태로 정의 학고
그리고 8~11번까지의 아두이노 핀을 A,/A,B,/B 형태로 선이 4개 사용되도록 만든다는 점도
이해가 되죠.
void setup에는 모터의 속도와 시리얼데이터를 출력하기 위해 정의를 했구요.
void loop의 내용을 보면 이전에 없었던 내용인 myStepper.step(stepsPerRevolution);
다음과 같은 명령어가 나옵니다. myStepper.step(200);
다음과 같이 200번의 각도가 입력되니 모터는 1바퀴 회전하게 될 것입니다.
그리고 myStepper.step(-stepsPerRevolution);
다음과 같이 –값을 입력 할때는 모터가 반대방향으로 회전되도록 만들어 지내요.
참 편하게 만들어졌네요.
저는 모터의 출력을 다음과 같이 L298 드라이버를 이용해 사용했는데요.
L298 드라이버가 아니더라도, 특정 드라이버의 단자에 입력하는
A,/A,B,/B 형태로 아두이노의 입력단자를 8~11번으로 맞추고
출력되는 모터를 스테핑모터에 맞추면 어려움 없이 동작 시킬 수 있을 것입니다.
만약 스테핑모터의 결선이 헷갈리시면 질문하시면 답을 드릴 수 있도록 하겠습니다.
연결된 스테핑 모터는 다음과 같이 실험 하였습니다.
Stepper Motor
작성자: 유은재 (CJ)
작성일: 2018.9.27
1. 스텝 모터의 특징
1) 브러시(Brushless)가 없다. 스텝 모터는 DC 모터와는 달리 브러시(Brush)가 없다. 따라서 흔히 브러시가 부착된 모터에서 발생하는 소음, 전기적 아크 발생, 짧은 수명 등의 단점을 극복할 수 있다는 장점을 갖고 있다.
2) 부하와 독립적이다. 스텝 모터는 부하가 모터의 정격 토크를 초과하지 않는 범위 내에서 모터에 인가되는 부하의 양과 상관없이 설정 속도로 일정하게 회전할 수 있다.
3) 오픈루프 제어가 가능하다. 스텝 모터는 일정한 변위 즉, 스텝(Step)으로 움직인다. 따라서 스텝 모터는 토크 스펙 범위 내에서 동작하는 한 별도의 센서 즉, 피드백(Feedback) 장치 없이 그 위치를 알 수 있다.
4) 홀딩토크(Holding Torque) 특성을 갖는다. 스텝 모터는 특정 위치에서 모터의 회전축을 움직이지 않고 정지하게 할 수 있는 홀딩토크(Holding Torque)를 가지고 있어서, 별도의 기계적인 브레이크 장치가 필요하지 않다.
5)뛰어난 응답특성을 갖는다. 스텝 모터는 모터의 기동(Start-Up), 정지, 역회전을 위한 뛰어난 응답특성을 발휘할 수 있다.
6) 저속에서 DC모터보다 상대적으로 토크 특성이 좋다. 스텝 모터는 낮은 속도로 회전 시에도 DC모터 대비 상대적으로 높은 토크를 발휘할 수 있다.
2. 스텝 모터 종류별 특성 비교
영구자석 스텝모터 가변 릴럭턴스 스텝모터 하이브리드 스텝모터 비용 낮음 중간 높음 설계성 보통 간단 복잡 정밀도 1스텝 당 3~30˚ 1스텝 당 1.8˚ 이하 토크vs속도 – 고속에서 낮은 토크손실 – 소음 낮음 높음 낮음 구동 방법 Full, Half, Micro-stepping Full Step Full, Half, Micro-stepping
3. 스텝 모터의 구동
3.1 바이폴라(Bipolar)와 유니폴라(Unipolar)의 이해
스텝모터의 고정자 측에 감겨져 있는 코일. 즉, 모터 권선의 외부로 인출된 리드선이 모터 제어를 위한 신호 라인이 되며 유형에 따라 바이폴라(Bipolar, 양극성)와 유니폴라(Unipolar, 단극성) 스텝모터로 구분할 수 있다.
바이폴라(Bipolar) 유니폴라(Unipolar)
바이폴라 스텝 모터는 고정자에 감겨진 코일의 각 끝단에 리드선이 연결되어 있기 때문에 리드선 즉, 모터의 외부로 유출된 신호 선은 4선인 경우가 많다.
바이폴라 스텝 모터의 가장 큰 특징은 코일에 연결된 리드선 1-2 및 3-4 를 통해 전류의 양방향 흐름이 가능하며, 유입된 전류는 모터 권선의 전체를 흐르게 되는 점이 특징이다.
“바이폴라(Bipolar, 양극성)”라는 이름은 이와 같은 전류의 양방향 특성으로 인해 붙여졌다고 볼 수 있다. 유니폴라 스텝 모터는 바이폴라 스텝 모터의 리드선 4개 외에도 각각의 코일 권선의 중간에 추가적인 리드선이 각각 인출되어있다.
즉, 2개의 센터 탭(Center Tap)이 추가되어 일반적으로 총 6선의 리드선이 모터의 외부로 유출되어 있다. 이들 2개의 센터 탭에는 스텝 모터의 구동 전압원(Supply Voltage)이 공급된다. 또한 나머지 각 코일의 끝단 4개는 상황에 따라 순차적으로 그라운드(Groud)로 연결하게 된다. 따라서 유니폴라 스텝모터의 경우 전류 방향은 센터 탭(3, 6번)에서 리드선(1, 2, 4, 5번)을 통해서 단방향으로만 흐르게 된다.
또한 바이폴라 스텝모터와는 달리 유니폴라 스텝 모터의 전류는 코일권선의 절반(1/2 구간)만을 통과하게 된다. 따라서 “유니폴라(Unipolar, 단극성)”라는 이름은 전류가 한쪽 방향으로만 흐르게 되는 특성으로 인해 붙여졌다고 볼 수 있다.
유니폴라 스텝 모터의 신호 선은 5개 또는 6개가 모터의 외부로 유출되어 있는데 그 구분은 센터 탭에 연결된 리드선이 서로 공통으로 묶여서 인출될 경우는 5개가 되며, 각각 인출될 경우는 6개가 된다고 볼 수 있다.
유니폴라와 바이폴라는 구동 방법 및 모터 스펙, 구동 회로 등에 있어서 상호 차이점이 있지만 여기에서는 굳이 언급하지 않겠다.
3.2 스텝 모터의 제어
스텝 모터의 회전각도 즉, 스텝 각도(Step Angle)는 한 번의 스텝에 의해 회전자가 회전(이동)한 각도로 정의하며 그 제어 방식은 풀 스텝(Full Step), 하프 스텝(Half Step), 마이크로스텝(Micro Step)과 같이 크게 3가지로 구분할 수 있다.
또한 각각의 스텝을 변화시키는 시간 즉, 주기에 따라서 회전 속도 즉, RPM(Revolution Per Minute)가 결정되며, 회전자가 1회전하기 위해 필요한 총 스텝과 여기에 소요된 시간을 이용해서 계산할 수가 있다.
3.2.1 풀-스텝핑 (Full Stepping)
스텝핑 모터의 풀-스테핑 구동 방식은 회전자가 고정자의 특정 상(Phase)에서 다음 상으로 완전히(Fully) 회전(이동)하도록 하는 방식의 스텝핑 기술을 말한다.
풀-스텝핑 방법에는 회전자 권선의 전류 통전 방식에 따라서 1상 통전 방식과 2상 통전 방식 또는 1상 여자 방식과 2상 여자 방식으로 구분하여 부르기도 한다.
3.2.2 하프-스텝핑 (Half Stepping)
스텝핑 모터의 하프 스테핑 구동 방식은 회전자가 고정자의 특정 상(Phase)에서 다음 상으로 이동시 풀-스텝 각도의 1/2(Half) 각도만 회전(이동)하도록 하는 스텝핑 기술을 말하며, 회전자는 45˚ 회전하게 된다. 따라서 하프 스테 핑 구동 방식은 스텝 각도가 풀 스테핑 구동 방식에 비해 1/2 로 감소하기 때문에 스텝해상도(Step Resolution)가 2배 좋아진다고 말할 수 있다. 즉, 회전 각도의 정밀 제어에 유리하고 회전자의 회전특성이 상대적으로 유연해질 수 있다.
하프 스테핑은 1상 및 2상 여자방식의 혼합형으로 구성된 구동 펄스의 특성 때문에 1-2상 통전(여자) 방식이라 부르기도 한다.
3.2.2 마이크로 스테핑(Micro Stepping)
스텝 모터의 구동 방법을 보다 정밀하게 제어하기 위한 방법으로 사용되는 마이크로 스텝핑은 풀-스텝에 해당하는 회전 각도를 다수의 서브 스텝으로 나누어 제어하는 방식이라 볼 수 있다.
즉, 풀-스텝 각도가 90˚인 경우 이를 1/4, 1/8, 1/16, 1/32등과 같이 다수개의 스텝으로 분해하여 보다 정밀한 스텝 각도로 회전할 수 있도록 제어하는 방식이라 말할 수 있다. 결과적으로 보다 정밀한 스텝 제어와 함께 풀-스텝핑 및 하프-스텝핑을 이용했을 경우 대비 소음 및 진동 특성 향상과 함께 고속 및 저속에서도 최대 토크를 얻을 수 있다.