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 RVFromKepler, Date2JD, JD2T, julianCent, SunV1, Eclipse, SolarCellPower ------------------------------------------------------------------------
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2011 Princeton Satellite Systems. % All Rights Reserved. %-------------------------------------------------------------------------- % Since version 10. % 2019.1 Added explicit quaternion %--------------------------------------------------------------------------
Constants
solarFlux = 1367; % W altitude = 500; % km radiusEarth = 6378.165; % km inc = 28.4667*pi/180; % deg - launch from KSFC % Battery parameters capacity = 7.4*0.830; % W-hr dOD = 0.6; % Depth of discharge
Semi-major axis
sma = radiusEarth + altitude;
Input is orbital elements
[r,v,t] = RVFromKepler( [sma inc 0 0 0 0] ); m = length(t);
We need the time in Julian Date for the sun model
jD0 = Date2JD([2013 5 1 0 0 0]); julianDate = jD0 + t/86400;
Data structure defining the solar panels
d = SolarCellPower; 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 array to save time
p = zeros(1,m); dT = t(2) - t(1); tE = 0; % You can add any attitude you would like q = QLVLH(r,v); for k = 1:m [uSun, rSun] = SunV1( julianDate(k) ); n = Eclipse( r(:,k), rSun*QForm(q(:,k),uSun) ); p(k) = SolarCellPower( d, solarFlux*n*uSun ); tE = (1-n)*dT + tE; end Plot2D(t,[r;p],'Time (sec)', {'x (km)' 'y (km)', 'z (km)' 'Power (W)'}, 'One Orbit' ); Plot2D(t,q,'Time (sec)', {'q_1' 'q_x', 'q_y' 'q_z'}, 'One Orbit: Quaternion' );
Size the battery
pTotal = sum(p)*dT; pAve = pTotal/t(end); pStored = pAve*tE/3600; batteryCapacity = pStored/(1-dOD); 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 1325.8 s Orbit period 5677.0 s Total power input 8.2 Wh Depth of discharge 60.0% Battery Storage 1.9 Wh Battery Capacity 4.8 Wh Li-Ion Polymer 6.1 Wh