이번 포스팅에서는 아두이노로 스텝모터를 동작시켜 보도록 하겠습니다.
스텝모터란
스텝모터는 펄스(Puls)에 의해 디지털적으로 제어하기 때문에 정밀한 제어가 가능하고, 아두이노, 라즈베리파이등으로 동작시키기에 편리합니다. 또한 제어부가 비교적 간단해서 가격이 저렴하고 브러시리스(Brushless)모터이기 때문에 오래 사용할 수 있다는 장점이 있습니다.
브러시리스 모터 (Brushless Motor)
브로시 모터는 브러시가 있는 모터 입니다. 브러시란 전원에서 코일로 전류를 흘려보내주는 모터의 부품입니다. 아래 그림과 같이 점은색 육변체 부분을 브러시라고 하는데 주로 흑연성분으로 구성되어 있습니다, 브러시 모터는 가격이 저렴한 반면 에너지 효율이 낮고 사용할 수 록 브러시가 닳아 없어지기 때문에 브러시리스 모터에 비해 수명이 짧습니다.
스텝모터의 구조 및 원리
스텝모터는 크게 회전하는 회전자 (Rotor : 위 그림의 빨간색 부분)와 코엘에 감겨 고정되어 있는 고정자(Stator : 위 그림의 코일에 감긴 4개의 부품)로 구성되어 있습니다.
구동방식은 다음과 같습니다.1. 1번 전자석에 전류가 들어오면 회전자가 전류가 들어온 전자석 방향으로 회전합니다.2. 1번 전자석에 들어오는 전류가 없어지고 2번 전자석에 전류가 들어오면 한스텝(3.6°)회전합니다.3. 2번 전자석에 들어오는 전류가 없어지고 3번 전자석에 전류가 들어오면 한스텝(3.6°)회전합니다.4. 이런 방식으로 1-2, 2-3, 3-4, 4-1로 전자석에 들어오는 전류에 따라 회전자가 회전을 하게됩니다.결과적으로 위의 방식으로 100번을 반복하게되면 360°회전하여 한바퀴를 돌게 됩니다.
스텝모터도 고유의 라이브러리를 가지고 있습니다. 라이브러리를 이용해서 스텝모터를 작동 시켜 보도록 하겠습니다. 이번 포스팅에서 사용된 스텝모터는 28byj-48이라는 스텝모터 입니다.
---------------------------------------------------------------------------------------------
#include
}
라이브러리에서 제공하는 기본 예제 (oneRevolution)를 조금 변형시켜 보았습니다.
스텝모터 & 가변저항
const int stepsPerRevolution = 1024;
Stepper myStepper(stepsPerRevolution, 11, 9, 10, 8);
void setup() {}
void loop() { int sensorReading = analogRead(A0); int motorSpeed = map(sensorReading, 0, 1023, 0, 100); if (motorSpeed > 0) { myStepper.setSpeed(motorSpeed); myStepper.step(stepsPerRevolution / 100); }
---------------------------------------------------------------------------------------------
위 예제는 가변저항을 이용해 스텝모터의 회전속도를 바꿔보는 예제를 조금 변형한 소스코드 입니다.
int sensorReading = analogRead(A0);
A0핀에 가변저항을 연결해서 변화하는 저항값을 읽어옵니다.
motorSpeed 값이 0 ~ 100사이의 값일 경우에 스텝모터의 스피드를 motorSpeed와 동일하게 지정해주고 지정된 스피드로 스템모터를 한스텝 동작시킵니다.
9,090
0
확인