A PHP Error was encountered

Severity: Notice

Message: Undefined index: HTTP_ACCEPT_LANGUAGE

Filename: core/KF_Controller.php

Line Number: 155

DC모터 돌리기

초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

DC모터 돌리기

2015-01-16 14:09:25

개요

1) DC모터란 무엇인가?
 
DC모터는 직류(DC: Direct Current)를 전원으로 동작하는 전기모터로 직류모터라고도 합니다. 외부의 고정된 부분 (고정자)에 영구자석을 배치하고 내부의 회전체에 코일을 사용하여 구성합니다. 회전체 (회전자/전기자)에 흐르는 전류의 방향을 전환함으로써 발생하는 자기장과 자석 자기장의 상호 반발력을 이용하여 회전력을 얻습니다. 
 
DC모터는 다른 구동장치에 비해 가볍고 구조가 간단하여 선풍기, 냉장고 등 가전제품부터 전기자동차, 고속 열차 등 운송수단까지 광범위하게 사용되고 있습니다.
 

 

 

 

2) DC모터 사용방법

 

 

 

 
DC모터는 2개의 커넥터나 터미널 블럭을 사용하여 연결할 수 있습니다. DC모터는 양방향으로 동작하기 때문에 어떤 선을 연결할지 DC모터의 극성은 크게 신경을 쓰지 않아도 됩니다. DC모터에 연결된 전류의 방향에 따라 회전 방향만 변경됩니다. 
 
DC모터의 회전속도는 코일에 흐르는 전류와 정비례하기 때문에, DC모터의 구동전압을 변화시키면 회전속도가 변화됩니다.
 
DC모터 구동시(정지시) 역전류가 발생할 수 있습니다. 역전류란 반대 방향으로 흐르는 전류를 말하며, 큰 전위차를 만들기 때문에 오렌지보드를 포함한 전자부품에 손상을 줄 수 있습니다. 따라서 다이오드를 달아 역전류를 막아줍니다. 
 

부품 목록

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 DC모터 1  
3 스위치 1  
4 330Ω 저항 1  
5 다이오드 1  
6 트랜지스터 1  
7 브레드 보드 1  
8 점퍼 케이블 9  

 

부품명 오렌지 보드 DC모터 스위치 330Ω 저항
파트
  다이오드 트랜지스터 브레드 보드 점퍼 케이블
파트

 

하드웨어 making

브레드 보드

4) 오렌지보드 연결
 
1. 오렌지보드의  5V핀을 브레드보드의 +버스에 연결합니다.
2. 오렌지보드의 GND핀을 브레드보드의 - 버스에 연결합니다. 
3. DC모터의 커넥터를 세로 방향으로 연결합니다
4. 트랜지스터의 평평한 면이 오렌지보드를 향하게하여 세로로 꽂습니다.
5. 트랜지스터의 가운데 단자 (Base)에 330Ω 저항을 연결합니다. 
6. 다이오드를 DC모터 상단 커넥터에 연결합니다. 다이오드 띠가 아래를 향하게 합니다.
7. 스위치를 그림과 같이 양쪽 IC영역에 걸치게 꽂습니다.
 

 

 

 

8. 트랜지스터의 첫번째 단자 (Emitter)를 - 버스에 연결합니다.

 

 

 

9. 저항이 연결된 트랜지스터의 2번째 단자 (Base)를 오렌지보드 3번핀에 연결합니다.
10. 트랜지스터의 세번째 단자 (Collector)를 DC모터의 상단 커넥터에 연결합니다. 
11. DC모터의 하단 커넥터를 +버스에 연결합니다. 
12. 스위치의 왼쪽 하단 단자를 오렌지보드 6번핀에 연결합니다. 
13. 스위치의 오른쪽 상단 단자를 - 버스에 연결합니다.
 

 

 

 

 

전자 회로도



 

 

 

 

소프트웨어 coding

/*
 제목		: DC모터 돌리기
 내용		: 스위치를 누를때마다 DC모터가 회전하도록 해봅시다.
 */

// DC모터를 3번 핀으로 설정합니다.
int motor = 3;
// 스위치를 6번 핀으로 설정합니다.
int sw = 6;

// DC모터의 회전 속도를 정의합니다.
// 디저털 핀으로 0~255 범위의 값으로 DB모터의 속도를 제어할 수 있습니다.
// 모터가 제대로 동작하지 않는다면, speed 값을 상향조정합니다. (예 200)
int speed = 127;

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
	// DC모터가 연결된 핀을 OUTPUT으로 설정합니다.
	pinMode(motor, OUTPUT);
	// 스위치가 연결된 핀의 모드를 INPUT_PULLUP 상태(초기 로직레벨을 HIGH로 설정)로 설정합니다.
	// 설정된 디지털 핀은 아래와 같은 값을 반환합니다.
	// 스위치가 열려있다면 (누르지 않은 상태) HIGH
	// 스위치를 닫혀있다면 (누른 상태), LOW
	pinMode(sw, INPUT_PULLUP);
}

// setup() 함수가 호출된 이후, 호출되는 함수입니다.
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
	// 스위치가 연결된 핀의 로직레벨이 LOW라면,
	// 스위치가 닫혀있는 상태(누른 상태) 이므로, 아래의 블록을 실행합니다.
	if (digitalRead(sw) == LOW) {
		// DC모터가 연결된 핀으로, 지정된 speed로 회전하도록 설정합니다.
		// 본 예제에서 사용된 127이란 값은, 디지털 핀으로 출력 할 수 있는 최대값 255의 절반에 해당되므로,
		// DC모터가 5V 전류로 낼 수 있는 최대 회전 속도의 절반으로 해석 할 수 있습니다.
		// 이는 디지털로 아날로그 신호를 보내는 펄스 폭 모듈레이션(PWM)에서 duty-cycle이 50%인 것으로 설정됩니다.
		// 오렌지보드 디지털 핀의 PWM 주파수를 약 500Hz로 가정하면, 1초에 255번만 HIGH 신호를 보내는 것과 같습니다.
		analogWrite(motor, speed);
	}
	// 스위치가 연결된 핀의 로직레벨이 HIGH라면,
	// 스위치가 열려있는 상태(누르지 않은 상태) 이므로, 아래의 블록을 실행합니다.
	else {
		// DC모터가 연결된 핀으로, duty-cycle을 0%로 설정하여 DC모터를 멈추게 합니다.
		analogWrite(motor, 0);
	}
}

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

오렌지 보드, DC모터, 스위치