아두이노로 서보모터를 컨트롤 하는것은 인터넷, 책을 비롯해 많은 기본 예제 및 강의에서 다루고 있고, 저 또한 이를 응용해서 많은 경험을 했습니다.
하지만 어느샌가 각도제어의 제한도 없고 훨씬 범용적으로 사용할 수 있는 스텝모터에 자연스레 관심이 생겨 여기저기 찾아보다가 한 영상을 발견했어요:
https://youtube.com/watch?v=iIs82XkTvhY&feature=sharea
따라서 본 게시글을 위 영상을 따라 공부한 기록임을 알립니다!
고민할 이유 있습니까. 바로 필요한 부품을 파밍하고 집에 없는 재료는 바로 구매 했습죠



필요한 재료를 정리 해 보면
- 아두이노
- 빵판
- 점퍼선
- 스텝모터
- 파워서플라이
- 스텝모터 드라이버 (TMC2225)
정도 입니다.
바로 회로도랑 코드 한번 보시죠

참고로 여기서 파워서플라이를 연결할 때 어떻게 하는건지 몰라서 한참 헤메었는데, v+라고 적힌게 (+), cmm이라고 적인게 (-) 였습니다.
int en = 2; // enable핀, 스텝모터에 전압 인가를 결정합니다
int step = 3; // step핀, 이 핀의 신호가 HIGH에서 LOW로 갈 때 하나의 스텝이 옮겨집니다
int dir = 4; // direction핀, HIGH이면 시계, LOW이면 반시계로 회전합니다
void setup() {
pinMode(en, OUTPUT); // 세 핀 모두 출력이니 OUTPUT으로 설정합니다
pinMode(step, OUTPUT);
pinMode(dir, OUTPUT);
digitalWrite(en, LOW); // 일단 처음 디폴트 값은 모두 LOW로 설정 해 줍시다
digitalWrite(step, LOW);
digitalWrite(dir, LOW);
delay(1000); // 그러고 1초간 대기 하구요
}
void loop() {
digitalWrite(step, HIGH);
delay(1);
digitalWrite(step, LOW);
delay(1); // 이 네줄의 코드가 하나의 스텝을 옮기게 됩니다
}
이 회로도와 코드를 그대로 옮겨 작성하고 실행 하면 -> 반시계방향으로 계속 회전합니다.
당연하죠, void setup에서 dir핀은 LOW (반시계 방향), en핀도 LOW(모터에 전원 인가)로 설정 해 두었으니까요

추가적으로 설명을 하자면 void loop 에서 가장 마지막에 있는 delay함수가 모터의 회전속도를 결정짓습니다.
void loop() {
digitalWrite(step, HIGH);
delay(1);
digitalWrite(step, LOW);
delay(0.5);
}직접 해보니 0.5정도로 내려보면 가장 빨라지는 것 같아요.
잘은 모르겠지만 파워 서플라이의 전원을 더 높여주면 속도가 빨라지지 않을까 싶습니다.
기본은 이정도로 하고, 앞으로 이를 활용해서 응용을 해볼까 합니다.
아직은 배워가는 입장이지만, 혹시나 궁금한게 있으시면 댓글이나 인스타 DM으로 연락 주세요!
https://www.instagram.com/study_4_machine/
로그인 • Instagram
www.instagram.com
감사합니다 :)
'공대스러운 > 액추에이터 프로젝트' 카테고리의 다른 글
| 액추에이터 프로젝트2 - 스텝모터 기본동작(회전방향, 전원공급) (0) | 2023.08.29 |
|---|