IoT의 이해
전병현 교수
7주차 2강. DC 모터 제어
학습내용
학습목표
1. 트랜지스터와 다이오드 2. L293B IC
3. DC 모터 제어
1. 트랜지스터와 다이오드에 대하여 설명할 수 있다.
2. L293B와 L293D IC에 대하여 설명할 수 있다.
3. DC 모터를 제어할 수 있다.
1. 트랜지스터와 다이오드(1)
◉ 다이오드의 개념
다이오드 종류 기능
정류다이오드
•
한쪽으로만 흐름스위칭 다이오드
•
고속 ON / OFF 스위치를 응용 정전압 다이오드•
전압을 일정하게 유지해 줌가변 용량 다이오드
•
FM변조와 AFC동조에 가변용량 특성을 응용• 다이오드 : 전류를 한쪽 방향으로 흐르게 하는 반도체
◉ 다이오드 종류와 기능
다이오드 종류 기능
터널 다이오드
•
마이크로 발진에 음저항 특성을 응용 발광 다이오드•
빛과 열 발생(LED)MES(쇼트키)다이오드
•
금속과 반도체를 결합하여 낮은 전압에서도 사용이 가능수광 다이오드
•
광검출 특성을 이용해 광 센서로 사용브릿지 다이오드
•
다이오드 4개 연결한 브릿지 구조.입력되는 극성이 변경되어도 출력되는 극성은 언제나 같음
칩 다이오드
•
반도체 칩 모양으로 만듦. 역전류 방지 및 스위칭에 사용1. 트랜지스터와 다이오드(2)
◉ 트랜지스터의 개념
1. 트랜지스터와 다이오드(3)
NPN PNP
E : emitter B : base
C : collector
전류 흐름 : C→B→E 전류 흐름 : E→B→C
• 트랜지스터 : 게르마늄, 규소 따위의 반도체를 이용하여 전자
신호 및 전력을 증폭하거나, 스위칭 하는데 사용되는 반도체
◉ L293B IC 소개
2. L293B IC(1)
L293B 핀 배치도
1 2 3 4 5 6 7 8
16 15 14 13 12 11 10 9
L 293B
Motor1 Enable Input 1-1 Output 1-1 GND GND Output 1-2 Input 1-2 VS(35V Max)
VSS(4.5 ~ 36V) Input 2-2 Output 2-2 GND GND Output 2-1 Input 2-1 Motor2 Enable
• DC 모터에서 정회전과 역회전을 자동으로 하기 위하여 사용
◉ L293B IC 핀 배치도(1)
2. L293B IC(2)
핀 번호 핀 설명
1
•
Motor1 Enable•
DC 모터는 회전 속도 결정•
PWM을 이용하여 AnalogWrite(핀 번호, 128) 또는 50% 회전 조절•
HIGH와 LOW로 모터를 작동2
•
모터 Input 1-1•
Input 1-1, 1-2 모터의 회전 방향 결정3
•
모터 Output 1-1•
Output 1-2 핀과 DC 모터에 2개 연결선 중 한쪽에 연결 4-5•
GND모터 회전 방향 Input 1-1 Input 1-2
정방향 HIGH LOW
역방향 LOW HIGH
◉ L293B IC 핀 배치도(2)
2. L293B IC(3)
핀 번호 핀 설명
6
•
모터 Output 1-2•
Output 1-1 핀과 DC 모터에 2개 연결선 중 한쪽에 연결 7•
모터 Input 1-2•
Input 1-1 참조8
•
모터 구동 전원 최대 35V 9-10-11 • Motor1 참조12-13
•
GND14-15
•
Motor1 참조16
•
모터 구동 IC 구동 전원(4.5~36V)이미지
준비물 브레드 보드(1개) 아두이노 보드(1개) 9V 건전지(1개) DC모터(1개)
이미지
준비물 플로펠러(1개) 10KΩ저항,
다이오드(각1개) 푸시버튼(1개) npn형
트랜지스터(1개)
3. DC 모터 제어(1)
◉ 실습 준비물
◉ 회로도 구성(1)
3. DC 모터 제어(2)
확대
•출처 : AUTODESK - TINKERCAD. https://www.tinkercad.com
◉ 회로도 구성(2)
3. DC 모터 제어(3)
•출처 : AUTODESK - TINKERCAD. https://www.tinkercad.com
1 2
3 4
3
◉ 회로도 구성(3)
3. DC 모터 제어(4)
•출처 : AUTODESK - TINKERCAD. https://www.tinkercad.com
GND/5V전원공급
INPUT/OUTPUT
◉ 실습 소스
3. DC 모터 제어(5)
int pushButton = 2;
int motorControl = 9;
int speed=0;
void setup() {
pinMode(pushButton, INPUT);
pinMode(motorControl, OUTPUT);
}
void loop() {
if (digitalRead(pushButton) == HIGH) { speed = 255;
analogWrite(motorControl, speed);
delay(2000);
}
speed = 0;
analogWrite(motorControl, speed);
delay(1000);
}
학습하기가 끝났습니다.
다음페이지 버튼을 클릭하여
평가문항을 풀어보세요. 프로그램 실습
※ 자료실에서 프로그램 소스 코드를 다운로드 받으세요.
실습
1. DC 모터 제어(1)
1. 실습 준비물 : 아두이노 보드(1개), 브레드 보드(1개), DC 모터(1개), 9V 건전지(1개), 10kΩ 저항(1개), 다이오드(1개), 푸시 버튼(1개), npn형 트랜지스터(1개)
2. 외부 전원을 활용하여 DC 모터를 회전시킨다.
◉ 실습 준비물
실습
1. DC 모터 제어(2)
1. 트랜지스터(C1815 Y011), 다이오드(N1994)를 활용하여 데이터 시트에 따라 회로도를 구성한다.
2. DC 모터의 전원이 430mA이므로 별도의 외부 전원을 활용한다.(9V 건전지) 3. int pushButton = 2 : 푸시 버튼과 디지털 2번 핀 사용을 선언한다.
4. int motorControl = 9 : 트랜지스터 E : GND, C : 다이오드, B : 디지털 9번 핀과 연결을 선언한다.
◉ 실습 소스(1)
실습
1. DC 모터 제어(3)
5. if (digitalRead(pushButton) == HIGH : 푸시 버튼 값을 읽어 온다.
6. 푸시 버튼이 HIGH이면, speed = 255, DC 모터의 속도를 255로 설정한다.
7. analogWrite(motorControl, speed) : DC 모터를 255 속도로 회전시킨다.
◉ 실습 소스(2)
실습
1. DC 모터 제어(4)
1. 푸시 버튼이 HIGH가 되면 DC 모터가 회전한다.