-
아두이노 라이브러리 | 유니폴라 스텝모터 드라이버 ULN2003Technology/Arduino 2024. 11. 7. 17:34
1. 스텝모터
스텝모터(stepper motor)는 내부 전자석을 적절하게 제어하여 구동축이 특정한 각도로 회전하게 하는 구동기이다. 서보모터처럼 특정한 각도로 회전하는 기능을 가지고 있지만, 서보모터와는 다르게 엔코더(encoder) 역할을 하는 장치가 내장되어 있지 않으므로 현재 회전 각도를 알 수 없다. 큰 힘을 내면서도 최소 각도 단위로 정확하게 움직이기 때문에 CNC (computerized numerical control) 가공기나 3D 프린터와 같은 자동화 기기에 많이 사용된다. 이번 예제에서는 아두이노 플랫폼에서 기본적으로 사용하는 DC 5V 유니폴라 스텝모터 28BYJ-48을 다루고자 하며, 아래 링크로 접속하면 유니폴라 스텝모터 드라이버 ULN2003 모듈을 함께 구매할 수 있다.
2. 제어 방법
스텝모터 내부에는 구동축과 연결된 기어와, 기어를 둘러싸고 있는 전자석이 있다. 전자석에 감겨 있는 도선에 전류를 흘려주면 자력에 의해 기어가 한 단계(step) 회전하고, 회전한 뒤에는 해당 위치를 유지한다. 다른 전자석에 감겨 있는 도전에 전류를 흘려주면 마찬가지로 기어가 다음 단계로 회전하여 해당 위치를 유지한다. 이와 같은 방법으로 번갈아가면서 연속적으로 제어하면 스텝모터를 동작시킬 수 있으며. 이때 회전 각도는 스텝모터가 가진 최소 회전 각도와 회전 단계 수로 결정된다. 이번 예제에서 다루는 유니폴라 스텝모터 28BYJ-48의 최소 회전 각도는 한 단계당 11.25도(360도÷32단계)이며, 구동축에 연결된 기어의 기어비는 64:1이다. 만약 해당 스텝모터를 한 바퀴 회전시키고 싶다면 2048단계(=32단계×64)를 제어하면 되겠다. 아두이노 플랫폼은 사용자가 스텝모터를 직관적으로 제어할 수 있도록 스텝모터 라이브러리를 제공하고 있다. 아래 링크로 접속하면 아두이노 플랫폼에서 지원하는 스텝모터 라이브러리와 이에 대한 설명을 확인할 수 있다.
3. 예제
3.1. 회로 구성
3.2. 프로그램 작성
#include <Stepper.h> // 스텝모터 라이브러리 추가 int steps_per_rev = 2048; // 스텝모터 회전 단계 수 정의 // myStepper라는 이름의 스텝모터 객체 생성 // 스텝모터가 한 바퀴 회전하기 위한 단계 수 정의 // 모듈과 연결된 디지털 핀을 IN1-IN3-IN2-IN4 순서로 정의 Stepper myStepper(steps_per_rev, 8, 10, 9, 11); void setup() { } void loop() { myStepper.setSpeed(200); // 스텝모터의 회전 속력을 200 RPM으로 설정 // 스텝모터를 512단계만큼 동작 myStepper.step(steps_per_rev / 4); delay(1000); // 1000 ms 대기 myStepper.setSpeed(400); // 스텝모터의 회전 속력을 400 RPM으로 설정 myStepper.step(steps_per_rev / 4); delay(1000); myStepper.setSpeed(600); // 스텝모터의 회전 속력을 600 RPM으로 설정 myStepper.step(steps_per_rev / 4); delay(1000); myStepper.setSpeed(800); // 스텝모터의 회전 속력을 800 RPM으로 설정 myStepper.step(steps_per_rev / 4); delay(1000); myStepper.setSpeed(800); // 스텝모터를 반대 방향으로 2048단계만큼 동작 myStepper.step((-1) * steps_per_rev); delay(3000); // 3000 ms 대기 }
[함께 읽으면 좋은 페이지]
참고문헌
- DroneBot Workshop. (2018). Stepper Motors with Arduino - Controlling Bipolar & Unipolar stepper motors. YouTube. https://www.youtube.com/watch?v=0qwrnUeSpYQ. 2024.06.03.
- Benne de Bakker. (2019). 28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial. Makerguides. https://www.makerguides.com/28byj-48-stepper-motor-arduino-tutorial/. 2024.06.13.반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 | 바이폴라 스텝모터 드라이버 A4988 모듈 마이크로 스테핑 (4) 2024.11.09 아두이노 | 바이폴라 스텝모터 드라이버 A4988 모듈 (4) 2024.11.08 아두이노 프로젝트 | 스마트 냉각팬 (0) 2024.07.19 아두이노 | 온도센서 LM35 (0) 2024.07.12 아두이노 | 온도센서 TMP36 (1) 2024.07.05