【 아두이노 기초 】 #37 스텝(Step Motor)모터 제어6 (버튼제어)
지난시간 28BYJ-48 스텝모터와 ULN2003 드라이버 모듈을 가지고 버튼을 이용해 정방향, 역방향 제어를 해 보았다. (버튼1을 누르면 시계방향 1회전, 버튼2를 누르면 반시계방향 1회전)
이번 시간에는 버튼을 누르고 있는 동안은 계속 회전을 하도록 프로그램을 변경해보자. 버튼을 짧게 누르든 길게 누르든 누르는 순간만큼만 정역 회전을 시켜보려는 것이다. 앞 실습의 내용과 프로그램은 거의 동일하고 두 부분만 변경하면 문제를 해결할 수 있다. 이번 프로그래밍의 동작원리를 이해하고 있다면 쉽게 해결할 수 있을 것이다.
▶ 실험에 사용되는 스텝 모터 자료 ( 28BYJ-48 )
[ ULN2003 모듈의 내부 회로도 참고 ]
▶ 스텝모터 구동 원리
▶ 기본 동작 원리 추가 설명 (ULN2003 제외하고)
(28BYJ28 스텝모터 부연 설명)
유니폴라 방식의 모터로서(1,3,4,2번으로 전류가 들어가며 5번(Red) 공통단자로 전류가 흘러나오는 연결 구조이다, 1→5 , 3→5, 4→5, 2→5 )
※ 색깔을 주의 깊게 보면서, A → B → C → D의 순서대로 켜지도록 전류를 흘려주면 CW(시계방향), D → C → B → A의 순서대로 흘려주면 CCW(반시계 방향) 으로 모터가 회전하게 된다.
▶ 실습 목표 :
버튼 두 개를 이용하여 스텝모터의 정회전과 역회전 제어를 해 볼 것이다.
버튼 1을 한 번 클릭하면 정회전(시계방향)하고,
버튼 2를 한 번 클릭하면 역회전(반시계방향)하도록 한다.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 부대품 목록 : 아두이노 보드, 브레드 보드
▶ 부품 목록 : 스텝 모터(28BYJ48, 5.625˚) , ULN2003모듈, 푸시버튼 2개 (2Pin 이용)
▶ 프로그램 (코드& 설명) :
#include <Stepper.h> // 스테핑 모터 라이브러리 정의
int stepsPerRev = 2048; // 한바퀴(360): 2048 , 반 바퀴(180) : 1024
Stepper stepper (stepsPerRev, 11,9,10,8); // ( IN4,IN2,IN3,IN1)
int btn1 = 7;
int btn2 = 6;
void setup() {
stepper.setSpeed(10); // 스텝모터의 스피드 설정
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
}
void loop() {
boolean btn1HL = digitalRead(btn1);
boolean btn2HL = digitalRead(btn2);
if (btn1HL == LOW) { // 버튼 1의 입력을 확인
stepper.step(1); //1스텝 회전 명령(버튼을 계속누르고 있으면 계속회전)
}
if (btn2HL == LOW) { // 버튼 2의 입력을 확인
stepper.step(-1);//1스텝 역회전명령(버튼을 계속누르고 있으면 계속회전)
}
}
▶ 실행 영상 :
▶ 아두이노 소스 코드 다운로드 :
'아두이노 > 1. 아두이노기초' 카테고리의 다른 글
《아두이노》아두이노 설치 파일(Ver1.8.10) 최신 (0) | 2019.10.14 |
---|---|
【 아두이노 쌩초보#1】 아두이노 완존 초보를 위한 강좌! #01 ( Arduino for Absolute beginner! ) (0) | 2019.09.16 |
【 아두이노 기초 】 #36 스텝(Step Motor)모터 제어5 (버튼제어) (1) | 2018.11.28 |
【 아두이노 기초 】 #35 스텝(Step Motor)모터 제어4 (28BYJ-48 & ULN2003) (0) | 2018.11.26 |
【 아두이노 기초 】 #34 스텝(Step Motor)모터 제어3 (VR 속도제어) (0) | 2018.11.23 |