기본 동작 동영상 :
https://youtu.be/GJ7Dmjefbak
가변저항 동영상 :
https://youtu.be/qvHy1plHItg
<* 스테핑 모터(Stepping Motor) 사용하기 *>
● 스텝모터는 모터의 회전을 잘게 쪼개서 쪼갠 조각(스텝)을 이용해서 제어하는 모터이다.
● 펄스(Puls)에 의해 디지털적으로 제어하기 때문에 정밀한 제어가 가능하다..
● 브러시리스(Brushless)모터이기 때문에 오래 사용할 수 있다.
< 스텝모터의 분류 >
- 스텝모터는 작동 방식에 따라 크게 유니폴라 (Unipolar)와 바이폴라 (Bipolar)로 구분된다.
● 유니폴라 방식은 권선에 전류를 한쪽 방향으로만 흘리는 방식으로 큰 토크(힘)가 나오지 않지만 탈조 위험이 낮고 고속회전이 가능하다.
- 주로 SLA7024칩을 이용해서 제어합니다.
● 바이폴라 방식은 권선에 흐르는 전류의 방향을 바꿔서 모터를 구동하는 방식으로 회로구성이 복잡하지만 저속에서 토크 성능이 좋다.
- 유니폴라 방식에 비해 높은 정밀도를 가진다
- L297, ULN2003등 H-bridge를 포함한 IC칩을 이용해서 제어한다.
------ < 28byj-48 스텝모터 동작 소스코드 > ---------------------------------------------------
▶ 1024는 180º 이다.
#include <Stepper.h>
#define IN1 12 // IN1
#define IN2 11 // IN2
#define IN3 10 // IN3
#define IN4 9 // IN4
int RPM = 10;
int stepsPerRevolution=2048;
Stepper my28BJY48(stepsPerRevolution, IN4, IN2, IN3, IN1);
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
my28BJY48.setSpeed(RPM);
}
void loop() {
my28BJY48.step(stepsPerRevolution);
delay(2000);
my28BJY48.step(-stepsPerRevolution);
delay(2000);
}
------ < 가변저항을 이용해 스텝모터의 회전 각도 제어 소스 코드 > ---------------------------------------------------
#include <Stepper.h>
#define IN1 12 // IN1
#define IN2 11 // IN2
#define IN3 10 // IN3
#define IN4 9 // IN4
#define Potentiometer A0
int stepsPerRevolution = 1024;
int sensorReading;
int motorSpeed=10;
int PotentiometerValue;
Stepper myStepper(stepsPerRevolution, IN4, IN2, IN3, IN1);
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(Potentiometer, INPUT);
myStepper.setSpeed(motorSpeed);
}
void loop() {
sensorReading = analogRead(Potentiometer);
stepsPerRevolution = map(sensorReading, 0, 1023, 0, 2048);
if (motorSpeed > 0) {
myStepper.step(stepsPerRevolution);
}
delay(2000);
}