-
아두이노 라이브러리 | 다중 스텝모터 동시 제어 MultiStepper.hTechnology/Arduino 2024. 11. 20. 14:35
1. 다중 스텝모터 동시 제어
CNC 가공기나 3D 프린터처럼 여러 스텝모터를 사용하는 기계들을 보면, 스텝모터들이 차례차례 움직이는 것이 아니라 동시에 움직이고 있는 것을 알 수 있다. 이는 사실 스텝모터들이 작은 단위의 단계로 차례차례 동작하되 빠르게 움직여 동시에 움직이는 것처럼 보이는 것이다. 이를 구현하기 위해서는 각 스텝모터가 동작해야할 총 단계와 사용자가 지정한 동작 속력을 고려하여 각 스텝모터의 최소 동작 단위를 계산하는 알고리즘이 필요하다.
2. 아두이노 라이브러리 추가
아두이노 플랫폼에는 여러 스텝모터를 동시에 제어하기 위한 알고리즘이 라이브러리로 구현되어 있다. 그러나 기본적으로 제공되는 라이브러리는 아니기 때문에 라이브러리를 IDE에 추가하는 과정이 필요하다. 아두이노 IDE 상단 툴바에서 '툴'을 선택한 뒤 '라이브러리 관리' 항목을 선택하자. 그러면 곧이어 '라이브러리 매니저' 창이 나타나는데, 해당 창 오른쪽 상단에 라이브러리 이름을 입력하면 아두이노 플랫폼에서 지원하는 라이브러리를 검색할 수 있다. 해당 칸에 'AccelStepper'를 입력하자. 라이브러리를 검색하면 입력한 검색어와 관련된 라이브러리 목록이 나타난다. 'AccelStepper' 최신 버전을 선택하여 설치하도록 하자. 아래 링크로 접속하면 해당 라이브러리에 대한 설명과 사용 방법을 확인할 수 있다.
3. 확인사항
해당 라이브러리는 스텝모터 가속 제어를 위한 라이브러리 기반으로 작성되었다. 따라서 해당 라이브러리를 이용하기 위해서는 스텝모터 가속 제어 라이브러리를 먼저 선언해야 한다. 스텝모터 가속 제어를 위한 라이브러리 기반으로 작성되었으니, 다중 스텝모터를 동시에 제어하기 위한 라이브러리도 가속 제어를 지원할 것 같지만, 아쉽게도 여러 스텝모터를 제어할 경우에는 가속 제어를 지원하지 않는다.
4. 예제
4.1. 회로 구성
4.2. 프로그램 작성
#include <AccelStepper.h> // 스텝모터 가속 제어를 위한 라이브러리 추가 #include <MultiStepper.h> // 다중 스텝모터 동시 제어를 위한 라이브러리 추가 // 스텝모터 객체 생성 // stepPin과 dirPin을 가진 드라이버 사용 여부를 판단하는 계수 입력 // 모듈과 연결된 디지털 핀을 stepPin-dirPIN 순서로 정의 AccelStepper myStepper1(1, 3, 2); AccelStepper myStepper2(1, 5, 4); AccelStepper myStepper3(1, 7, 6); MultiStepper steppersControl; // 다중 스텝모터 객체 생성 long goToPosition[3]; // 각 스텝모터의 목표 단계를 저장하기 위한 배열 정의 void setup() { myStepper1.setMaxSpeed(1000); // myStepper1의 회전 속력 한도를 1000 step/s로 설정 myStepper2.setMaxSpeed(1000); myStepper3.setMaxSpeed(1000); steppersControl.addStepper(myStepper1); // myStepper1을 다중 스텝모터 객체에 추가 steppersControl.addStepper(myStepper2); steppersControl.addStepper(myStepper3); } void loop() { goToPosition[0] = 800; // myStepper1의 목표 단계를 800단계로 저장 goToPosition[1] = 1600; goToPosition[2] = 3200; steppersControl.moveTo(goToPosition); // 다중 스텝모터 객체의 목표 단계를 갱신 steppersControl.runSpeedToPosition(); // 사전에 설정한 대로 스텝모터 동작 시작, 완료할 때가지 대기 delay(1000); // 1000 ms 대기 goToPosition[0] = 0; // myStepper1의 목표 단계를 0단계로 저장 goToPosition[1] = 0; goToPosition[2] = 0; steppersControl.moveTo(goToPosition); steppersControl.runSpeedToPosition(); delay(1000); }
[함께 읽으면 좋은 페이지]
참고문헌
- How To Mechatronics. (2022). Stepper Motors and Arduino - The Ultimate Guide. YouTube. https://www.youtube.com/watch?v=7spK_BkMJys. 2024.08.01.반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 | 펠티어 열전소자 (0) 2024.11.22 아두이노 SPI 통신 | 열전대 써모커플 증폭 모듈 MAX31856 (0) 2024.11.21 아두이노 | 유도형 근접 스위치 DC 5V 모듈 (0) 2024.11.19 아두이노 프로젝트 | 컨베이어 벨트 (0) 2024.11.17 아두이노 | 디지털 인터럽트 (1) 2024.11.15