Source code for datasheet_RW

#
#  ISC License
#
#  Copyright (c) 2016, Autonomous Vehicle Systems Lab, University of Colorado at Boulder
#
#  Permission to use, copy, modify, and/or distribute this software for any
#  purpose with or without fee is hereby granted, provided that the above
#  copyright notice and this permission notice appear in all copies.
#
#  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
#  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
#  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
#  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
#  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
#  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#


from Basilisk.utilities import macros as mc

[docs] def Honeywell_HR16(maxMomentum_level): """ Honeywell HR16 (100Nm, 75Nm, 50Nm) RW Information Source: http://www51.honeywell.com/aero/common/documents/Constellation_Series_Reaction_Wheels.pdf There are 3 momentum capacity options for this RW type. The maximum momentum capacity must be set prior to creating the HR16 RW type using:: maxMomentum = 100, 75 or 50 :param maxMomentum_level: :return: """ Omega_max = 6000.0 * mc.rpm2radsec # maximum speed u_max = 0.200 # maximum RW torque [Nm] u_min = 0.00001 # minimum RW torque [Nm] u_f = 0.0005 # static friction torque [Nm] maxMomentum_large = 100 maxMomentum_medium = 75 maxMomentum_small = 50 # mass = RW rotor mass [kg]. Note: the rotor mass here is set equal to the RW mass of the above spec sheet. # U_s = static RW imbalance [kg*m] # U_d = dynamic RW imbalance [kg*m^2] if maxMomentum_level == 'large': mass = 12.0 U_s = 4.8E-6 U_d = 15.4E-7 elif maxMomentum_level == 'medium': mass = 10.4 U_s = 3.8E-6 U_d = 11.5E-7 elif maxMomentum_level == 'small': mass = 9.0 U_s = 2.8E-6 U_d = 7.7E-7 else: raise ValueError('Honeywell_HR16(maxMomentum_level) only has arg options maxMomentum = [large, medium, small]') maxMomentum = eval('maxMomentum_'+ maxMomentum_level) return (Omega_max, u_max, u_min, u_f, mass, U_s, U_d, maxMomentum)
[docs] def Honeywell_HR14(maxMomentum): """ Honeywell HR14 (25Nm, 50Nm, 75Nm) RW Information Source: http://www51.honeywell.com/aero/common/documents/Constellation_Series_Reaction_Wheels.pdf There are 3 momentum capacity options for this RW type. The maximum momentum capacity must be set prior to creating the HR14 RW type using:: options.maxMomentum = 75, 50 or 25 :param maxMomentum: :return: """ Omega_max = 6000.0 * mc.rpm2radsec # maximum speed u_max = 0.200 # maximum RW torque [Nm] u_min = 0.00001 # minimum RW torque [Nm] u_f = 0.0005 # static friction torque [Nm] # mass = RW rotor mass [kg]. Note: the rotor mass here is set equal to the RW mass of the above spec sheet. # U_s = static RW imbalance [kg*m] # U_d = dynamic RW imbalance [kg*m^2] large = 75 medium = 50 small = 25 if maxMomentum == large: mass = 10.6 U_s = 4.8E-6 U_d = 13.7E-7 elif maxMomentum == medium: mass = 8.5 U_s = 3.5E-6 U_d = 9.1E-7 elif maxMomentum == small: mass = 7.5 U_s = 2.2E-6 U_d = 4.6E-7 else: raise ValueError('Honeywell_HR14(maxMomentum) only has arg options maxMomentum = [large, medium, small]') return (Omega_max, u_max, u_min, u_f, mass, U_s, U_d)
[docs] def Honeywell_HR12(maxMomentum): """ Honeywell HR12 (12Nm, 25Nm, 50Nm) RW Information Source: http://www51.honeywell.com/aero/common/documents/Constellation_Series_Reaction_Wheels.pdf There are 3 momentum capacity options for this RW type. The maximum momentum capacity must be set prior to creating the HR12 RW type using:: options.maxMomentum = 12, 25 or 50 :param maxMomentum: :return: """ Omega_max = 6000.0 * mc.rpm2radsec # maximum speed u_max = 0.200 # maximum RW torque [Nm] u_min = 0.00001 # minimum RW torque [Nm] u_f = 0.0005 # static friction torque [Nm] # mass = RW rotor mass [kg]. Note: the rotor mass here is set equal to the RW mass of the above spec sheet. # U_s = static RW imbalance [kg*m] # U_d = dynamic RW imbalance [kg*m^2] large = 50 medium = 25 small = 12 if maxMomentum == large: mass = 9.5 U_s = 4.4E-6 U_d = 9.1E-7 elif maxMomentum == medium: mass = 7.0 U_s = 2.4E-6 U_d = 4.6E-7 elif maxMomentum == small: mass = 6.0 U_s = 1.5E-6 U_d = 2.2E-7 else: raise ValueError('Honeywell_HR12(maxMomentum) only has arg options maxMomentum = [large, medium, small]') return (Omega_max, u_max, u_min, u_f, mass, U_s, U_d)