1. BLDC 모터 개요
드론에서는 BLDC 모터가 사용 된다. BLDC는 BrushLess DC 모터로 Brush가 없는 모터이다. 흔히 보이는 모터는 Brush가 있는 모터이다. 다음은 DC모터와 BLDC 모터에 대한 구조 그림이다. 일반 DC 모터는 브러시가 정류자를 통해서 코일에 연결된다. 일반 DC 모터의 경우 브러시와 정류자의 마찰과 열로 인해서 수명과 효율이 떨어진다. BLDC 모터는 전원의 방향을 바꿔주는 역활을 하는 브러시가 없다. 그 대신 BLDC용 모터 컨트롤러에서 전원의 방향을 바꿔주게 된다.
BLDC는 수명이 길고 효율이 좋은데, 컨트롤러가 필요하다. 이를 ESC라고 한다.
본 포스팅에서는 다음과 같은 DJI 사의 모터와 ESC 컨트롤러를 사용한다.
1) 모터 사양은 다음과 같다.
출처: https://www.robomart.com/dji-2212-920kv-brushless-motor-for-multicopter
DJI 2212 920KV Brushless Motor for Quadcopter/Multirotor/Drone
920Kv Brushless DC Motor is a Brushless DC electric motor (BLDC motors, BL motors) also known as electronically commutated motors (ECMs, EC motors) are synchronous motors that are powered by a DC electric source via an integrated inverter switching power supply, which produces an AC electric signal to drive the motor.
Features of DJI 2212 920KV Brushless Motor:
- KV(rpm/v): 920.
- Max Power: 370W.
- Max Thrust: 1200 grams.
- Weight: 53 grams.
- Shaft Diameter: 4mm.
- Shaft Length: 49mm Recommended Propeller for battery: 12x4.5 for 2S battery; 10x4.5 for 4S battery.
- Battery: 2S-3S Li-Po.
- ESC (A): FMT 30A (recommended).
Applications of DJI 2212 920KV Brushless Motor:
- Used in light weight quadcopters.
Note: Images shown is only for representation. The actual product may vary with the picture shown.
2) ESC 사양은 다음과 같다.
http://download.dji-innovations.com/downloads/flamewheel/en/f450_user_manual_v1.7_en.pdf
2. H/W 연결
ESC의 Pintout은 다음과 같다
다음의 그림에서 Signal 은 Arduino Pro Mini의 9번 Pin에, GND는 arduino pro mini의 gnd에 연결한다.
3. Programming
ESC는 PWM(Pulse Width Modulation)으로 따라서 모터를 제어 한다. PWM은 Signal의 Period와 해당 Period에서의 Duty Cycle을 이용해서 제어 한다. Period는 초당 파형의 개수이다. 그리고 Duty Cycle은 해당 파형에서 얼마나 High 를 보낼 것인가를 결정하는 것이다. 아래 그림을 참고하면 된다.
Arduino 에서 TimerOne 라이브러리를 이용하면 PWM을 쉽게 제어 가능하다. Arduino IDE에서 [스케치] -> [라이브러리 포함하기] -> [라이브러리 관리] 로 들어가면 라이브러리 매니저가 나타난다. 여기에서 TImerOne을 입력하고 설치한다. TimerOne의 API는 다음에서 확인 가능하다.
http://playground.arduino.cc/Code/Timer1
이 라이브러리를 이용한 BLDC 모터 제어코드는 다음과 같다.
14라인] Timer1.initialize 로 PWM Period를 설정한다. 450Hz 로 Signal을 보낸다고 하면 Period 는 약 2222 microsecond 가 나온다.
16라인] ESC Calibration을 위해서 2초간 Throttle 중간 값(512) 으로 신호를 보낸다.
loop에서는 Serial에서 숫자를 받아서 PWM Duty Cycle을 조정한다.