Main Content

라이브 편집기를 사용하여 대화형 저작물 만들기

다음은 라이브 편집기에서 대화형 저작물을 만드는 방법에 대한 예제입니다. 대화형 저작물은 문제를 푸는 데 사용하는 계산을 함께 연결합니다. 이 예제에서는 다음을 어떻게 수행하는지 보여줍니다.

  • MATLAB® 코드와 함께 출력값 표시

  • 서식 지정된 텍스트를 사용하여 접근 방식 설명

  • 수식을 사용하여 기본적인 수학 원리 설명

  • 이미지를 사용하여 중요한 사항 설명

  • 배경 자료에 대한 링크 추가

  • 컨트롤을 사용하여 파라미터를 수정하고 분석을 다시 실행

  • 시각화를 위한 데이터 플로팅

  • 동료를 초대하여 분석 확장

전반적인 접근 방식

서식 지정된 텍스트를 대화형 저작물의 일부로 포함시킵니다. 굵은 텍스트, 기울임꼴 텍스트, 밑줄이 표시된 텍스트를 사용하여 중요한 단어를 강조 표시하고, 글머리 기호나 번호를 사용하여 목록의 형식을 지정할 수 있습니다.

다음을 계산하여 태양 전지판 설치 후 특정 날짜, 시간 및 위치에서의 전력 출력을 추정해 보겠습니다.

  • 태양시

  • 태양 적위와 태양 고도

  • 대기 질량과 지표면에 도달하는 태양 복사열

  • 위치, 기울기, 효율성을 고려한 태양 전지판의 복사열

  • 1일 및 1년 동안 생산된 전력

이 계산 결과를 사용하여 예제의 날짜 및 위치에 대한 태양 복사열과 태양 전지판 복사열을 플로팅합니다. 그런 다음, 태양 전지판의 1년간 예상 전력 생산량을 플로팅합니다. 분석을 간소화할 수 있도록 이 예제를 위해 생성한 두 개의 MATLAB 함수 solarCorrectionpanelRadiation을 사용합니다.

태양시

출력값을 생성한 코드와 출력값을 함께 표시하십시오. 코드의 섹션을 실행하려면 라이브 편집기 탭으로 이동하여 섹션 실행 버튼을 클릭하십시오.

태양 전지판의 전력 생산량은 태양 전지판에 도달하는 태양 복사열의 양에 따라 달라집니다. 그리고 태양 복사열의 양은 태양 전지판을 기준으로 태양의 위치에 따라 달라집니다. 예를 들어, 매사추세츠주 보스턴에서 6월 1일 정오에 태양 전지판의 전력 생산량을 계산한다고 가정해 보겠습니다.

lambda = -71.06;                              % longitude
phi = 42.36;                                  % latitude
UTCoff = '-5';                              % UTC offset 
january1  = datetime(2019,1,1);                            % January 1st
localTime = datetime(2019,6,1,12,0,0)                      % Noon on June 1
localTime = datetime
   01-Jun-2019 12:00:00

지정된 날짜와 시간의 태양 위치를 계산하려면 태양시를 사용하십시오. 정오 태양시는 태양이 가장 높은 곳에 위치한 시간입니다. 태양시를 계산하려면 현지 시간을 보정하십시오. 보정은 두 개의 항으로 구성됩니다.

  • 관찰자의 위치와 현지 자오선 간 오차를 보정하는 항

  • 지구의 궤도 이심률 및 자전축 기울기와 관련한 궤도 항

solarCorrection 함수를 사용하여 태양시를 계산합니다.

d = caldays(between(january1,localTime,'Day'));            % Day of year
solarCorr = solarCorrection(d,lambda,str2double(UTCoff));              % Correction to local time
solarTime = localTime + minutes(solarCorr)
solarTime = datetime
   01-Jun-2019 12:18:15

태양 적위와 태양 고도

기본적인 수학 원리를 설명하기 위해 수식을 포함시키십시오. LaTeX 명령을 사용하여 수식을 만드십시오. 새로운 수식을 추가하려면 삽입 탭으로 이동하여 수식 버튼을 클릭하십시오. 수식 하나를 클릭하여 수식 편집기에서 편집합니다.

태양 적위(δ)는 지구 적도면을 기준으로 한 태양의 각도입니다. 태양 적위는 춘분과 추분에 0이며 하지에 최댓값 23.45에 도달합니다. 수식을 사용하여 1년 중 지정된 날짜(d)의 태양 적위를 계산해 보겠습니다.

δ=sin-1(sin(23.45)sin(360365(d-81)))

그런 다음, 적위(δ), 위도(ϕ) 및 시간각(ω)을 사용하여 현재 시간의 태양 고도(α)를 계산합니다. 시간각은 현재 태양시와 정오 사이의 지구 회전 각도를 말합니다.

α=sin-1(sinδsinϕ+cosδcosϕcosω)

delta = asind(sind(23.45)*sind(360*(d - 81)/365));         % Declination
omega = 15*(solarTime.Hour + solarTime.Minute/60 - 12);    % Hour angle
alpha = asind(sind(delta)*sind(phi) + ...                  % Elevation
     cosd(delta)*cosd(phi)*cosd(omega));
disp(['Solar Declination = ' num2str(delta) '   Solar Elevation = ' num2str(alpha)])
Solar Declination = 21.8155   Solar Elevation = 69.113

태양 적위와 현지 위도를 사용하여 일출 시간과 일몰 시간을 표준시로 계산합니다.

sunrise=12-cos-1(-tanϕtanδ)15-solarCorr60sunset=12+cos-1(-tanϕtanδ)15-solarCorr60

midnight = dateshift(localTime,'start','day');
sr = 12 - acosd(-tand(phi)*tand(delta))/15 - solarCorr/60;
sunrise = timeofday(midnight + hours(sr));
ss = 12 + acosd(-tand(phi)*tand(delta))/15 - solarCorr/60;
sunset = timeofday(midnight + hours(ss));

sunrise.Format = 'hh:mm:ss';
sunset.Format = 'hh:mm:ss';
disp('Sunrise = ' + string(sunrise) + '   Sunset = ' + string(sunset))
Sunrise = 04:16:06   Sunset = 19:07:22

대기 질량과 태양 복사열

이야기의 중요 사항을 그림으로 보여주기 위해 이미지를 포함시키십시오. 이미지를 포함시키려면 다른 곳의 이미지를 복사하여 붙여넣거나 삽입 탭으로 이동하여 이미지 버튼을 클릭하십시오.

태양 광선이 지구의 대기를 통과할 때 일부 태양 복사열은 흡수됩니다. 아래 도식에 표시된 것처럼, 대기 질량은 태양 고도가 90일 때 태양 광선이 통과하는 최단 경로(X)를 기준으로 하여 현재 태양 고도에서 태양 광선이 대기를 통과하는 경로(Y)의 길이를 측정한 값입니다. 대기 질량은 태양 고도(α)의 함수입니다.

대기 질량이 클수록 지표면에 도달하는 복사열의 양이 줄어듭니다. 수식을 사용하여 대기 질량을 계산해 보겠습니다.

airMass=1cos(90-α)+0.5057(6.0799+α)-1.6364.

그런 다음, 다음 실험식을 사용하여 지표면에 도달하는 태양 복사열(단위: 제곱 미터당 킬로와트)을 계산합니다.

solarRad=1.353*0.7AM0.678.

airMass = 1/(cosd(90-alpha) + 0.50572*(6.07955+alpha)^-1.6354);
solarRad = 1.353*0.7^(airMass^0.678);                           % kW/m^2
disp(['Air Mass = ' num2str(airMass) '   Solar Radiation = ' num2str(solarRad) ' kW/m^2'])
Air Mass = 1.0698   Solar Radiation = 0.93141 kW/m^2

고정된 태양 전지판의 태양 복사열

다른 곳의 추가 정보를 참조하도록 하이퍼링크를 사용하십시오. 하이퍼링크를 추가하려면 삽입 탭으로 이동하여 하이퍼링크 버튼을 클릭하십시오.

태양 추적 장치와 함께 설치된 태양 전지판은 태양의 위치에 따라 이동하여 태양 복사열을 100% 흡수할 수 있습니다. 하지만 가장 많이 사용되는 태양 전지는 설치하면 태양 전지판의 방위각(Azimuth)과 기울기가 고정되어 있습니다. 태양 전지의 경우, 태양 전지판에 도달하는 실제 복사열의 양은 태양의 방위각에 따라 달라집니다. 태양 방위각(γ)은 하늘에서 태양이 위치한 나침반 방향입니다. 북반구에서 정오에 태양 방위각은 남쪽 방향에 해당하는 180입니다. 다음 수식을 사용하여 태양 방위각을 계산해 보겠습니다.

γ={cos-1(sinδcosϕ-cosδsinϕcosωcosα)for solar time 12360-cos-1(sinδcosϕ-cosδsinϕcosωcosα)for solar time >12

gamma = acosd((sind(delta)*cosd(phi) - cosd(delta)*sind(phi)*cosd(omega))/cosd(alpha));
if (hour(solarTime) >= 12) && (omega >= 0)
    gamma = 360 - gamma;
end
disp(['Solar Azimuth = ' num2str(gamma)])
Solar Azimuth = 191.7888

북반구에서 일반적으로 태양 전지판을 설치하면 전지판은 남쪽을 향해 180의 방위각(β)으로 고정됩니다. 북위 지역에서 일반적인 기울기 각도(τ)는 35입니다. 다음 수식을 사용하여 총 태양 복사열에서 고정된 태양 전지판의 복사열을 계산해 보겠습니다.

panelRad=solarRad[cos(α)sin(τ)cos(β-γ)+sin(α)cos(τ)].

beta = 180;                                                % Panel azimuth
tau = 35;                                                  % Panel tilt
panelRad = solarRad*max(0,(cosd(alpha)*sind(tau)*cosd(beta-gamma) + sind(alpha)*cosd(tau)));
disp(['Panel Radiation = ' num2str(panelRad) ' kW/m^2'])
Panel Radiation = 0.89928 kW/m^2

하루 동안의 태양 전지판 복사열과 전력 생산

대화형 방식 컨트롤을 사용하여 파라미터를 수정할 수 있습니다. 플롯을 생성하는 코드와 함께 플롯을 표시하십시오.

태양 전지판 복사열

1년 중 지정된 날짜의 총 태양 복사열과 태양 전지판 복사열을 계산해 보겠습니다. 분석을 간소화하려면 panelRadiation 함수를 사용하십시오. 다른 날짜를 지정하여 연중 시기에 따라 태양 복사열과 태양 전지판 복사열이 어떻게 변하는지 확인해 보십시오.

selectedMonth = 6;
selectedDay = 1;   
selectedDate = datetime(2019,selectedMonth,selectedDay); 
[times,solarRad,panelRad] = panelRadiation(selectedDate,lambda,phi,UTCoff,tau,beta) ;

plot(times,solarRad,times,panelRad)

selectedDate.Format = 'MMMM dd yyyy';
title('Solar and Panel Radiation for ' + string(selectedDate))
xlabel('Hour of Day');
ylabel('Radiation, kW/m^2')
legend('Available Solar Radiation','Solar Radiation on Panel', 'Location','South')

Figure contains an axes object. The axes object with title Solar and Panel Radiation for June 01 2019, xlabel Hour of Day, ylabel Radiation, kW/m Squared baseline contains 2 objects of type line. These objects represent Available Solar Radiation, Solar Radiation on Panel.

전력 생산

지금까지는 계산에서 태양 전지판에 도달하는 복사열을 모두 전력을 생산하는 데 사용할 수 있다고 가정했습니다. 하지만 태양 전지판은 들어오는 태양 복사열을 모두 전기로 변환하지는 못합니다. 태양 전지판의 효율성은 사용 가능한 복사열 중 변환된 복사열의 비율로 나타냅니다. 이는 태양 전지의 설계와 재료에 따라 달라집니다.

일반적으로 가정용으로 설치할 경우에는 효율성이 25%인 20m2 태양 전지판이 사용됩니다. 아래 파라미터를 수정하여 태양 전지판의 효율성과 크기가 전력 생산에 어떻게 영향을 미치는지를 확인할 수 있습니다.

eff = 0.25;                         % Panel efficiency
pSize = 20;                         % Panel size in m^2
radiation = sum(panelRad(1:end-1)+panelRad(2:end))/2;
dayPower = eff*pSize*radiation;                            % Panel electric output in kW

selectedDate.Format = 'dd-MMM-yyyy';
disp('Expected daily electical output for ' + string(selectedDate) + ' = ' + num2str(dayPower) + ' kW-hrs')
Expected daily electical output for 01-Jun-2019 = 33.4223 kW-hrs

1년간 전력 생산

상호 작용할 플롯에 커서를 올려놓습니다. 라이브 편집기에서 플롯과 상호 작용하면 스크립트에 추가할 수 있는 코드가 생성됩니다.

1년 중 모든 날짜의 전력 생산을 추정하려면 이 계산을 반복하십시오.

yearDates = datetime(2019,1,1:365);                        % Create a vector of days in the year
dailyPower = zeros(1,365);
for i = 1:365
    [times,solarRad,panelRad] = panelRadiation(yearDates(i),lambda,phi,UTCoff,tau,beta) ;
    radiation = sum(panelRad(1:end-1)+panelRad(2:end))/2;
    dailyPower(i) = eff*pSize*radiation; 
end

plot(yearDates,dailyPower)
title('Yearly Power Generation')
xlabel('Date');
ylabel('Power Generation, kW-hrs')

Figure contains an axes object. The axes object with title Yearly Power Generation, xlabel Date, ylabel Power Generation, kW-hrs contains an object of type line.

yearlyPower = sum(dailyPower);
disp(['Expected annual power output = ' num2str(yearlyPower) ' kW-hrs'])
Expected annual power output = 9954.3272 kW-hrs

태양 전지판 기울기 및 위도

히트맵을 사용하여 태양 전지판 기울기가 전력 생산에 어떻게 영향을 미치는지 확인하십시오. 아래 히트맵은 모든 위치에서 최적의 태양 전지판 기울기는 위도보다 약 5 작다는 것을 보여줍니다.

load LatitudeVsTilt.mat
heatmap(powerTbl,'Tilt','Latitude',...
    'ColorVariable','Power');
xlabel('Panel Tilt')
ylabel('Latitude')
title('Normalized Power Output')

Figure contains an object of type heatmap. The chart of type heatmap has title Normalized Power Output.

분석 확장하기

동료와 분석을 공유하고, 동료를 초대하여 분석을 재현하거나 확장하십시오. 라이브 편집기를 사용하여 협업할 수 있습니다.

태양 전지판을 설치해 얻는 실제 전력 출력은 현지 기상 조건의 영향을 크게 받습니다. 이 분석을 확장한 흥미로운 예제 중 하나는 구름양이 결과에 어떻게 영향을 미치는지 알아보는 것입니다. 미국에서는 다음과 같은 정부 웹사이트의 데이터를 사용할 수 있습니다.

관련 항목