Compute the power storage requirements for a CubeSat.
Compares the requirements versus a commercial Li-Ion battery http://www.batteryspace.com/polymerli-ionbattery74v830mah614wh10-12cdischargerate.aspx
------------------------------------------------------------------------ See also RVOrbGen, Date2JD, JD2T, julianCent, SunV1, Eclipse, SolarCellPower ------------------------------------------------------------------------
Contents
-------------------------------------------------------------------------- Copyright (c) 2011 Princeton Satellite Systems. All Rights Reserved. --------------------------------------------------------------------------
Constants
capacity = 7.4*0.830; % W-hr solarFlux = 1367; % W altitude = 500; % km radiusEarth = 6378.165; % km inc = 28.4667*pi/180; % deg - launch from KSFC dOD = 0.6; % Depth of discharge
Orbit properites
sma = radiusEarth + altitude; % semi-major axis % Return r,v,t for one rev in orbit defined by the orbital elements %------------------------------------------------------------------ [r,v,t] = RVFromKepler( [sma inc 0 0 0 0] ); m = length(t); % We need the date in Julian Centuries for the sun model %------------------------------------------------------- jD0 = Date2JD([2013 5 1 0 0 0]); julianCent = JD2T( jD0 + t/86400 );
Data structure defining the solar panels
d.effPowerConversion = 0.8; d.solarCellArea = 0.088*0.088*[1 1 1 1 1 1 1 1 1]; d.solarCellNormal = [1 -1 0 0 1 -1 0 0;... 0 0 1 -1 0 0 1 -1;... 0 0 0 0 0 0 0 0]; d.solarCellEff = 0.29; % EMCORE ZTJM
Initialize the input power array, eclipse time
p = zeros(1,m); dT = t(2) - t(1); tE = 0;
Compute the discrete input power over one rev in orbit
Accounts for time spent in eclipse
for k = 1:m [uSun, rSun] = SunV1( julianCent(k) ); n = Eclipse( r(:,k), rSun*uSun ); p(k) = SolarCellPower( d, solarFlux*n*uSun ); tE = (1-n)*dT + tE; end
Plot the input power over one orbit
Plot2D(t,[r;p],'Time (sec)', {'x (km)' 'y (km)', 'z (km)' 'Power (W)'}, 'One Orbit' );
Size the battery
Based on input power available
pTotal = sum(p)*dT; pAve = pTotal/t(end); pStored = pAve*tE/3600; batteryCapacity = pStored/(1-dOD);
Diplay results
fprintf(1,'Eclipse Time %8.1f s\n',tE); fprintf(1,'Orbit period %8.1f s\n',t(end)); fprintf(1,'Total power input %8.1f Wh\n',pTotal/3600); fprintf(1,'Depth of discharge %8.1f%%\n',dOD*100); fprintf(1,'Battery Storage %8.1f Wh\n',pStored); fprintf(1,'Battery Capacity %8.1f Wh\n',batteryCapacity); fprintf(1,'Li-Ion Polymer %8.1f Wh\n',capacity);
Eclipse Time 2236.4 s Orbit period 5677.0 s Total power input 6.0 Wh Depth of discharge 60.0% Battery Storage 2.4 Wh Battery Capacity 5.9 Wh Li-Ion Polymer 6.1 Wh