2 - Complex External Torque¶
System in Analysis¶
The complete example code is available
here.
The mechanical powertrain to be studied is the one described in the
1 - Simple Powertrain
example.
Model Set Up¶
We want to study the effect of a more complex external torque applied to the last gear in the powertrain. This complex torque has 4 main components:
a 200 mNm constant value
a periodic component dependent on the last gear’s angular position, with a 60 rad period and an 80 mNm amplitude, due to the presence of cams in the mechanism
a component proportional to the square of the last gear’s angular speed, with a 2 mNm s²/rad², due to the effect of air friction
a periodic component dependent on the simulation time, with a 2 sec period and a 20 mNm amplitude, which accounts for a load which depends periodically on time
import numpy as np
def ext_torque(time, angular_position, angular_speed):
return Torque(value = 200 +
80*angular_position.sin(frequency = 1/60) +
2*angular_speed.to('rad/s').value**2 +
20*np.sin(2*np.pi/3*time.to('sec').value),
unit = 'mNm')
gear_6.external_torque = ext_torque
The remaining set-ups of the model stay the same.
Results Analysis¶
We can get a snapshot of the system at a particular time of interest:
powertrain.snapshot(target_time = Time(10, 'sec'),
angular_position_unit = 'rot',
torque_unit = 'mNm',
driving_torque_unit = 'mNm',
load_torque_unit = 'mNm')
Mechanical Powertrain Status at Time = 10 sec
angular position (rot) angular speed (rad/s) angular acceleration (rad/s^2) torque (mNm) driving torque (mNm) load torque (mNm) pwm
motor 1831.919043 1375.840709 5.011918 0.058805 1.241126 1.182321 1.0
flywheel 1831.919043 1375.840709 5.011918 0.058805 1.241126 1.182321
gear 1 1831.919043 1375.840709 5.011918 0.058805 1.241126 1.182321
gear 2 228.989880 171.980089 0.626490 0.423395 8.936107 8.512712
gear 3 228.989880 171.980089 0.626490 0.423395 8.936107 8.512712
gear 4 38.164980 28.663348 0.104415 2.286335 48.254979 45.968644
gear 5 38.164980 28.663348 0.104415 2.286335 48.254979 45.968644
gear 6 7.632996 5.732670 0.020883 10.288508 217.147407 206.858899
We can get a more general view of the system by plotting the time variables and focus the plot only on interesting elements and variables. We can also specify a more convenient unit to use when plotting torques:
powertrain.plot(elements = ['gear 6', motor],
variables = ['torque', 'driving torque', 'angular speed', 'load torque'],
torque_unit = 'mNm',
figsize = (8, 6))
We can appreciate the complex shape of the load torque and its effect on
the system. There is a start-up transient up until 10 seconds from the
simulation start, then the system reaches a dynamic equilibrium
condition, where there are fluctuations in the external torque, but the
angular speed mean is constant.
As time passes, the driving torque on the gear 6 equals the load
torque mean value and, as a result, the net torque tends to zero, with
small oscillations around this value. The same happens on the motor
except for a gap between driving and load torque, due to the gear mating
efficiency.