부품설명

자주 사용하는 부품들의 사용법에 대하여 알아봅니다.

모터 쉴드-DC 모터의 속도와 방향 제어하기

2014-08-14 17:23:07

개요


출처 : 다양한 쉴드의 종류들 - sparkfun


아두이노는 스스로도 여러가지 기능을 컨트롤 할수 있지만 분명 그 한계가 존재합니다.
하지만 다양한 쉴드를 활용하여 기능을 확장하거나 좀 더 편리한 프로토타입 제작을 할 수 있습니다.

쉴드(shield)란 마치 컴퓨터에 다양한 응용프로그램을 설치하여 각기 다른 목적으로 사용되는것과 같습니다.
쉴드의 종류는 모터와 같은 물리적인 입출력을 제어하는 모터 쉴드부터,
Xbee와 같은 무선통신을 위한 통신 쉴드도 있으며 이밖에도 아주 다양한 용도의 쉴드가 있습니다.

출처 : 다양한 쉴드가 적층되어 사용되어진 예 - shieldlist

그리고 쉴드를 적층할 때 사용하는 핀 번호가 중복되지 않는다면
여러개의 쉴드를 함께 사용할수 있습니다.


본 예제에서는 모터쉴드의 사용법을 알아보고, 간단한 코드를 통해 DC모터의 방향과 속도를 제어해 보겠습니다.


 


부품목록
 

NO 부품명 수량 상세설명
1 오렌지 보드 1 아두이노 호환보드
2 아두이노 모터 쉴드 1 모터 쉴드
3 DC 모터 1 DC 모터(구동전압 5V)
4 외부 전원(5V-9V)어댑터 1 외부 전원(5V-9V)
 
부품명 오렌지 보드 모터 쉴드 외부 전원 DC 모터
파트 x1 x1 x1 x1

 

 

하드웨어 Making

 

회로도


 

브레드보드 레이아웃





연결 방법은 사진과 같이 아두이노 보드 위에 적층해 주시면 됩니다.


DC 모터의 +,- 단자를 채널 A의 +,- 에 연결해 줍니다.


안정적인 전원공급을 위해 외부 전원의 +,-를 스크류 단자의 Vin,GND에 연결해 줍니다.

 

 

소프트웨어 Coding

아래의 코드를 아두이노에 업로드 합니다.

 

/*
	출처 : Motor Shield 1-Channel DC Motor Demo
	by Randy Sarafan
	한글주석 : www.kocoafab.cc
	
	For more information see:
	http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial
*/
void setup() {
	// 12번핀을 출력으로 설정합니다 12번핀은 채널 A에서 방향제어를 담당합니다.
	pinMode(12,OUTPUT); 
	// 9번핀을 출력으로 설정합니다. 강제 정지 기능을 담당합니다.
	pinMode(9,OUTPUT);
}

void loop() {
	// 12번을 HIGH 상태로 두고
	digitalWrite(12,HIGH); 
	// 강제 정지 기능은 LOW 상태로 두며
	digitalWrite(9,LOW);
	// 100의 값으로 PWM을 제어합니다.
	analogWrite(3,100);
	
	//3초간 대기합니다.
	delay(3000);
	
	// 강제 정지 기능을 실행합니다.
	digitalWrite(9,HIGH);
	// 1초간 대기합니다.
	delay(1000);
	
	// 12번핀을 LOW 즉, 역방향으로 회전합니다.
	digitalWrite(12,LOW);
	// 강제 정지 기능을 LOW상태로 둡니다.
	digitalWrite(9,LOW);
	// 50의 값으로 PWM (속도)를 조절합니다.
	analogWrite(3,50);
	// 3초간 대기합니다.
	delay(3000);
	// 강제 정지 기능을 실행합니다.
	digitalWrite(9,HIGH);
	// 1초간 대기합니다.
	delay(1000);
}

 

 


소프트웨어 & 하드웨어 설명



1.사전 설명

아두이노 모터 쉴드는 5v - 12v의 동작 전압을 지니고 있으며, 

 

모터제어IC칩은 L298P (두 개의 DC모터 혹은 1개의 스테핑 모터의 제어가 가능합니다.)를 사용하며

 

전류 센싱은 1.65V/A이며 강제 정지 기능 (brake)기능 이 탑재되어 있습니다.

모터의 전원은 반드시 별도로 연결해 주어야 하는데, 아두이노의 2.1파이 DC잭에 연결하거나 쉴드 하단의 스크류단자에 연결해 주어도 됩니다.

 

Fuction Ch.A Ch.B  
Direction D12 D13 방향제어 담당
PWM D3 D11 속도제어 담당
Brake D9 D8 HIGH일때 모터 강제 정지
Current Sensing A0 A1 전류 센싱

 


*모터의 전원이 9V이상일 때는 Vin은 분리 해주시는것이 좋으며 쉴드 뒷면의 vin connector를 절단 해주시면 됩니다.



2.스케치 설명

delay의 시간으로 모터가 회전하는 상태의 시간을 제어합니다. 또한 강제 정지 기능을 사용하면 모터의 속도는 급격히 떨어집니다.


아날로그3번핀의 값을 바꿔보며 모터의 속도가 어떻게 변화하는지 관찰해 보세요.

 

void setup() {
	// 12번핀을 출력으로 설정합니다 12번핀은 채널 A에서 방향제어를 담당합니다.
	pinMode(12,OUTPUT); 
	// 9번핀을 출력으로 설정합니다. 강제 정지 기능을 담당합니다.
	pinMode(9,OUTPUT);
}

void loop() {
	// 12번을 HIGH 상태로 두고
	digitalWrite(12,HIGH); 
	// 강제 정지 기능은 LOW 상태로 두며
	digitalWrite(9,LOW);
	// 100의 값으로 PWM을 제어합니다.
	analogWrite(3,100);
	
	//3초간 대기합니다.
	delay(3000);
	
	// 강제 정지 기능을 실행합니다.
	digitalWrite(9,HIGH);
	// 1초간 대기합니다.
	delay(1000);
	
	// 12번핀을 LOW 즉, 역방향으로 회전합니다.
	digitalWrite(12,LOW);
	// 강제 정지 기능을 LOW상태로 둡니다.
	digitalWrite(9,LOW);
	// 50의 값으로 PWM (속도)를 조절합니다.
	analogWrite(3,50);
	// 3초간 대기합니다.
	delay(3000);
	// 강제 정지 기능을 실행합니다.
	digitalWrite(9,HIGH);
	// 1초간 대기합니다.
	delay(1000);
}

 

 

kocoafabeditor

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

모터 쉴드, DC 모터, 아두이노, 오렌지 보드