IoT의 이해
전병현 교수
7주차 3강. 스텝 모터와 서보 모터 제어
학습내용
학습목표
1. 스텝 모터 제어 2. 서보 모터 제어
1. 스텝 모터를 제어할 수 있다.
2. 서보 모터를 제어할 수 있다.
이미지
준비물 아두이노 보드(1개)
이미지
준비물 9V 건전지(1개) 28BYJ-48 스텝 모터, 쉴드셋
1. 스텝 모터 제어(1)
◉ 실습 준비물
◉ 회로도 구성
1. 스텝 모터 제어(2)
회로도 확대
• 모터 쉴드 IN1→10번 핀, IN2→11번 핀, IN3→12번 핀, IN4→13번 핀
•출처 : AUTODESK - TINKERCAD. https://www.tinkercad.com
◉ 실습 소스(1)
1. 스텝 모터 제어(3)
int Pin0 = 10; int Pin1 = 11;
int Pin2 = 12; int Pin3 = 13;
int _step = 0; boolean dir = true;
void setup() {
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
}
void loop() { switch (_step) {
case 0:
digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH);
break;
◉ 실습 소스(2)
1. 스텝 모터 제어(4)
case 1:
digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH); digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW);
break;
◉ 실습 소스(3)
1. 스텝 모터 제어(5)
case 5:
digitalWrite(Pin0, HIGH); digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW);
break;
case 6:
digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW);
break;
case 7:
digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH);
break;
default:
digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW);
break;
}
◉ 실습 소스(4)
1. 스텝 모터 제어(6)
if (dir) { _step++;
} else { _step--;
}
if (_step > 7) { _step = 0;
}
if (_step < 0) { _step = 7;
}
delay(1);
}
이미지
준비물 아두이노 보드(1개)
이미지
준비물 서보 모터(1개) 점프선 소량
2. 서보 모터 제어(1)
◉ 실습 준비물
2. 서보 모터 제어(2)
◉ 회로도 구성
•출처 : AUTODESK - TINKERCAD. https://www.tinkercad.com
• 5V, GND, 데이터 선은 9번 핀에 연결
2. 서보 모터 제어(3)
◉ 실습 소스
#include <Servo.h> // 서보 모터 헤드 추가 Servo myservo; // 서보 모터 객체
int pos = 0; // 회전에 쓰는 변수 void setup() {
myservo.attach(9); // 서보 모터명.attach(핀 번호) }
void loop() {
for (pos = 0; pos <= 180; pos += 1)
myservo.write(pos); // 0~180도까지 1씩 증가 delay(15);
}
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos); // 180~0도까지 1씩 감소 delay(15);
} }
학습하기가 끝났습니다.
다음페이지 버튼을 클릭하여
평가문항을 풀어보세요. 프로그램 실습
※ 자료실에서 프로그램 소스 코드를 다운로드 받으세요.
실습
1. 스텝 모터 제어(1)
1. 실습 준비물 : 아두이노 보드(1개), 브레드 보드(1개), 스텝 모터(1개), 9V 건전지(1개) 2. Half Step으로 한번은 1개의 축을, 한번은 2개의 축을 사용하여 모터를 회전시킨다.
◉ 실습 준비물
실습
1. 스텝 모터 제어(2)
1. 모터 쉴드 1번 핀과 디지털 10번 핀을, 2번 핀과 디지털 11번 핀을, 3번 핀과 디지털 12번 핀을 4번 핀과 디지털 13번을 연결한다.
2. int _step = 0, boolean dir = true : _step 초기 값 0과 dir의 논리 값 true를 설정
◉ 실습 소스(1)
실습
1. 스텝 모터 제어(3)
3. case 0문에서는 3번 핀에 HIGH이고, case 1문에서는 2번, 3번 핀에 HIGH로, 한번은 1개 축이 한번은 2개의 축에 전원이 입력되어 모터를 회전시킨다.
◉ 실습 소스(2)
실습
2. 서보 모터 제어(1)
1. 실습 준비물 : 아두이노 보드(1개), 브레드 보드(1개), 서보 모터(1개) 2. 0~180도 각도로 좌회전, 우회전하면서 모터를 회전시킨다.
◉ 실습 준비물
실습
2. 서보 모터 제어(2)
1. 서보 모터 회로도는 5v의 전원과, GND, 디지털 9번 핀과 연결한다.
2. #include <Servo.h> : 서보 모터 헤드 추가
3. for (pos = 0; pos <= 180; pos += 1) : for문을 사용하여 0~180까지 1씩 증가 4. myservo.write(pos) : 0~180도까지 1씩 증가
◉ 실습 소스(1)
실습
2. 서보 모터 제어(3)
5. for (pos = 180; pos <= 0; pos -= 1) : for문을 사용하여 0~180까지 1씩 감소 6. myservo.write(pos) : 180~0도까지 1씩 감소