MPU6050 센서는 가속도계(Accelerometer)와 자이로(Gyroscope)가 1개의 칩에 모두 포함하고 있는 6DOF(Degrees of Freedom) MEMS(Micro Electro Mechanical Systems) 센서로, I2C(Inter Integrated Circuit) 통신 프로토콜을 통해서 데이터를 가져올 수 있습니다. 다음은 MPU6050의 메뉴얼입니다.


http://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf



MPU6050의 특징입니다.

      • 3-axis Accel + 3-axis Gyroscope DMP(Digital Motion Processor)

      • ±1% Temperature Sensor( Digital output )

      • 7개의 16bit ADC를 내장하여 16bit 정교한 기울기 출력

      • ±250,±500,±1000,±2000(˚/sec) dps 자이로, ±2,±4,±8,±16g 가속도 (User programable)

      • 1024byte fifo buffer

      • I2C 400KHz

      • Programable Interrupts

      • High-G Interrupts

      • VDD: 2.375V ~ 3.46V

      • Gyroscope Operating current 3.6mA( Standby 5uA )

      • Accelerometer Operating current 500uA( Low Power mode 10uA~ )

      • Programable Low-Pass Filter

      • -40℃ ~ +85℃ (TA 25℃ )

      • StartUp time 30msec

      • Self Test

      • I2C Address : 0x68 ( except R/W 0x1 )

      • I2C Master or Slave

      • Auxiliary I2C bus for communicating to an off-chip 3-Axis digital output magnetometer(지자계 센서) or other sensors.


MPU6050은 24pin QFN 패키지로 내부 timing generator를 사용하지 않는 경우 외장 32.768kHz 혹은 19.2MHz 클럭이 필요합니다. 따라서 사용이 용이하도록 주변 소자를 내장한 MPU6050의 Breakout 보드가 있으며 GY-521의 그 중의 하나입니다.


GY-521의 회로도


GY-521 모듈

(가속도계와 자이로의 방향은 MPU6050 칩의 1번 핀을 기준으로 3차원 축이 결정되며 MPU6050과 동일함을 알 수 있습니다)


MPU6050(GY-521)은 가속도계를 포함하므로 가속도를 측정하는 센서는 아닙니다. 단지 가속도를 이용하여 3차원 공간상 X, Y 그리고 Z 축을 중심으로 기울어진 각도(기울기)를 얻는 센서입니다. 가속도는 중력 방향과의 반대 방향일 때 양(+)이고 아래에서 각 축에 곡선 화살표는 자이로의 회전방향을 나타냅니다. 가속도계와 자이로 외에도 온도도 측정할 수 있는데 이는 이와같은 센서가 온도에 따라 약간 변화하기 때문에 이를 보정하는 목적으로 제공합니다.


만일 MPU6050을 비행기에 탑재하고 진행방향이 Y축 방향과 같다면 가속도계 출력 AccX는 롤(Roll), AccY는 피치(Pitch)그리고 AccZ는 요(Yaw)가 됩니다. 즉 AccX는 X축을 기준으로 기울어진 각도를 의미합니다. 가속도계는 X, Y축에 대해서 기울어진 정도를 중력가속도[g]의 단위로 출력합니다. 이때 기준 방향은 중력방향입니다. 그러나 Z축이 중력방향이 일치하는 경우 요를 구할 수 없다는 것입니다.


만일 움직이지 않고 이동하는 경우 진행 방향의 가속도의 영향으로 중력 방향이 변하게 되어 부정확하게 된다는 것입니다. 이러한 이유로 자이로의 측정 결과를 참조하게 되는데, 자이로는 짧은 시간은 정확하기 때문입니다. 하지만 긴 시간에 대해서는 자이로 센서가 측정시 함유하는 잡음 등을 각속도를 적분하여 기울기를 얻기 때문에 적분하는데, 이 과정에서 오차(적분상수)는 누적되고 시간에 따라 자이로 측정값은 드리프트하게 됩니다. 이때 변화분을 bias라고도 부릅니다.



위 그림에서 X축을 중심으로 회전한 각도 φ와 Y축을 중심으로 회전한 각도 ρ의 계산식입니다. 만일 X축 자체가 기울어지지 않았다면, 중력이 X축 상에 기여도는 없어 φ는 arctan(Ay/Az)으로 간략하게 됩니다. 여기서 Ax, Ay, Az는 AccX, AccY, AccZ입니다. ρ에서 음의 부호는 X축 중심으로 회전각도는 Y축이 위쪽으로 기울어져야 양이지만, Y축 중심으로 회전각도는 X축이 아래로 기울어져야 양이기 때문입니다.


MPU6050을 사용해 실시간으로 기울기를 요구하는 시스템은 가속도계의 측정값과 자이로의 측정값을 적절히 잡음을 고려하여 융합하고 최적의 가장 정확한 기울기를 얻어냅니다. 이때 사용하는 필터는 보상필터(Complementary filter; 혹은 상보필터)와 칼만필터(Kalman filter)로 알려집니다.


MPU6050은 7개의 채널에 대해서 16bit 크기의 값을 출력해주는 고성능 ADC를 내장하므로 각 축의 센서 출력값에 대해서 int16_t(-32768~32767)의 자료형으로 접근해야 합니다. 또한 MPU6050은 update rate(sampling time)이 가속도, 자이로에 대해서 각각 4~1000Hz, 4~8000Hz으로 출력값을 제공합니다.


MPU6050은 내부 레지스터를 이용해서 출력 값의 범위를 조정할 수 있습니다. 예를 들어 가속도계에서 AFS_SEL=0으로 설정함으로써 출력은 ±2[g]까지 나타낼 수 있으며 이를 2byte 크기로 나타내게 됩니다. 만일 AFS_SEL=0과 FS_SEL=0을 설정하였다면 다음과 같습니다.



가속도계에서는 최대 ±2[g]이고(-2g에서 +2g까지 측정하여 -32768에서 +32767까지 매핑Scale Factor가 1g당 16,384로 출력에 이를 나누어주면 실제 [g] 단위를 얻을 수 있습니다. 그러나 우리가 원하는 것은 기울어지 각도이므로 arctan에서는 비율(ratio)만을 사용하므로 단위는 의미가 없게 됩니다. 자이로에서는 최대 ±250[deg/s]이고(-250에서 +250까지 측정하여 -32768에서 32767까지 매핑Scale Factor가 131(32767/250)로 출력에 이를 나누어주면 실제 [deg/s] 단위의 각가속도를 얻을 수 있습니다. 각 센서는 감도(Sensitivity)를 증가시킬수록 미세하게 측정 가능하지만 정확도는 떨어집니다.


다음은 아두이노(Arduino) 보드와 GY-521(MPU6050) 모듈과의 연결 방법과 Wire 라이브러리를 이용하여 실행한 MPU6050의 데이터 출력의 예제입니다.


아두이노 보드와 연결 방법



// MPU-6050 Short Example Sketch
// By Arduino User JohnChi
// August 17, 2014
// Public Domain

#include<Wire.h>
const int MPU_addr=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
  Wire.begin(); // Wire 라이브러리 초기화
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);      // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)     
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
  Serial.print("AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);  //equation for temperature in degrees C from datasheet
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.println(GyZ);
  delay(333); 
}




'Flight Controller 이해 > 센서' 카테고리의 다른 글

관성측정장치(IMU)의 원리  (0) 2017.03.14
드론에 요구되는 각종 센서들  (0) 2017.02.26
Posted by Nature & Life


쿼드콥터(Quadcopter)는 다음 그림에서와 같이 모터 4개의 상대적인 회전속도에 의해 비행이 제어됩니다. 시계방향(CW)으로 회전하는 모터들에 장착되는 프로펠러를 '푸셔(Pusher) 프로펠러'라 부르고 반시계방향(CCW)으로 회전하는 모터들에 장착되는 프로펠러를 '트랙터(Tractor) 프로펠러'라 부릅니다.



  • Yaw Left - 시계방향으로 회전하는 모터 ①, ③의 회전속도의 합 > 반시계방향으로 회전하는 모터 ②, ④의 회전속도의 합

  • Yaw Right - 시계방향으로 회전하는 모터 ①, ③의 회전속도의 합 < 반시계방향으로 회전하는 모터 ②, ④의 회전속도의 합

  • Hovering - 시계방향으로 회전하는 모터 ①, ③의 회전속도의 합 = 반시계방향으로 회전하는 모터 ②, ④의 회전속도의 합


소위 Hovering(정지 비행)은 전체 토크(Torque)가 상쇄되어 드론이 공중에서 정지하는 것이며, 이러한 상황에서 모든 프로펠러들이 발생시키는 추력의 합이 드론의 무게보다 크거나 작을 경우, 드론은 수직으로 상승(Throttle Up) 혹은 하강(Throttle Down)을 합니다.


  • Pitch Up(후진) - 전면에 위치한 모터 ①, ②의 회전속도의 합 > 후면에 위치한 모터 ③, ④의 회전속도의 합

  • Pitch Down(전진) - 전면에 위치한 모터 ①, ②의 회전속도의 합 < 후면에 위치한 모터 ③, ④의 회전속도의 합


  • Roll Left - 우측에 위치한 모터 ①, ④의 회전속도의 합 > 좌측에 위치한 모터 ②, ③의 회전속도의 합

  • Roll Right - 우측에 위치한 모터 ①, ④의 회전속도의 합 < 좌측에 위치한 모터 ②, ③의 회전속도의 합


전체 프로펠러들의 중력방향 추력의 합이 드론의 무게와 동일 할 경우, 드론은 좌측 혹은 우측으로 수평비행을 하게 됩니다.



모터 ①, ②, ③, ④의 회전속도를 각각 라 하고 모터들에 장착된 프로펠러들이 발생시키는 전체 추력을 라 할 때, 각 모터들의 회전속도와 오일러 각도의 변화량  및 추력의 변화량 과의 관계는 다음 수식으로 표현할 수 있습니다.



위 식을 행렬식으로 나타내면 다음과 같습니다.



그러므로 각 모터의 회전속도 관점에서 다음과 같이 나타낼 수 있다.



위 식을 시간 에서 오일러 각도 및 추력의 변화량을 시간 증분을 이용해 표시하면 다음과 같습니다.



위 식에서 는 시간 에서 Tx(송신기)로부터 수신한 비행명령어이고, 는 시간 에서 각종 센서들을 이용하여 추정한 드론의 상태추정치이며, 는 드론의 비행제어기가 수행하는 함수로 볼 수 있습니다. 이 경우, 첨자 ''는 desired(Tx가 원하는)의 ''로 대체할 수 있고, 첨자 ''은 Estimated(센서융합기가 추정한)의 ''로 대체할 수 있습니다.



Tx에 조정키들을 움직여 오일러 각도 및 추력으로 구성된 비행명령어 를 드론에 송신하고, 드론의 Rx(수신기)는 이 비행명령어를 받아서 비행제어기(FC)에 전달합니다. 센서융합기는 자이로 센서, 가속도 센서 및 지자기 센서를 이용해 측정한 회전운동 상태측정치 와 기압 센서를 이용해 측정한 고도측정치 을 적절히 융합해 각 센서들의 오차가 최대한 제거된 상태추정치 를 계산해 비행제어기에 전달합니다. 비행제어기는 Rx로부터 받은 비행명령어를 센서융합기가 보내온 상태추정치와 비교해 그 차이 값을 이용해 각 모터들의 회전속도를 계산합니다. 여기서 첨자 'M'은 Measured(각종 센서들이 측정한)을 의미합니다.


드론은 Tx를 이용하지 않고 GPS 경로비행을 할 수도 있습니다. 한편으로, 센서융합기는 드론의 회전운동 상태측정치 와 GPS 수신기와 기압 센서를 이용해 측정한 병진운동 상태측정치 를 함께 융합하여 센서 오차들을 좀 더 줄일 수 있습니다. 여기서 는 위치벡터, 는 속도 벡터, 는 고도를 의미한다. 아래 그림에서 센서융합기는 드론의 회전운동 및 병진운동 상태측정치를 융합하여 자이로 센서와 가속도 센서의 오차가 최대한 제거된 상태추정치 를 비행제어기에 전달하고, 비행제어기는 Rx로부터 전달 받은 비행명령어 혹은 GPS 비행경로 좌표와 상태추정치를 비교해 그 차이 값을 이용하여 각 모터들의 회전속도를 계산합니다. 여기서 'lon'은 longitude(경도), 'lat'는 latitude(위도)의 약자입니다.




Posted by Nature & Life
Radio Control/etc2017. 3. 8. 16:36


드론에서 비행제어기(FC)와 각 암(arm)의 끝에 위치하는 모터들은 ESC(Electronic Speed Controller)를 통해서 LiPo 밧데리로부터 전원이 공급됩니다. 수신기(Rx)와 각종 센서들은 대부분 비행제어기에서 공급되는 구조를 갖습니다. 모터에 공급되는 전원은 밧데리로부터 곧바로 공급되는데 이는 하나의 모터가 수십 암페어의 전류를 소비하므로 밧데리의 셀(cell)이 증가할수록 유리하다는 것입니다.


하지만 MCU와 각종 센서들을 포함하는 비행제어기는 5V의 안정된 전원이 요구되므로 일종의 전압 레귤레이터(regulator)인 UBEC(Universal Battery Elimination Circuit)를 이용하여 밧데리로부터 정류하여 전원을 공급받게 됩니다. 사실상 대부분의 전력은 양력을 얻기 위한 모터에 의해 소비되고, 수십 암페어의 전류를 소모하기에 IR 드롭이 불가피하여, 비록 드론의 중심에 밧데리를 위치하더라도 미세한 차이는 각 암의 모터의 인가전압 차이로 나타나 기체의 안정성을 해치게 됩니다. 이를 고려하여 안정적으로 전력을 각 암에 동일하게 공급하고 저항을 최소화한 전력 재분배를 위한 보드의 기하학적 설계가 요구된다는 것입니다. 이러한 보드를 Power Distribution Board(전력 분배 보드)라 일컫습니다.



기존의 모형 헬기에서는 ESC에서 제공하는 BEC(Battery Elimination Circuit)를 그대로 사용하였지만, 멀티로터(multi-rotor)는 다수의 ESC가 존재하기 때문에 보다 안정된 ESC의 선택에 의미가 없고, 다양한 센서들과 카메라, 텔레메트리(telemetry) 등 다양한 장치들의 추가로 ESC에서 자체적으로 제공하는 BEC의 용량이 한계에 부딪쳤고, ESC의 특성상 비행제어기가 간섭에 자유롭지 못하고 동작 온도의 상승으로 양질의 전원이 되지 못한다는 것입니다.


뿐만아니라 어느 순간에 모터의 추력을 최대화하면 IR 드롭 등의 이유로 UBEC 전원에 순간적인 전압강하로 이어지고, 이는 비행제어기 내에 민감한 센서들이나 MCU에 오류를 일의킬 수도 있다는 것입니다. 따라서 이러한 전기적 간섭의 문제는, 센서 모듈간에 혹은 센서 모듈과 비행제어기, 모터나 ESC와 비행제어기 등 서로간의 EMI 현상과 함께, 향후 추가되는 센서들이나 각종 장치로 인해 Power Distribution Board의 중요성의 증가하고 있다는 것입니다.



 


'Radio Control > etc' 카테고리의 다른 글

입문자를 위한 F450 기체 바디  (0) 2015.04.30
Posted by Nature & Life


과거 모형 헬기와 같은 전통적 RC는 메인 로터가 양력을 얻어 부양하고 메인 로터가 회전할 때 회전각에 따른 로터의 피치를 조절하여 헬기가 원하는 방향으로 나아가는데, 메인 로터로 인한 헬기 동체의 반동 토크를 상쇄시킬 목적으로 테일 로터도 함께 회전시키게 됩니다(안정성을 강조한 동축반전 헬기는 제외). 이때 헬기 동체가 정숙하게 방향성을 유지하고 호버링하거나 이동하기 위해서는 자이로(gyroscope) 센서의 도움을 받아 실시간 보상하였는데, 이것이 사실 비행 자동화의 전부였으며 나머지는 오직 조종자의 오랜 비행 경험을 토대로 한 자동 반사적인 키감에 의존하여 매우 역동적인 스포츠를 즐기게 되었습니다.


반면에 드론은 쿼드콥터를 예를 들어, 4개의 프로펠러로 양력을 얻고 원하는 방향으로 나아가기 위해서는 개별 로터의 회전속도를 정교히 제어해야 하는데 이는 컴퓨터의 도움없이는 거의 불가능하다는 것입니다. 이러한 이유로 드론의 비행제어기(FC; Flight Controller)는 사람의 심장과도 유사하여 수신모듈로 부터 수신된 명령 신호를 처리하여 각 암(ARM)의 모터를 제어하고, 게다가 가속도계/자이로 센서를 포함하는 관성측정장치(IMU), 바로미터, 컴파스/지자계 등의 센서 데이터를 기반으로 안정적인 비행이 가능하도록 한다는 것입니다.


최근에는 GPS 센서를 탑재하여 GPS 데이터에 기반하여 사전에 입력된 경유지(waypoint)를 순차적으로 운항하거나 RTL(Return to Launch)라는 자동 회귀 기능 등의 탑재로 조종자의 명령이나 각종 기체 이상 등을 감지하여 이륙 장소로 스스로 귀환시키거나, 영상 및 소리 센서들을 활용한 충돌회피 등등 다양한 기능들이 추가되면서 FC는 날로 매우 빠른 연산을 수행하는 MCU가 필요한 추세라는 것입니다.


이를 증명하듯 수 년전에는 오픈 소스에 기반한 APM(AutoPilot Mega) 보드나 multiwii 보드는 8bit 16MHz의 ATmega328이나 ATmega2560의 MCU가 사용되었는데, 그 후로 AruPilot의 PixHawk(3DR)은 훨씬 강력한 32bit 168MHz의 STMicro사의 ARM Cortex M4를 사용하게 되었습니다. 현재의 오픈 소스의 드론 플랫폼으로 가장 인기있는 PX4는 64bit quad-core 2.26GHz의 퀄컴사 SOC(System on Chip) 기반 스냅드래곤 SOC(System on Chip)을 채용하고 있는 실정입니다.



사실 드론이 안정적인 비행으로 대중화를 선언한 그 이면에는 고성능의 MCU 채용만큼이나 FC에서 중요한 것은 센서 기술의 진화에 있다고 해도 지나치지 않다라는 것입니다. 각종 센서들로부터 드론은 비행 속도/각도, 좌표, 위치 데이타 등을 실시간으로 MCU에 제공하여 상당히 안정적인 비행을 가능하게 하지만, 최근에는 저고도에서의 정확한 고도 유지와 포지션홀드 기능을 위해 초음파센서, 옵티컬플루우(Optical Flow) 센서 등이 사용되고 있으며, 또한 충돌회피를 위해 카메라 센서 기반한 SLAM(SImultaneous Localization and Mapping)등의 알고리즘들이 활발히 연구되고 있다는 것입니다.



Posted by Nature & Life


과거 전통적인 RC 헬기는 역동적인 비행이나 실기에서 보지 못했던 배면 비행이나 곡예 비행 등으로 매니아를 사로잡았다면 최근의 쿼드콥터(Quadcopter)와 같은 드론은 안정된 기체의 자세 제어을 통해서 매우 정숙한 호버링이나 자동 이착륙 혹은 소위 'mission planner'와 같은 툴로 사용자가 미리 경유지점을 정해놓고 자동 비행하는 waypoint 비행 등으로 더욱 매력을 느끼게 할 것입니다.


전자의 경우 RC 헬기의 테일 움직임을 감지하여 메인 로터에 대한 반동 토크를 상쇄시켜 기체의 회전으로부터 안정성을 꾀하기 위한 최소한의 센서만을 사용하였고, 나머지 비행은 사용자 조종기의 사이클릭 제어에 절대 의지할 수 밖에 없기 때문에 입문자의 접근이 쉽지 않았다는 것입니다.


반면에 후자의 경우에는 갖가지 센서들을 탑재하여 비행 안정성이 확보되었기 때문에 드론이 단순한 취미나 레포츠를 떠나 항공촬영이나 방재, 택배 등의 임무에 적용이 용이하게 되었고, 그 만큼 비행자동화의 덕택으로 쉽게 배울 수 있어 사용자 층이 훨씬 두터워지고 급기야는 드론의 대중화가 현실화 되었다는 것입니다.


이와 같이 드론이 비행 안정화 및 자동화가 가능했던 이유는 우선 각종 첨단 센서들을 탑재한 시너지 효과라는 것입니다.


Accelerometer(가속도계):

직선 가속도를 측정하는 센서로 최근에는 x,y 그리고 z에 대한 3축(공간) 자이로(Gyro; Gyroscope)를 이용한 센서가 류를 이루게 되었습니다. 과거 RC 헬기가 단방향의 자이로 센서를 채용한 것과 달리, 이는 공간상에서 어느 방향이든 기체의 기울어짐을 감지하여 펌웨어로 하여금 즉시 자세 제어를 가능하게끔 하여 매우 정교한 호버링(정지비행)이 가능하게 되었다는 것입니다.



Barometer(공기압계): 

고도 센서의 용도로서 공기압이 지표면으로터 고도에 따라 감소함을 이용하여 공기압을 측정함으로서 현재 기체의 고도를 역으로 알 수 있게 되었다는 것입니다. 따라서 사용자는 정확이 얼마의 고도에서 기체가 비행할 수 있도록 명령할 수 있고 기체는 이 센서를 통하여 자동으로 고도를 조정할 수 있게 되었다는 것입니다.


Magnetometer(지자기계):

지자기 센서는 '전자 나침판(Electronic compass)'으로 지구의 자기(지자기)를 검출하여 동서남북 방향을 알려주는 센서로, 이를 이용하여 드론은 기체의 방향을 정확히 돌리거나 정해진 방향으로 자동으로 비행이 가능할 수 있게 되었다는 것입니다.


GPS(위치 센서):

익숙한 내용인 Global Positioning System으로 드론은 GPS 센서를 이용하여 인공위성으로부터 자신의 절대 위치를 알 수 있고 따라서 비행 좌표를 설정하거나 혹은 사용자가 시야에 보이지 않아도 안전하게 원래 위치로 되돌아 오는 등의 기능이 가능하게 되었다는 것입니다.




'Flight Controller 이해 > 센서' 카테고리의 다른 글

MPU6050 센서  (1) 2017.12.01
관성측정장치(IMU)의 원리  (0) 2017.03.14
Posted by Nature & Life


BLDC 모터의 경우에는 전기각의 매 60도 간격으로 구형파 파형의 전류를 한번에 2개 위상에 가하여 구동하며, 나머지 한 개의 위상은 전력을 가하지 않은 floating 상태로 역기전력(Back EMF; BEMF)를 관측하고 이를 이용하여 6-step commutation을 실시합니다.


따라서 BLDC 모터의 구동은 근본적으로 토크 리플(Torque ripple)이 발생할 수 밖에 없으며 그러므로 시스템에서 토크 리플이나 음향 노이즈가 큰 문제가 되지 않고 감당할 수 있는 수준일 때 사용된다는 것입니다. 하지만 PMSM은 사인파(정현파)형 전류를 3개 위상에 모두 동시적으로 가하여 구동하여, 토크가 매끄럽고 음향 노이즈가 낮다는 것입니다.


이러한 Brushless 모터의 구동을 위해서는 고정자에서 회전 자기장을 만들어 낼 수 있도록 외부에서 제어를 해주어야 하며, 고정자 코일에 토크가 최대가 되도록 전류를 공급하기 위해서는 회전자의 현재 위치에 대한 정보가 반드시 필요하게 됩니다. 이를 위해서 센서나 광학 엔코더(optical encoder)를 사용하는데 이는 가격 상승의 원인이며 이러한 센서들이 다양한 드론(Drone)의 비행 환경에서 감도가 떨어지고 주변 시스템의 잡음 등의 영향으로 센서가 없는 센서리스(Sensorless) 모터를 채택한다는 것입니다.


그러므로 BLDC 모터의 경우에는 회전자의 위치를 파악하기 위해서 floating 상에서 유기된 역기전력(BEMF)이 '0'을 교차하는 순간(Zero-Crossing Point)을 감지하여 회전자와 주어진 고정자 권선 간의 상대적 위치에 대한 정보을 알아내어 위상 정류를 동기화시키는 간단한 방법을 사용합니다. 여기서 역기전력이 '0'인 순간은 자속의 절대값이 최대인 순간을 포착하는 것과 같습니다.



반면에 PMSM의 경우에는 2상의 전류를 감지하여 모터의 복잡한 다변수 비선형 상태 방정식을 이산화(digitized)하여 수치해석적으로 실시간 계산을 통해 회전자 위치를 지속적으로 얻어 반영하는 구조로, 회전자의 토크가 최대가 되도록 고정자 3상의 전류를 공급하게 됩니다. 따라서 PMSM의 센서리스 제어를 위해서는 BLDC와는 달리 고성능의 ADC와 32-bit 이상의 빠른 속도, 때로는 부동 소수점 연산장치(Floating Point Unit; FPU)를 갖는 마이크로컨트롤러(MCU)가 필요하게 된다는 것입니다.



위 그림에서 좌측은 사다리꼴 파형의 역기전력을 갖는 BLDC 모터와 우측은 정현파형의 역기전력을 갖는 PMSM의 각 시간에 따른 토크의 변화를 나타냅니다. 각 상의 토크 T는 역기전력 e와 전류의 i에 곱에 비례하므로 전체 토크 Te = Ta + Tb + Tc 는 이론적으로 일정하게 보입니다. 하지만 실제로는 BLDC 모터의 경우 사다리꼴의 윗변의 폭이 좁아져 토크는 리플이 생기게 됩니다.




'Flight Controller 이해 > 모터제어이론' 카테고리의 다른 글

모터의 토크 발생원리  (2) 2015.12.12
BLDC와 PMSM의 구조  (0) 2015.12.12
BLDC vs. PMSM  (0) 2015.12.09
BLDC의 장단점  (0) 2014.04.03
BLDC모터란?  (0) 2014.04.01
Posted by Nature & Life

 

 

BLDC 모터는 다시 Sensored 모터와 Sensorless 모터로 나뉘어지는데, Sensored 모터는 이를 구동하기 위한 엔코더(Encoder)나 홀센서(Hall sensor)와 같은 회전자(rotor) 검출 Sensor 등을 가진 형태이며, Sensorless 모터는 이러한 Sensor가 없는 모터를 말합니다.

 

 

다음은 기존이 DC 모터와 일반적인 Sensored BLDC(Brushless DC) 모터의 장단점을 요약하였습니다.

 

 

장점 :

1) Brush가 없으므로 전기적, 기계적 잡음이 적습니다.

2) Brush의 마모가 없으므로 반영구적이며 유지보수가 필요없으며 고속회전에 무리가 없습니다.

3) 또한 기계적 접점이 없으므로 고속화가 용이합니다.

4) 기계적 접점에서 스파크(아크)나 잡음 등의 에너지 손실이 없어 밧데리 효율이 개선됩니다.

5) 기계적 접점이 없으므로 신뢰성이 높고 모터의 소형화와 경량화가 가능합니다.

6) 따라서 EMI 회로가 필요없습니다.

7) 홀센서로부터 모터의 속도를 정확히 알 수 있으므로 일정속도제어 및 가변속제어가 용이합니다.

8) 자석을 이용하기 때문에 전력 밀도와 효율성이 상대적으로 높습니다.

 

 

단점 :

1) DC 모터에 비해 제어가 복잡해집니다.

2) 별도의 구동회로가 요구됩니다.

3) 위치 검출 소자와 구동회로가 요구되어 단가가 상승합니다.

4) 회전자에 영구자석을 사용하므로 저관성화에 제한이 있습니다.

 

대표적인 Sensored BLDC 모터는 CD-ROM에 사용되는 Spindle 모터입니다.

 

 

CD-ROM의 Spindle 모터

 

 

Sensorless BLDC 모터는 RC에 사용되는 대부분의 모터입니다.

 

 

멀티콥터에 사용되는 HP4108 모터

 

 

 

'Flight Controller 이해 > 모터제어이론' 카테고리의 다른 글

모터의 토크 발생원리  (2) 2015.12.12
BLDC와 PMSM의 구조  (0) 2015.12.12
BLDC와 PMSM의 토크  (0) 2015.12.10
BLDC vs. PMSM  (0) 2015.12.09
BLDC모터란?  (0) 2014.04.01
Posted by Nature & Life