티스토리 뷰
스텝 모터는 한 바퀴를 여러 단계(Step)로 쪼개서 돌릴 수 있는 모터입니다. 입력값에 따라 원하는 각도로 돌릴 수 있습니다. 구동되는 방식과 회전 특성은 다르지만, 기능은 서보 모터와 비슷하다고 보시면 됩니다. 일반적으로 서보모터보다는 덜 정밀하다고 보시면 됩니다. 주차장 봉, 사물함 문, 컨베이어 벨트 등에 사용할 수 있습니다.
인터넷에서 아두이노 스텝 모터를 찾으면 가장 먼저 검색되는 것이 28BYJ-48입니다. 가격이 저렴하고 ULN2003 모터 드라이버까지 세트로 팔기 때문에 사용도 간편합니다. 여기에 아두이노 에디터에 기본으로 들어있는 Stepper 라이브러리를 사용해서 스텝 모터를 돌려보겠습니다.
<그림 1> 스텝모터와 아두이노
스텝 모터(Stepper, Stepping Motor)
<그림 2> 스텝모터 구동원리
(출처: explainthatstuff)
위 그림은 스텝 모터의 구동 원리를 설명하는 그림입니다. 회전체에는 여러 개의 자석이 반대되는 극성 순서로 달려있습니다. 고정체에는 전자석이 90도 간격으로 있습니다. 180도 떨어진 전자석 2개가 한 쌍으로 다른 방향에 전류가 들어왔다가 다시 90도 떨어진 전자석으로 전류가 들어갑니다. 고정체의 전자석의 극에 따라 회전체의 자석이 끌리면서 회전하게 됩니다.
STEPS / 1 회전
이번 예제에서는 스텝 모터를 딱 한바퀴만 돌리려 합니다. 그 값에 맞게 STEPS를 입력해야 합니다. 우선 1회전이 몇 개의 단계로 쪼개져 있는지 확인해야 합니다. 이 값은 서보모터의 특성에 따라 달라집니다. 모터의 Data Sheet를 보면 Stride Angle 값과 기어비가 나와 있습니다. 이 값으로 Steps / 1회전를 계산 해보겠습니다.
Stride Angle: 5.625°
Gear Ratio : 64
Steps= (360°/5.625°)*64"Gear ratio" = 64 * 64 =4096
계산해 보면 모터 축의 1 회전을 구성하는 Steps는 4096인 것을 알 수 있습니다.
28BYJ-48 모터 Step 계산하기
인터넷에서 모터의 Data Sheet를 검색해 보면 Stride Angle: 5.625°, Gear Ratio : 64로 나오는 경우가 많습니다.
하지만, 포럼을 검색해보면 Stride Angle을 11.25°를 쓰는 경우가 많았습니다. 제 모터 역시 11.25°가 맞았습니다. 제조사에서는 Gear Ratio를 64라고 하지만 어떤 사용자가 분해해서 기어의 톱니 개수를 세어보니 63.684로 나왔습니다. 자세한 내용은 아래글을 참고 바랍니다.
http://forum.arduino.cc/index.php?topic=71964.15
따라서 정확한 Step을 계산해보면 아래와 같습니다.
Steps = (360°/11.25°)*63.684 = 2037
* 만약 두바퀴 돌리려면 2를 곱해서 4074를 입력하면 됩니다. 만약 90도 돌리려면 4로 나눈 값인 509를 Steps에 입력하면 됩니다.
완성된 회로도
< 그림 3 > 스텝모터 아두이노 회로도
모터 끝은 커넥터로 되어 있어 모터 드라이버에 바로 꽂으면 됩니다. 만약 커넥터가 없다면 파란색 선이 바깥쪽으로 가게 연결하면 됩니다. 그 다음 모터 드라이브 Input 1, 2, 3, 4를 아두이노 핀 8, 9, 10, 11에 연결해 줍니다. 드라이브의 +, - 단자를 아두이노 5V 전원과 GND에 연결해 줍니다.
완성된 코드
#include <Stepper.h> #define STEPS 2037 // 한바퀴를 이루는 스텝 갯수 입력 Stepper stepper(STEPS, 8, 10, 9, 11); // 고정자 권선 순서 설정 void setup() { stepper.setSpeed(12); // 회전 속도 지정 } void loop() { stepper.step(STEPS); // 정방향 회전 delay(1000); stepper.step(-STEPS); // 역방향 회전 delay(1000); }
< 그림 4 > 스텝모터 아두이노 완성모습
'아두이노' 카테고리의 다른 글
[아두이노] 아이폰과 아두이노 블루투스 연결하기 (1) | 2019.02.19 |
---|---|
[아두이노] 포텐셔미터로 스탭모터 제어하기 (1) | 2019.02.04 |
[아두이노] LED 서서히 켜고 끄기 (0) | 2019.01.24 |
[아두이노] 포텐셔미터로 서보모터 동작 (1) | 2019.01.23 |
[아두이노] 시리얼 모니터로 DC모터 제어 (2) | 2019.01.22 |
- Total
- Today
- Yesterday
- dc 모터
- 서보모터
- Fading LED
- Potentiometer
- 태양광 공유
- Step Motor
- Stepper Motor
- 습도
- 릴레이
- 온도
- DC Motor
- 4 원칙
- relay
- Renewable
- 아두이노
- dht
- solar
- Solar Sharing
- LED
- Arduino
- 애자일
- 코딩
- 초음파센서
- 스크럼
- Solar Panel
- agile
- 시리얼 모니터
- Scrum
- 태양광
- DHT22
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |