Arduino

스테핑 모터(Stepping Motor) 사용하기 - 28byj-48

작성자 임베디드코리아 작성일25-05-16 00:13 조회284회 댓글0건

첨부파일

<* 스테핑 모터(Stepping Motor) 사용하기 *>
● 스텝모터는 모터의 회전을 잘게 쪼개서 쪼갠 조각(스텝)을 이용해서 제어하는 모터이다.
● 펄스(Puls)에 의해 디지털적으로 제어하기 때문에 정밀한 제어가 가능하다..
● 브러시리스(Brushless)모터이기 때문에 오래 사용할 수 있다.

< 스텝모터의 분류 >
    - 스텝모터는 작동 방식에 따라 크게 유니폴라 (Unipolar)와 바이폴라 (Bipolar)로 구분된다.
● 유니폴라 방식은 권선에 전류를 한쪽 방향으로만 흘리는 방식으로 큰 토크(힘)가 나오지 않지만 탈조 위험이 낮고 고속회전이 가능하다.
    - 주로 SLA7024칩을 이용해서 제어합니다.

● 바이폴라 방식은 권선에 흐르는 전류의 방향을 바꿔서 모터를 구동하는 방식으로 회로구성이 복잡하지만 저속에서 토크 성능이 좋다.
    - 유니폴라 방식에 비해 높은 정밀도를 가진다
    - L297, ULN2003등 H-bridge를 포함한 IC칩을 이용해서 제어한다.

------ < 28byj-48 스텝모터 동작 소스코드 > ---------------------------------------------------
▶ 1024는 180º 이다.
#include <Stepper.h>
 
const int stepsPerRevolution = 1024;
Stepper myStepper(stepsPerRevolution,11,9,10,8);

void setup() {
  myStepper.setSpeed(30);
  Serial.begin(9600);   
}

void loop() {
  Serial.println("counterclockwise");
  myStepper.step(stepsPerRevolution);
  delay(1000);
 
  Serial.println("clockwise");
  myStepper.step(-stepsPerRevolution);
  delay(1000);
}

------ < 가변저항을 이용해 스텝모터의 회전속도 제어 소스 코드 > ---------------------------------------------------
#include <Stepper.h>
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);
  }
}