【 아두이노 기초 】 #33 스텝(Step Motor)모터 제어2 (시리얼통신제어)
지난시간 스텝모터를 정역 회전 시켜 보았다. 스텝모터 동작 원리를 참고하려면 여기 글을 참고하라. ( ☞ 스텝모터의 이해 ) 이제는 스텝모터를 시리얼 통신을 통해 숫자 입력 만으로 정역회전 제어를 해볼 것이다.
▶ 실험에 사용되는 스텝 모터 자료 ( 모터 뱅크, NK243-01AT )
▶ 스텝모터 구동 원리
▶ 실습 목표 :
스텝모터를 시리얼 모니터 창을 통해 숫자 '1'을 입력 하면, 360도 한 바퀴 '정회전' 시키고, 숫자 '2'를 입력하면, 360도 한 바퀴 '역회전' 시켜보자. 그 이외의 숫자나 문자 입력시에는 다시 입력하라는 안내 메세지도 보내보도록 해보자.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
L293D 모터드라이버 IC의 연결을 위해 아래 이미지를 참고 하라.
▶ 부대품 목록 : 아두이노 보드, 브레드 보드
▶ 부품 목록 : 스텝 모터(NK243-01AT, 모터뱅크, 1.8˚) , L293D
▶ 프로그램 (코드& 설명) :
#include <Stepper.h> // 스테핑 모터 라이브러리를 정의 한다
int in1Pin = 12; // [A] 상을 정의 한다
int in2Pin = 11; // [B] 상을 정의 한다
int in3Pin = 10; // [/A] 상을 정의 한다
int in4Pin = 9; // [/B] 상을 정의 한다
Stepper motor(200, in1Pin, in2Pin, in3Pin, in4Pin);
void setup() {
pinMode(in1Pin, OUTPUT); // [A] 상을 출력으로 지정한다
pinMode(in2Pin, OUTPUT); // [B] 상을 출력으로 지정한다
pinMode(in3Pin, OUTPUT); // [/A] 상을 출력으로 지정한다
pinMode(in4Pin, OUTPUT); // [/B] 상을 출력으로 지정한다
motor.setSpeed(30); // 스텝모터의 스피드 설정 함수 (RPM)
Serial.begin(9600); // 시리얼 통신 가능하도록 설정함
}
void loop() {
int steps = 200; // 스텝 수 지정(200X1.8도=360도)
if (Serial.available()) { // 시리얼 입력이 있는지 체크 함
int direct = Serial.parseInt();시리얼로 받은 정수문자를 정수로 반환
if (direct ==1) { // 입력값이 ‘1’ 이면 정회전
Serial.print("It's Normal Direction!\n\n");
motor.step(steps); } // 지정된 스텝만큼 모터 정회전
else if (direct ==2) { // 입력값이 ‘2’ 이면 역회전
Serial.print("It's Reverse Direction!\n\n");
motor.step(-steps); } // 지정된 스텝만큼 모터 역회전
else // 그외 입력값은 “ 아래 안내문자 출력 ”
Serial.print("You only choose '1' or '2'\n\n");
}
}
▶ 실행 영상 :
▶ 아두이노 소스 코드 다운로드 :
'아두이노 > 1. 아두이노기초' 카테고리의 다른 글
【 아두이노 기초 】 #35 스텝(Step Motor)모터 제어4 (28BYJ-48 & ULN2003) (0) | 2018.11.26 |
---|---|
【 아두이노 기초 】 #34 스텝(Step Motor)모터 제어3 (VR 속도제어) (0) | 2018.11.23 |
【 아두이노 기초 】 #32 스텝(Step Motor)모터 정회전 역회전 (0) | 2018.11.19 |
【 아두이노 기초 】 #31 스텝(Step Motor)모터의 이해 (9) | 2018.11.14 |
【 아두이노 기초 】 #30 서보(Servo) 모터 제어 하기 응용 (0) | 2018.11.12 |