Design a mission to visit an asteroid with a small satellite
The satellite uses an ion engine for a low-thrust spiral from the Earth to the asteroid. Try leaving from different Earth altitudes.
See also BuildAsteroidSat, Constant, CreateTable, Plot2D, Date2JD, LTSpiral, LowThrustEscape, BatterySize, RocketEquation
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2012 Princeton Satellite Systems, Inc. % All rights reserved. %-------------------------------------------------------------------------- % Since Version 2015.1 % 2016.1 - update parking altitude to GEO %--------------------------------------------------------------------------
General data
Constants
%---------- c = Constant('speed of light'); mu = Constant('mu earth'); muSun = Constant('mu sun'); aU = Constant('au'); g = 9.806; rhoXenon = 2750; rhoRCS = 1240; % HPGP propellant % Mission date %------------- date = [2015 5 7 0 0 0]; jD = Date2JD(date); % Total mass %----------- mTotal = 27; % 3U x 3U x 3U [kg] % Orbits %------- aAsteroid = 1.3; % Distance from Sun [au] hParking = 35789; % Parking orbit [km] dVRCS = 150; % A guess [m/s] % Link %----- effConv = 0.8; powerKa = 2; % [W] fComm = 34e9;
Propulsion system
%------------------- thrustRCS = 0.5; % N iSpRCS = 235; % sec thrustIon = 1.9; % mN Isp = 2800; % sec % RCS - reaction control system %----- mRatio = exp(dVRCS/(iSpRCS*9.806)); mFRCS = mTotal*(mRatio-1)/mRatio; vRCS = mFRCS/rhoRCS; nTanks = 2; % Two tanks rRCS = (0.75*vRCS/nTanks/pi)^(1/3);
Power system
%-------------- nPanels = 4; panelLength = 0.3; % m panelWidth = 0.3; % m solarPanelEff = 0.295; solarConstant = 1367; % W/m2 a = linspace(1,aAsteroid); solarFlux = solarConstant*(1./a).^2; power = 2*effConv*nPanels*panelLength*panelWidth*solarPanelEff*solarFlux; Plot2D(a,power,'AU','Power (W)','Power Generation') % Battery %-------- dOD = 0.8; % depth of discharge sma = 6378.165 + hParking; inc = 28.4667*pi/180; [massBattery, volumeBattery, capacityBattery] = BatterySize( sma, inc, power(1), jD, dOD );
Ion engine maneuvers
%---------------------- % Earth spiral from hParking %--------------------------- aEarth = aU; r = 6378.165 + hParking; dVSpiral = LowThrustEscape( mu, r ); dVTransfer = LTSpiral( aEarth, aAsteroid*aU, [], muSun ); dVTotal = 2*dVSpiral+2*dVTransfer; % include return trip % use the rocket equation to get the fuel mass massFinal = RocketEquation( 1000*dVTotal, mTotal, Isp*g ); mF = mTotal-massFinal; % Fuel tank sizing %----------------- vXenon = mF/rhoXenon; rXenon = (0.75*vXenon/pi)^(1/3);
Create a table of the results
%------------------------------- k = 1; s = {}; s{k,1} = '\textbf{Mission Plan}'; k = k + 1; s{k,1} = 'Parking Altitude'; s{k,2} = hParking; s{k,3} = 'km'; k = k + 1; s{k,1} = 'Maximum Heliocentric Orbit'; s{k,2} = aAsteroid; s{k,3} = 'AU'; k = k + 1; s{k,1} = 'Earth Escape Delta V'; s{k,2} = dVSpiral; s{k,3} = 'km/s'; k = k + 1; s{k,1} = 'Transfer Delta V'; s{k,2} = dVTransfer; s{k,3} = 'km/s'; k = k + 1; s{k,1} = '\textbf{Power Subsystem}'; k = k + 1; s{k,1} = 'Maximum Power'; s{k,2} = power(1); s{k,3} = 'W'; k = k + 1; s{k,1} = 'Minimum Power'; s{k,2} = power(end); s{k,3} = 'W'; k = k + 1; s{k,1} = 'Solar cells'; s{k,2} = 'Emcore ZTJ'; k = k + 1; s{k,1} = 'Solar cell efficiency'; s{k,2} = solarPanelEff; k = k + 1; s{k,1} = 'Battery mass'; s{k,2} = massBattery; s{k,3} = 'kg'; k = k + 1; s{k,1} = 'Battery volume'; s{k,2} = volumeBattery; s{k,3} = 'L'; k = k + 1; s{k,1} = 'Battery capacity'; s{k,2} = capacityBattery; s{k,3} = 'W-h'; k = k + 1; s{k,1} = '\textbf{Mass}'; k = k + 1; s{k,1} = 'Mass Total'; s{k,2} = mTotal; s{k,3} = 'kg'; k = k + 1; s{k,1} = '\textbf{Communications Subsystem}'; k = k + 1; s{k,1} = 'Communications'; s{k,2} = 'Ka Band'; k = k + 1; s{k,1} = 'Comm Power'; s{k,2} = powerKa; s{k,3} = 'W'; k = k + 1; s{k,1} = '\textbf{Propulsion Subsystem}'; k = k + 1; s{k,1} = 'Ion Engine Fuel'; s{k,2} = 'Xenon'; k = k + 1; s{k,1} = 'Ion Engine Thrust'; s{k,2} = thrustIon; s{k,3} = 'mN'; k = k + 1; s{k,1} = 'Ion Engine Delta V'; s{k,2} = dVTotal; s{k,3} = 'km/s'; k = k + 1; s{k,1} = 'Ion Engine Specific Impulse'; s{k,2} = Isp; s{k,3} = 's'; k = k + 1; s{k,1} = 'Xenon fuel mass'; s{k,2} = mF; s{k,3} = 'kg'; k = k + 1; s{k,1} = 'Xenon tank diameter'; s{k,2} = 2*rXenon*100; s{k,3} = 'cm'; k = k + 1; s{k,1} = 'RCS Thruster Fuel'; s{k,2} = 'HPGP'; k = k + 1; s{k,1} = 'RCS Thruster Thrust'; s{k,2} = thrustRCS; s{k,3} = 'N'; k = k + 1; s{k,1} = 'RCS Delta V'; s{k,2} = dVRCS; s{k,3} = 'm/s'; k = k + 1; s{k,1} = 'RCS Isp'; s{k,2} = iSpRCS; s{k,3} = 'm/s'; k = k + 1; s{k,1} = 'RCS fuel mass'; s{k,2} = mFRCS; s{k,3} = 'kg'; k = k + 1; s{k,1} = 'RCS tank diameter'; s{k,2} = 2*rRCS*100; s{k,3} = 'cm'; k = k + 1; CreateTable(s); %-------------------------------------- % PSS internal file version information %--------------------------------------
\textbf{Mission Plan} - - Parking Altitude - 3.579e+04 - km Maximum Heliocentric Orbit - 1.3 - AU Earth Escape Delta V - 3.075 - km/s Transfer Delta V - 3.662 - km/s \textbf{Power Subsystem} - - Maximum Power - 232.3 - W Minimum Power - 137.4 - W Solar cells - Emcore ZTJ - Solar cell efficiency - 0.295 - Battery mass - 8.068 - kg Battery volume - 4.357 - L Battery capacity - 1089 - W-h \textbf{Mass} - - Mass Total - 27 - kg \textbf{Communications Subsystem} - - Communications - Ka Band - Comm Power - 2 - W \textbf{Propulsion Subsystem} - - Ion Engine Fuel - Xenon - Ion Engine Thrust - 1.9 - mN Ion Engine Delta V - 13.47 - km/s Ion Engine Specific Impulse - 2800 - s Xenon fuel mass - 10.47 - kg Xenon tank diameter - 19.37 - cm RCS Thruster Fuel - HPGP - RCS Thruster Thrust - 0.5 - N RCS Delta V - 150 - m/s RCS Isp - 235 - m/s RCS fuel mass - 1.702 - kg RCS tank diameter - 10.94 - cm