Skip to content
Juliano Laganá edited this page Jul 7, 2015 · 16 revisions

BLDC block

Description

Simulates a brushless direct-current motor.

Parameters and ports

Parameters

  • Inércia do sistema motor+carga: Inertia of the motor+load system. [Kg.m^2]
  • Resistência por fase: Individual phase resistance. [Ohm]
  • Indutância por fase: Individual phase inductance (minus the mutual inductance, if significant). [Henry]
  • Número de pólos: Number of poles of the motor.
  • Constante de torque: The motor's Torque constant. [N.m/A]
  • Constante de força eletromotriz: The motor's Back-emf constant. [V.s]
  • Constante de atrito viscoso: Viscous friction's constant.
  • Força máxima de atrito estático: Determines the maximum static friction torque. [N.m]
  • Força de atrito dinâmico: Determines the value of the dynamic friction torque. [N.m]
  • Lookup table da back-emf fase a: A nx2 matrix which specifies the desired back-emf shape for the a phase of the motor. The first column of the matrix represents the angle in degrees (must start at 0, be monotonically incresing and end at 360); the second column is the value 'fa' for that angle, in the equation: 'ea = fa(theta)*Ke*Wm/2', where 'ea' is the back-emf in phase a, 'Ke' is the motor's Back-emf constant and 'Wm' is the motor's angular velocity.
  • Lookup table da back-emf fase b: A nx2 matrix which specifies the desired back-emf shape for the b phase of the motor. The first column of the matrix represents the angle in degrees (must start at 0, be monotonically incresing and end at 360); the second column is the value 'fb' for that angle, in the equation: 'eb = fb(theta)*Ke*Wm/2', where 'eb' is the back-emf in phase b, 'Ke' is the motor's Back-emf constant and 'Wm' is the motor's angular velocity.
  • Lookup table da back-emf fase c: A nx2 matrix which specifies the desired back-emf shape for the c phase of the motor. The first column of the matrix represents the angle in degrees (must start at 0, be monotonically incresing and end at 360); the second column is the value 'fc' for that angle, in the equation: 'ec = fc(theta)*Ke*Wm/2', where 'ec' is the back-emf in phase c, 'Ke' is the motor's Back-emf constant and 'Wm' is the motor's angular velocity.

Inputs

  • Vab: Voltage between phases 'a' and 'b' of the motor. [Volts]
  • Vbc: Voltage between phases 'b' and 'c' of the motor. [Volts]
  • Tl: Load torque applied to the shaft of the motor. [N.m]

Outputs

  • Theta_m: Angular position of the rotor [radians]
  • w_m: Angular velocity of the rotor [radians/second]
  • internal: Vector of other internal variables of the simulator:
    • Correntes: Vector [3x1] of the currents in all phases:
      • i_a: Current in phase a. [A]
      • i_b: Current in phase b. [A]
      • i_c: Current in phase c. [A]
    • Torques: Vector [3x1] of the torques created by all phases:
      • T_a: Torque due to phase a. [N.m]
      • T_b: Torque due to phase b. [N.m]
      • T_c: Torque due to phase c. [N.m]
    • FCEM: Vector [3x1] of the back-emfs in all phases:
      • e_a: Back-emf in phase a. [V]
      • e_b: Back-emf in phase b. [V]
      • e_c: Back-emf in phase c. [V]
    • Torque Total: Total torque, due to all phases together (T_a + T_b + T_c). [N.m]
    • Torque de atrito: Friction torque acting on the rotor due to Coulomb friction [N.m]

Examples

This example demonstrates how to correctly display all of the BLDC's outputs.

Additional information

  • Since the addition of Coulomb's friction (commit 46dd6e), this block does not support fixed-step solvers. If a fixed-step solver is chosen, undefined behavior may occur.

  • The angle convention (where the rotor is located relative to the coils a, b and c when the angular position is zero) is implicitly defined by the back-emfs. If the default trapezoidal back-emf waveform is used (instead of a user-defined one), the angle convention is that when the angular position is zero, the rotor is perpendicular to the 'a' coil, with its south pole close to the 'b' coil).

  • Example of a valid back-emf lookup table parameter: backemfa = [linspace(0,360,200)' sin(linspace(0,360,200)')];