코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-14 17:23:07
출처 : 다양한 쉴드의 종류들 - sparkfun
아두이노는 스스로도 여러가지 기능을 컨트롤 할수 있지만 분명 그 한계가 존재합니다.
하지만 다양한 쉴드를 활용하여 기능을 확장하거나 좀 더 편리한 프로토타입 제작을 할 수 있습니다.
쉴드(shield)란 마치 컴퓨터에 다양한 응용프로그램을 설치하여 각기 다른 목적으로 사용되는것과 같습니다.
쉴드의 종류는 모터와 같은 물리적인 입출력을 제어하는 모터 쉴드부터,
Xbee와 같은 무선통신을 위한 통신 쉴드도 있으며 이밖에도 아주 다양한 용도의 쉴드가 있습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | 아두이노 호환보드 |
2 | 아두이노 모터 쉴드 | 1 | 모터 쉴드 |
3 | DC 모터 | 1 | DC 모터(구동전압 5V) |
4 | 외부 전원(5V-9V)어댑터 | 1 | 외부 전원(5V-9V) |
부품명 | 오렌지 보드 | 모터 쉴드 | 외부 전원 | DC 모터 |
파트 | x1 | x1 | x1 | x1 |
연결 방법은 사진과 같이 아두이노 보드 위에 적층해 주시면 됩니다.
DC 모터의 +,- 단자를 채널 A의 +,- 에 연결해 줍니다.
안정적인 전원공급을 위해 외부 전원의 +,-를 스크류 단자의 Vin,GND에 연결해 줍니다.
아래의 코드를 아두이노에 업로드 합니다.
/*
출처 : 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);
}
모터제어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를 절단 해주시면 됩니다.
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
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!