Motors#
- class SimpleDcMotor(**kwds)#
- Creates a simple DC motor.
SimpleDcMotor is an aggregate of the following electomechanical components:
Stator
Rotor
SimpleDCCircuit
The electric circuit of the armature and the free body diagram of the rotor are shown in the following picture:
SimpleDcMotor components.#
For more information, see Comment 1.
Example
Create a simple DC motor.#from msolve import * from msolve.machinery.motor import SimpleDcMotor model = Model() ground = Part(ground=True) global_ref = Marker(body=ground) units = Units() gravity = Accgrav(kgrav=-9.80665) ref_marker = Marker(body=ground, qp=[0.01, 0, 0], reuler=[Math.radians(90), Math.radians(-90), 0]) motor = SimpleDcMotor(rm=ref_marker, stator_base=ground, stator_length=0.05, stator_radius=0.03, stator_mass=0.05, stator_ip=[1e4, 1e4, 1e4, 0, 0, 0], rotor_length=0.04, rotor_radius=0.025, rotor_mass=0.05, rotor_ip=[5.15e-7, 5.15e-7, 5.15e-7, 0, 0, 0], voltage=6.0, resistance=1.90, inductance=1.01e-3, torque_constant=0.007, viscous_friction=4.83e-7, coulomb_friction=0.0009, steady_state=False )
Name
Type
Symbol
Required
Default
Modifiable
Bool
True
\(\checkmark\)
Double
0.0
Int
Auto
Double
\(L\)
0.0
Str
Str
Location
Double
\(R\)
0.0
Angles
Reference -
Marker
\(\checkmark\)
Reference -
Part
Ips
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Double
0.0
Double
0.0
Double
0.0
Reference -
Part
Ips
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Double
0.0
Double
0.0
Double
0.0
Bool
False
Double
\(K_{T}\)
0.0
Double
0.0
Function
\(V\)
\(\checkmark\)
Double
0.0
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- coulomb_friction#
The motor coulomb friction torque
Type=Double, Default=0.0
- id#
The id of the object.
Type=Int
- inductance#
The motor inductance
Type=Double, Default=0.0
- label#
The label of the composite element.
Type=Str
- name#
Defines a nametag for the object.
Type=Str
- qg#
The position of the composite element.
Type=Location
- resistance#
The motor resistance
Type=Double, Default=0.0
- reuler#
The orientation of the composite element.
Type=Angles
- rm#
The reference marker of the composite element.
Type=Reference (Marker), Required
- rotor_base#
Type=Reference (Part)
- rotor_ip#
Inertial property of rotor
Type=Ips, Default=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
- rotor_length#
Length of rotor
Type=Double, Default=0.0
- rotor_mass#
Mass of rotor
Type=Double, Default=0.0
- rotor_radius#
Radius of rotor
Type=Double, Default=0.0
- stator_base#
Type=Reference (Part)
- stator_ip#
Inertial property of stator
Type=Ips, Default=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
- stator_length#
Length of the stator
Type=Double, Default=0.0
- stator_mass#
Mass of the stator
Type=Double, Default=0.0
- stator_radius#
Radius of the stator
Type=Double, Default=0.0
- steady_state#
True if steady state, neglecting the inductance term
Type=Bool, Default=False
- torque_constant#
The motor torque constant
Type=Double, Default=0.0
- viscous_friction#
The motor viscous friction
Type=Double, Default=0.0
- voltage#
The variable voltage applied to the motor
Type=Function, Modifiable
- voltage_ic#
Type=Double, Default=0.0
- class BLDCMotor(**kwds)#
- Creates a Brushless DC motor.
The brushless DC motor accomplishes commutation electronically using switches and rotor position feedback to determine when to switch the current.
The stator windings work in conjunction with permanent magnets on the rotor to generate a nearly uniform flux density in the air gap. This permits the stator coils to be driven by a DC voltage, which switches from one stator coil to the next to generate an AC voltage waveform with a trapezoidal shape (in the case of constant input).
Example
Create a brushless DC motor.#from msolve import * from msolve.machinery.motor import BLDCMotor model = Model() ground = Part(ground=True) global_ref = Marker(body=ground) units = Units() gravity = Accgrav(kgrav=-9.80665) ref_marker = Marker(body=ground, qp=[0.01, 0, 0], reuler=[Math.radians(90), Math.radians(-90), 0]) motor = BLDCMotor(rm=ref_marker, stator_base=ground, stator_length=0.05, stator_radius=0.03, stator_mass=0.05, stator_ip=[1e4, 1e4, 1e4], rotor_length=0.04, rotor_radius=0.025, rotor_mass=0.05, rotor_ip=[9.89e-7, 9.89e-7, 9.89e-7], voltage='STEP(TIME,0,0,1,12)', resistance=0.5 * 1.98, inductance=0.5 * 0.18e-3, torque_constant=0.016, viscous_friction=1.07e-6, coulomb_friction=0.001, num_poles=4, steady_state=False )
Name
Type
Symbol
Required
Default
Modifiable
Bool
True
\(\checkmark\)
Double
0.0
Int
Auto
Double
\(L\)
0.0
Str
Str
Double
0.0
Location
Double
\(R\)
0.0
Angles
Reference -
Marker
\(\checkmark\)
Reference -
Part
Ips
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Double
0.0
Double
0.0
Double
0.0
Reference -
Part
Ips
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Double
0.0
Double
0.0
Double
0.0
Bool
False
Double
\(K_{T}\)
0.0
Double
0.0
Function
\(V\)
\(\checkmark\)
Double
6.0
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- coulomb_friction#
Type=Double, Default=0.0
- id#
The id of the object.
Type=Int
- inductance#
Type=Double, Default=0.0
- label#
The label of the composite element.
Type=Str
- name#
Defines a nametag for the object.
Type=Str
- num_poles#
Type=Double, Default=0.0
- qg#
The position of the composite element.
Type=Location
- resistance#
Type=Double, Default=0.0
- reuler#
The orientation of the composite element.
Type=Angles
- rm#
The reference marker of the composite element.
Type=Reference (Marker), Required
- rotor_base#
Type=Reference (Part)
- rotor_ip#
Type=Ips, Default=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
- rotor_length#
Type=Double, Default=0.0
- rotor_mass#
Type=Double, Default=0.0
- rotor_radius#
Type=Double, Default=0.0
- stator_base#
Type=Reference (Part)
- stator_ip#
Type=Ips, Default=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
- stator_length#
Type=Double, Default=0.0
- stator_mass#
Type=Double, Default=0.0
- stator_radius#
Type=Double, Default=0.0
- steady_state#
Type=Bool, Default=False
- torque_constant#
Type=Double, Default=0.0
- viscous_friction#
Type=Double, Default=0.0
- voltage#
Type=Function, Modifiable
- voltage_ic#
Type=Double, Default=6.0
- class CurveMotor(**kwds)#
- Creates a curve-based motor.
The motor’s operation is defined based on its characteristic torque-speed curve.
Is an aggregate of a stator, a rotor and an Sforce.
Example
Create a motor defined by a curve.#from msolve import * from msolve.machinery.motor import CurveMotor model = Model() ground = Part(ground=True) global_ref = Marker(body=ground) units = Units() gravity = Accgrav(kgrav=-9.80665) ref_marker = Marker(body=ground, qp=[0.01, 0, 0], reuler=[Math.radians(90), Math.radians(-90), 0]) motor = CurveMotor(rm=ref_marker, stator_base=ground, stator_length=0.050, stator_radius=0.030, stator_mass=0.050, stator_ip=[1e4, 1e4, 1e4], rotor_length=0.040, rotor_radius=0.025, rotor_mass=0.050, rotor_ip=[5e-7, 5e-7, 5e-7], speed=[0, 1750, 3500, 5250, 7000], torque=[0.090, 0.030, 0.010, 0.003, 0.000], type='CUBIC' )
Name
Type
Symbol
Required
Default
Modifiable
Bool
True
\(\checkmark\)
Int
Auto
Str
Str
Location
Angles
Reference -
Marker
\(\checkmark\)
Reference -
Part
Ips
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Double
0.0
Double
0.0
Double
0.0
Double [0]
\(\checkmark\)
Reference -
Part
Ips
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Double
0.0
Double
0.0
Double
0.0
Double [0]
\(\checkmark\)
Enum
AKIMA
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- id#
The id of the object.
Type=Int
- label#
The label of the composite element.
Type=Str
- name#
Defines a nametag for the object.
Type=Str
- qg#
The position of the composite element.
Type=Location
- reuler#
The orientation of the composite element.
Type=Angles
- rm#
The reference marker of the composite element.
Type=Reference (Marker), Required
- rotor_base#
Type=Reference (Part)
- rotor_ip#
Type=Ips, Default=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
- rotor_length#
Type=Double, Default=0.0
- rotor_mass#
Type=Double, Default=0.0
- rotor_radius#
Type=Double, Default=0.0
- speed#
Type=Double [0], Required, Default=0.0
- stator_base#
Type=Reference (Part)
- stator_ip#
Type=Ips, Default=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
- stator_length#
Type=Double, Default=0.0
- stator_mass#
Type=Double, Default=0.0
- stator_radius#
Type=Double, Default=0.0
- torque#
Type=Double [0], Required, Default=0.0
- type#
Type=Enum, Default=AKIMA
Permitted values are:
AKIMA
CUBIC
LINEAR