【 아두이노 기초 】 #34 스텝(Step Motor)모터 제어3 (VR 속도제어)
지난시간 스텝모터를 시리얼 통신을 이용해 제어해 보았다. 만약 스텝모터 동작 원리를 참고하려면 여기 글을 참고하라. ( ☞ 스텝모터의 이해 )
이번 시간에는 스텝모터의 속도를 VR(가변 저항)을 이용하여 제어해 볼 것이다.
▶ 실험에 사용되는 스텝 모터 자료 ( 모터 뱅크, NK243-01AT )
▶ 스텝모터 구동 원리
▶ 실습 목표 :
스텝모터를 VR(가변 저항: 레버를 회전 시키면 저항 값이 변하는 소자)을 이용해서 스텝모터의 회전 속도를 느리게 혹은 빠르게 변화 시켜 보고자 한다.
High/Low와 같은 On/Off 제어가 아니기 때문에 Digital 포트가 아닌 아두이노의 Analog 포트를 이용해서 제어 해야 한다. 실습에서는 A0 포트를 이용한다.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
L293D 모터드라이버 IC의 연결을 위해 아래 이미지를 참고 하라.
▶ 부대품 목록 : 아두이노 보드, 브레드 보드
▶ 부품 목록 : 스텝 모터(NK243-01AT, 모터뱅크, 1.8˚) , L293D, VR(100㏀~100㏀ 사이값)
▶ 프로그램 (코드& 설명) :
#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 ReadVR=analogRead(A0); //아날로그 포트 A0에서 VR값 읽기
int motorSpeed = map(ReadVR,0,1023,0,100); //10bit값을 맵핑
if (motorSpeed >0) { // VR값이 0 이상 일 때 모터동작
motor.setSpeed(motorSpeed); //맵핑된 VR값으로 속도값 입력
motor.step(200); //모터 스텝 수 지정(200X1.8도=360도)
delay(1000); //한 바퀴 구분을 위한 시간지연 (1초)
}
}
▶ 실행 영상 :
▶ 아두이노 소스 코드 다운로드 :
'아두이노 > 1. 아두이노기초' 카테고리의 다른 글
【 아두이노 기초 】 #36 스텝(Step Motor)모터 제어5 (버튼제어) (1) | 2018.11.28 |
---|---|
【 아두이노 기초 】 #35 스텝(Step Motor)모터 제어4 (28BYJ-48 & ULN2003) (0) | 2018.11.26 |
【 아두이노 기초 】 #33 스텝(Step Motor)모터 제어2 (시리얼통신제어) (0) | 2018.11.21 |
【 아두이노 기초 】 #32 스텝(Step Motor)모터 정회전 역회전 (0) | 2018.11.19 |
【 아두이노 기초 】 #31 스텝(Step Motor)모터의 이해 (9) | 2018.11.14 |