/** <드론도전기> 에 있는 글은 드론 직접 제작에 도전하고, 시행착오를 겪은 글들의 모음입니다.
만약 드론을 직접 만들고 성공한 글을 확인하고 싶으시면 <how to, 아두이노드론> 카테고리를 방문해 주세요:) **/
1.아두이노 MEGA 2560로 소형 모터 작동시키기
우리는 아두이노 MEGA 2560과 L293D 모터 드라이브 쉴드를 핵심 부품으로 이용하기로 했다.
L293D:
우리가 이 모터 드라이브를 이용하는 이유는 아래 사진과 같이 4개의 DC모터를 이용할수 있기 때문이다.
아두이노 MEGA 2560:
우리가 UNO가 아닌 MEGA를 사용하는 이유는 적층시의 이점 때문이다. UNO의 경우에는 L293D만으로 거의 모든 핀을 사용하게 되어서 훨씬 여유 핀이 많은 MEGA를 사용하게 됐다.
2. 적층 방법
적층:
아두이노 MEGA 또는 UNO만으로는 자체적으로 제공하는 기능의 한계가 존재한다. 그래서 추가적인 기능을 위해 쉴드를 MEGA또는 UNO에 꽂아서 기능을 확장시키는 것을 말한다.
왼쪽 사진은 MEGA의 POWER 부분과 L293D의 POWER부분을 확대한 것이다.
적층시 RESET~VIN에 맞게 핀을 다음사진과 같이 꽂으면 된다.
L293D의 아날로그 핀(A0-A5)도 MEGA의 A0-A5에 맞게 꽂으면 된다.
반대편도 마찬가지로 맞춰서 끼워주면 된다. |
3. 소형 모터 연결
앞서 말했듯이 L293D에 아래 사진처럼 4개의 소형 모터를 연결시켰다. 그냥 단순하게 꽂고 드라이버로 조여주면 된다.
4. 아두이노 코딩
아두이노에서 쉴드를 이용하기 위해서는 라이브러리를 추가로 등록해줘야한다.
아래 파일을 다운받아서 압출을 풀어준 뒤 ‘C:\Program Files (x86)\Arduino\libraries’에 libraries로 넣어주면 된다.
코딩은 아래와 같다.
#include <SoftwareSerial.h> // L293D 모터 드라이브 라이브러리
#include <AFMotor.h> /#in/ 서보모터 라이브러리
AF_DCMotor motor_1(1); // 모터 1 객체
AF_DCMotor motor_2(2); // 모터 2 객체
AF_DCMotor motor_3(3); // 모터 3 객체
AF_DCMotor motor_4(4); // 모터 4 객체
void setup() {
motor_1.setSpeed(300); // 모터 1 속도 설정
motor_1.run(RELEASE); // 모터 1 돌리지 않는 상태
motor_2.setSpeed(300); // 모터 2 속도 설정
motor_2.run(RELEASE); // 모터 2 돌리지 않는 상태
motor_3.setSpeed(300); // 모터 3 속도 설정
motor_3.run(RELEASE); // 모터 3 돌리지 않는 상태
motor_4.setSpeed(300); // 모터 4 속도 설정
motor_4.run(RELEASE); // 모터 4 돌리지 않는 상태
}
void loop() {
// 모터 1
motor_1.run(FORWARD); // 정방향으로 회전
delay(1000);
motor_1.run(RELEASE); // 쉬기
delay(1000);
motor_1.run(BACKWARD); // 역방향 회전
delay(1000);
// 모터 2
motor_2.run(FORWARD); // 정방향으로 회전
delay(1000);
motor_2.run(RELEASE); // 쉬기
delay(1000);
motor_2.run(BACKWARD); // 역방향 회전
delay(1000);
// 모터 3
motor_3.run(FORWARD); // 정방향으로 회전
delay(1000);
motor_3.run(RELEASE); // 쉬기
delay(1000);
motor_3.run(BACKWARD); // 역방향 회전
delay(1000);
// 모터 4
motor_4.run(FORWARD); // 정방향으로 회전
delay(1000);
motor_4.run(RELEASE); // 쉬기
delay(1000);
motor_4.run(BACKWARD); //역방향 회전
delay(1000);
// 전체 모터 정방향 회전
motor_1.run(FORWARD);
motor_2.run(FORWARD);
motor_3.run(FORWARD);
motor_4.run(FORWARD);
delay(1000);
// 전체 모터 쉬기
motor_1.run(RELEASE);
motor_2.run(RELEASE);
motor_3.run(RELEASE);
motor_4.run(RELEASE);
delay(1000);
// 전체 모터 역방향 회전
motor_1.run(BACKWARD);
motor_2.run(BACKWARD);
motor_3.run(BACKWARD);
motor_4.run(BACKWARD);
delay(1000);
}
5. 결과
컴파일 완료- 각각의 모터가 돌아가는 거는 성공했다.
그런데 이유는 모르겠지만 동시에 4개의 모터를 가동시키는 경우 급격히 쉴드의 LED가 빛이 희미해 지더니 잘 안됐다. 그래서 인터넷에 찾아보니 USB만으로의 전력 공급은 모터 4개를 돌리는데 부족하다는 것을 찾았다. 그리하여 전원 공급 부분에 9V 짜리 문방구에서 파는 배터리를 연결했다.
실패 했다. 정말 낮은 속도로는 가능한 것 같기도 하다. 이번에는 배터리에 대해 모터에 대해 공부를 좀 해야될 것 같다.
V/R
윤
드론도전기 #10_20.02.15 (1) | 2020.02.28 |
---|---|
드론도전기 #9_20.02.11 (0) | 2020.02.28 |
드론도전기 #8_20.02.06 (0) | 2020.02.20 |
드론도전기 #7_20.02.04 (0) | 2020.02.20 |
댓글 영역