-
아두이노 라이브러리 | 스텝모터 가속 제어 AccelStepper.hTechnology/Arduino 2024. 11. 13. 09:36
1. 스텝모터 가속 제어
스텝모터 가속 제어 앞서 소개한 방법으로 스텝모터를 제어했다면 스텝모터의 동작이 부드럽지 않았을 것이다. 이는 위 그림의 왼쪽 그래프처럼 스텝모터의 회전을 갑자기 변속했기 때문이다. 부드러운 동작을 원한다면 위 그림의 오른쪽 그래프처럼 일정한 시간동안 스텝모터의 회전 속력을 연속적으로 변경해야 한다. 이러한 가속 제어는 유니폴라 스텝모터 드라이버의 경우 반복문을 사용하여 한 단계 동작할 때마다 회전 속력을 서서히 변경하는 것으로, 바이폴라 스텝모터 드라이버의 경우 반복문을 사용하여 단계 제어 단자에 입력하는 펄스 주기를 서서히 변경하는 것으로 직접 구현할 수 있다.
2. 아두이노 라이브러리 추가
아두이노 라이브러리 추가 아두이노 플랫폼에는 스텝모터의 가속 제어를 위한 알고리즘이 라이브러리로 구현되어 있다. 그러나 기본적으로 제공되는 라이브러리는 아니기 때문에 라이브러리를 IDE에 추가하는 과정이 필요하다. 아두이노 IDE 상단 툴바에서 '툴'을 선택한 뒤 '라이브러리 관리' 항목을 선택하자. 그러면 곧이어 '라이브러리 매니저' 창이 나타나는데, 해당 창 오른쪽 상단에 라이브러리 이름을 입력하면 아두이노 플랫폼에서 지원하는 라이브러리를 검색할 수 있다. 해당 칸에 'AccelStepper'를 입력하자. 라이브러리를 검색하면 입력한 검색어와 관련된 라이브러리 목록이 나타난다. 'AccelStepper' 최신 버전을 선택하여 설치하도록 하자. 아래 링크로 접속하면 해당 라이브러리에 대한 설명과 사용 방법을 확인할 수 있다.
AccelStepper: AccelStepper Class Reference
Support for stepper motors with acceleration etc. This defines a single 2 or 4 pin stepper motor, or stepper moter with fdriver chip, with optional acceleration, deceleration, absolute positioning commands etc. Multiple simultaneous steppers are supported,
www.airspayce.com
3. 예제
3.1. 회로 구성 - 유니폴라 스텝모터 드라이버 ULN2003 모듈
회로 구성 - 유니폴라 스텝모터 드라이버 ULN2003 모듈 3.2. 프로그램 작성 - 유니폴라 스텝모터 드라이버 ULN2003 모듈
#include <AccelStepper.h> // 스텝모터 가속 제어를 위한 라이브러리 추가 int FULLSTEP = 4; // 라이브러리 풀 스텝 설정 계수 정의 int HALFSTEP = 8; // 라이브러리 하프 스텝 설정 계수 정의 int steps_per_rev = 2048; // 스텝모터 회전 단계 수 정의 // 스텝모터 객체 생성 // 마이크로 스테핑 모드 설정 // 모듈과 연결된 디지털 핀을 IN1-IN3-IN2-IN4 순서로 정의 AccelStepper myStepper1(FULLSTEP, 8, 10, 9, 11); AccelStepper myStepper2(HALFSTEP, 4, 6, 5, 7); void setup() { myStepper1.setMaxSpeed(1000); // myStepper1의 회전 속력 한도를 1000 step/s으로 설정 myStepper1.setAcceleration(50); // myStepper1의 회전 가속력을 50 step/s^2으로 설정 myStepper1.setSpeed(200); // myStepper1의 회전 속력을 200 step/s으로 설정 myStepper1.moveTo(steps_per_rev); // myStepper1의 목표 단계를 2048단계로 설정 myStepper2.setMaxSpeed(1000); myStepper2.setAcceleration(50); myStepper2.setSpeed(200); myStepper2.moveTo(-steps_per_rev); // myStepper1의 목표 단계를 -2048단계로 설정 } void loop() { if (myStepper1.distanceToGo() == 0) // myStepper1이 목표 단계까지 동작해야할 단계가 0과 같을 경우 { myStepper1.moveTo(-myStepper1.currentPosition()); // myStepper1의 목표 단계를 반대로 설정 if (myStepper2.distanceToGo() == 0) { myStepper2.moveTo(-myStepper2.currentPosition()); } } myStepper1.run(); // 사전에 설정한 대로 myStepper1 동작 시작 myStepper2.run(); }
3.3. 회로 구성 - 바이폴라 스텝모터 드라이버 A4988 모듈
회로 구성 - 바이폴라 스텝모터 드라이버 A4988 모듈 3.4. 프로그램 작성 - 바이폴라 스텝모터 드라이버 A4988 모듈
#include <AccelStepper.h> // 스텝모터 가속 제어를 위한 라이브러리 추가 // 스텝모터 객체 생성 // stepPin과 dirPin을 가진 드라이버 사용 여부를 판단하는 계수 입력 // 모듈과 연결된 디지털 핀을 stepPin-dirPIN 순서로 정의 AccelStepper myStepper1(1, 8, 9); AccelStepper myStepper2(1, 2, 3); void setup() { myStepper1.setMaxSpeed(1000); // myStepper1의 회전 속력 한도를 1000 step/s로 설정 myStepper1.setAcceleration(500); // myStepper1의 회전 가속력을 50 step/s^2으로 설정 myStepper1.setCurrentPosition(0); // myStepper1의 현재 위치를 0으로 설정 myStepper2.setMaxSpeed(1000); myStepper2.setAcceleration(500); myStepper2.setCurrentPosition(0); } void loop() { myStepper1.moveTo(800); // myStepper1의 목표 단계를 800단계로 설정 myStepper1.runToPosition(); // 사전에 설정한 대로 myStepper1 동작 시작, 완료할 때가지 대기 myStepper2.moveTo(1600); // myStepper2의 목표 단계를 1600단계로 설정 myStepper2.runToPosition(); myStepper1.moveTo(0); // myStepper1의 목표 단계를 0단계로 설정 myStepper2.moveTo(0); while(myStepper1.currentPosition() != 0 || myStepper2.currentPosition() != 0) { myStepper1.run(); // 사전에 설정한 대로 myStepper1 동작 시작 myStepper2.run(); } }
[함께 읽으면 좋은 페이지]
아두이노 라이브러리 | 유니폴라 스텝모터 드라이버 ULN2003
1. 스텝모터 스텝모터(stepper motor)는 내부 전자석을 적절하게 제어하여 구동축이 특정한 각도로 회전하게 하는 구동기이다. 서보모터처럼 특정한 각도로 회전하는 기능을 가지고 있지만, 서보
vedacube.tistory.com
아두이노 | 바이폴라 스텝모터 드라이버 A4988 모듈
1. 바이폴라 스텝모터와 유니폴라 스텝모터 스텝모터는 전자석에 감겨 있는 전류선의 배선 방식에 따라 바이폴라(bipolar) 스텝모터와 유니폴라(unipolar) 스텝모터로 구분된다. 바이폴라 스텝모
vedacube.tistory.com
아두이노 라이브러리 | 다중 스텝모터 동시 제어
1. 다중 스텝모터 동시 제어 2. 아두이노 라이브러리 추가 AccelStepper: MultiStepper Class ReferenceOperate multiple AccelSteppers in a co-ordinated fashion. This class can manage multiple AccelSteppers (up to MULTISTEPPER_MAX_S
vedacube.tistory.com
참고문헌
- DroneBot Workshop. (2018). Stepper Motors with Arduino - Controlling Bipolar & Unipolar stepper motors. YouTube. https://www.youtube.com/watch?v=0qwrnUeSpYQ. 2024.06.17.
- How To Mechatronics. (2022). Stepper Motors and Arduino - The Ultimate Guide. YouTube. https://www.youtube.com/watch?v=7spK_BkMJys. 2024.06.17.반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 | 디지털 인터럽트 (1) 2024.11.15 아두이노 | 바이폴라 스텝모터 드라이버 TB6600 모듈 (4) 2024.11.14 아두이노 | 바이폴라 스텝모터 드라이버 A4988 모듈 마이크로 스테핑 (4) 2024.11.09 아두이노 | 바이폴라 스텝모터 드라이버 A4988 모듈 (4) 2024.11.08 아두이노 라이브러리 | 유니폴라 스텝모터 드라이버 ULN2003 (3) 2024.11.07