- 스테퍼 모터의 작동 모드
- 스테퍼 모터 제어를위한 MATLAB 그래픽 사용자 인터페이스 생성
- Arduino로 스테퍼 모터를 제어하기위한 MATLAB 코드
- 필요한 재료
- 회로도
- MATLAB으로 스테퍼 모터 제어
스테퍼 모터는 개별 단계로 회전하는 브러시리스 DC 모터이며 많은 정밀 모션 제어 애플리케이션에 가장 적합한 선택입니다. 또한 스테퍼 모터는 저속에서 높은 토크가 필요한 위치, 속도 제어 및 응용 분야에 적합합니다.
MATLAB의 이전 튜토리얼에서 MATLAB을 사용하여 DC 모터, 서보 모터 및 가전 제품을 제어하는 방법에 대해 설명했습니다. 오늘 우리는 MATALB와 Arduino를 사용하여 Stepper Motor를 제어하는 방법을 배웁니다. MATLAB을 처음 사용하는 경우 MATLAB을 사용하여 간단한 LED 깜박임 프로그램을 시작하는 것이 좋습니다.
스테퍼 모터의 작동 모드
스테퍼 모터 코딩을 시작하기 전에 스테퍼 모터의 작동 또는 회전 개념을 이해해야합니다. 스테퍼 모드의 고정자는 서로 다른 쌍의 코일로 구성되기 때문에 각 코일 쌍은 다양한 방법으로 여기 될 수 있으므로 모드를 다양한 모드에서 구동 할 수 있습니다. 다음은 광범위한 분류입니다.
풀 스텝 모드
풀 스텝 여기 모드에서는 최소 회전 수 (스텝)로 전체 360 ° 회전을 달성 할 수 있습니다. 그러나 이것은 관성이 줄어들고 회전이 부드럽 지 않습니다. Full Step Excitation에는 추가로 두 가지 분류가 있는데, 이들은 하나의 Phase-on wave stepping과 two phase-on mode 입니다.
1. 단상 스테핑 또는 웨이브 스테핑: 이 모드에서는 주어진 시간에 모터의 한 단자 (상)에만 전원이 공급됩니다. 이것은 단계 수가 적기 때문에 완전한 360 ° 회전을 달성 할 수 있습니다. 단계 수가 적기 때문에이 방법으로 소비되는 전류도 매우 낮습니다. 다음 표는 4 상 스테퍼 모터의 웨이브 스테핑 시퀀스를 보여줍니다.
단계 | 1 단계 (파란색) | 2 단계 (핑크) | 3 단계 (노란색) | 4 단계 (주황색) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
삼 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. 2 단계 스테핑: 이 방법에서 이름에서 알 수 있듯이 2 단계는 1 단계입니다. 웨이브 스테핑과 동일한 스텝 수를 가지지 만 한 번에 두 개의 코일에 전원이 공급되므로 이전 방법에 비해 더 나은 토크와 속도를 제공 할 수 있습니다. 한 가지 단점은이 방법이 더 많은 전력을 소비한다는 것입니다.
단계 |
1 단계 (파란색) |
2 단계 (핑크) |
3 단계 (노란색) |
4 단계 (주황색) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
삼 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
하프 스텝 모드
하프 스텝 모드는 1 상 온 모드와 2 상 온 모드의 조합입니다. 이 조합은 위에서 언급 한 두 모드의 단점을 극복하는 데 도움이됩니다.
두 가지 방법을 결합하고 있기 때문에 짐작 하셨겠지만 이 방법에서 8 단계 를 수행해야 완전한 회전을 얻을 수 있습니다. 아래에 표시된 4 상 스테퍼 모터의 전환 순서
단계 |
1 단계 (파란색) |
2 단계 (핑크) |
3 단계 (노란색) |
4 단계 (주황색) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
삼 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
따라서 모든 모드에서 스테퍼 모터를 프로그래밍하는 것이 귀하의 선택이지만, 저는 2 단계 스테핑 풀 스텝 모드를 선호합니다. 이 방법은 단상 방법보다 더 빠른 속도를 제공하고 하프 모드에 비해 코딩 부분은 2 단계 방법의 단계 수가 적기 때문에 적습니다.
여기에서 스테퍼 모터 및 해당 모드에 대해 자세히 알아보십시오.
스테퍼 모터 제어를위한 MATLAB 그래픽 사용자 인터페이스 생성
그런 다음 스테퍼 모터를 제어하기 위해 GUI (Graphical User Interface)를 구축해야합니다. GUI를 시작하려면 명령 창에 아래 명령을 입력하십시오.
안내서
팝업 창이 열리면 아래 이미지와 같이 새로운 빈 GUI 를 선택하십시오.
이제 아래 그림과 같이 스테퍼 모터를 시계 방향 및 시계 반대 방향으로 회전하는 두 개의 토글 버튼을 선택 합니다.
버튼의 크기를 조정하거나 모양을 변경하려면 버튼을 클릭하기 만하면 버튼의 모서리를 드래그 할 수 있습니다. 토글 버튼을 두 번 클릭하면 해당 버튼의 색상, 문자열 및 태그를 변경할 수 있습니다. 아래 그림과 같이 두 개의 버튼을 사용자 정의했습니다.
원하는대로 버튼을 사용자 지정할 수 있습니다. 이제 이것을 저장하면 MATLAB 의 편집기 창 에 코드가 생성됩니다. 프로젝트와 관련된 작업을 수행하기 위해 Arduino를 코딩하려면 항상 생성 된 코드를 편집해야합니다. 그래서 아래에서 MATLAB 코드를 편집했습니다. MATLAB 시작하기 튜토리얼에서 명령 창, 편집기 창 등에 대해 자세히 알아볼 수 있습니다.
Arduino로 스테퍼 모터를 제어하기위한 MATLAB 코드
Stepper 모터를 제어하기위한 완전한 MATLAB 코드 는이 프로젝트의 끝에 제공됩니다. 또한 다운로드를 위해 여기에 GUI 파일 (.fig) 및 코드 파일 (.m)이 포함되어 있습니다 (링크를 마우스 오른쪽 버튼으로 클릭 한 다음 '다른 이름으로 링크 저장…'선택)),이를 사용하여 요구 사항에 따라 버튼을 사용자 지정할 수 있습니다.. 아래는 두 개의 토글 버튼을 사용하여 스테퍼 모터를 시계 방향 및 시계 반대 방향으로 회전하기 위해 수행 한 몇 가지 조정입니다.
아래 코드를 복사하여 번호에 붙여 넣으십시오. 74는 m-file을 실행할 때마다 Arduino가 MATLAB과 통신하는지 확인합니다.
모두 지우기; 글로벌 a; a = arduino ();
아래로 스크롤하면 GUI의 두 버튼에 대해 두 가지 기능이 생성 된 것을 볼 수 있습니다. 이제 클릭시 수행하려는 작업에 따라 두 기능 모두에 코드를 작성하십시오.
에서는 시계 방향 버튼의 기능, 복사하여 시계 방향으로 모터를 회전 단지 기능이 종료되기 전에 코드 아래 붙여. 스테퍼 모터를 시계 방향으로 계속 회전하기 위해 while 루프 를 사용하여 시계 방향으로 2 단계 스테핑 전체 모드 단계를 반복합니다.
동안 get (hObject, 'Value') 전역 a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pause (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pause (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pause (0.0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pause (0.0002); 종료
이제 반 시계 방향 버튼의 기능 에서 모터를 반 시계 방향으로 회전시키는 기능에 아래 코드를 붙여 넣습니다. 스테퍼 모터를 반 시계 방향으로 계속 회전하기 위해 while 루프 를 사용하여 반 시계 방향으로 2 단계 스테핑 전체 모드 단계를 반복합니다.
동안 get (hObject, 'Value') 전역 a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pause (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pause (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pause (0.0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pause (0.0002); 종료
필요한 재료
- MATLAB이 설치된 노트북 (기본 설정: R2016a 이상 버전)
- Arduino UNO
- 스테퍼 모터 (28BYJ-48, 5VDC)
- ULN2003-스테퍼 모터 드라이버
회로도
MATLAB으로 스테퍼 모터 제어
회로도에 따라 하드웨어를 설정 한 후 실행 버튼을 클릭하면.m 파일에서 편집 된 코드가 실행됩니다.
MATLAB이 응답하는 데 몇 초가 걸릴 수 있습니다. 아래 그림과 같이 MATLAB이 왼쪽 모서리 하단에 사용 중 메시지를 표시 할 때까지 GUI 버튼을 클릭하지 마십시오.
모든 것이 준비되면 시계 방향 또는 시계 반대 방향 버튼을 클릭하여 모터를 회전합니다. 토글 버튼을 사용하고 있으므로 버튼을 다시 누를 때까지 스테퍼 모터가 시계 방향으로 계속 움직입니다. 마찬가지로 반 시계 방향 토글 버튼을 누르면 버튼을 다시 누를 때까지 모터가 반 시계 방향으로 회전하기 시작합니다.