| |
<?php # -*- PHP -*- $OTHERURI="eme-pathloss.php?LANG=other"; $NOCACHE=1; require("../include/head1.inc"); langfilt('FI: FI:Viestikallion työkaluja: EME matkavaimennus EN:Viestikallio Tools: EME Pathloss'); require("../include/head2.inc"); langfilt('FI: FI:Viestikallion työkaluja: EME matkavaimennus EN:Viestikallio Tools: EME Pathloss'); include("../include/head3.inc"); include("../include/menu.inc");
printf("<TABLE><TR><TD> <TD>\n");
if ($HTTP_GET_VARS["SOURCE"] != "" || $HTTP_GET_VARS["source"] != "") { printf("\n<FONT SIZE=1>\n"); # highlight_file("eme-pathloss.php"); show_source("eme-pathloss.php"); printf("</FONT><P><HR><P>\n"); include("../include/sign-oh2mqk.inc"); printf("<P></TR></TABLE>\n"); include("../include/base.inc"); include("../include/foot.inc"); exit; }
# - Frequency # - Diameter # - Feed form function (e.g. "1.3" for gaussian) # - Surface quality (Efficiency) # - NoiseTemp: for G/T noise temperature of feeds and supports
$FREQ = $HTTP_GET_VARS["FREQ"]; if ($FREQ == "") { $FREQ = $HTTP_POST_VARS["FREQ"]; } if ($FREQ == "") { $FREQ = "2.45"; }
$RXBW = $HTTP_GET_VARS["RXBW"]; if ($RXBW == "") { $RXBW = $HTTP_POST_VARS["RXBW"]; } if ($RXBW == "" || $RXBW < 5 || $RXBW > 1000000) { $RXBW = 100; }
$RXSNR = $HTTP_GET_VARS["RXSNR"]; if ($RXSNR == "") { $RXSNR = $HTTP_POST_VARS["RXSNR"]; } if ($RXSNR == "" || $RXSNR < 0.1 || $RXSNR > 30.0) { $RXSNR = "5.0"; }
$RxTemp = $HTTP_GET_VARS["RXTEMP"]; if ($RxTemp == "") { $RxTemp = $HTTP_POST_VARS["RXTEMP"]; } if ($RxTemp == "") { $RxTemp = "290.0"; } if ($RxTemp < 4) { $RxTemp = "4.0"; } if ($RxTemp > 400.0) { $RxTemp = "400.0"; }
$RXNF = $HTTP_GET_VARS["RXNF"]; if ($RXNF == "") { $RXNF = $HTTP_POST_VARS["RXNF"]; } if ($RXNF == "" || $RXNF < 0.1 || $RXNF > 10.0) { $RXNF = "2.0"; }
$RXLOSS = $HTTP_GET_VARS["RXLOSS"]; if ($RXLOSS == "") { $RXLOSS = $HTTP_POST_VARS["RXLOSS"]; } if ($RXLOSS == "" || $RXLOSS < 0.01 || $RXLOSS > 10.0) { $RXLOSS = "0.2"; }
$ANTTEMP = $HTTP_GET_VARS["ANTTEMP"]; if ($ANTTEMP == "") { $ANTTEMP = $HTTP_POST_VARS["ANTTEMP"]; } if ($ANTTEMP == "" || $ANTTEMP < 3 || $ANTTEMP > 1000) { $ANTTEMP = 20; }
$TXANTGAIN = $HTTP_GET_VARS["TXANTGAIN"]; if ($TXANTGAIN == "") { $TXANTGAIN = $HTTP_POST_VARS["TXANTGAIN"]; } if ($TXANTGAIN == "" || $TXANTGAIN < 3 || $TXANTGAIN > 100) { $TXANTGAIN = 30; }
$RXANTGAIN = $HTTP_GET_VARS["RXANTGAIN"]; if ($RXANTGAIN == "") { $RXANTGAIN = $HTTP_POST_VARS["RXANTGAIN"]; } if ($RXANTGAIN == "" || $RXANTGAIN < 3 || $RXANTGAIN > 100) { $RXANTGAIN = 30; }
$TXPOWERIN = $HTTP_GET_VARS["TXPOWERIN"]; if ($TXPOWERIN == "") { $TXPOWERIN = $HTTP_POST_VARS["TXPOWERIN"]; } if ($TXPOWERIN == "") { $TXPOWERIN = 30; }
$TXPOWER = $TXPOWERIN;
$PWRUNIT = $HTTP_GET_VARS["PWRUNIT"]; if ($PWRUNIT == "") { $PWRUNIT = $HTTP_POST_VARS["PWRUNIT"]; } if ($PWRUNIT == "") { $PWRUNIT = 1; }
if ($PWRUNIT == 2) { $TXPOWER = $TXPOWER + 30.0; } else { if ($PWRUNIT == 3) { if ($TXPOWER < 0.0001) { $TXPOWER = 0.001; $TXPOWERIN = "0.001"; } $TXPOWER = 10.0 * log10( $TXPOWER * 1000.0 ); } }
$MOONDIAM = $HTTP_GET_VARS["MOONDIAM"]; if ($TEMP == "") { $TEMP = $HTTP_POST_VARS["MOONDIAM"]; } if ($MOONDIAM == "") { $MOONDIAM = 3400; } if ($MOONDIAM < 100) { $MOONDIAM = 100; } if ($MOONDIAM > 3400) { $MOONDIAM = 3400; }
langfilt('
<P>
FI:<H2>EME matkavaimennuslaskenta</H2> EN:<H2>EME free-space path-loss calculation</H2>
<P> FI: Alkuperäisenä laskimena DF6CY:n Excel taulukko EN: Original calculator was DF6CY\'s Excel sheet : <A HREF="df9cy-eme-pathloss.xls">df9cy-eme-pathloss.xls</A> <P>
<FORM ACTION="eme-pathloss.php" METHOD=POST> <!-- <TABLE BORDER=1 RULES=ALL> --> <TABLE> <TBODY VALIGN=TOP>
<TR><TH> </TH> <TH> </TH> <TH> </TH><TH> </TH></TR>
<TR VALIGN=TOP><TH ALIGN=LEFT COLSPAN=4> FI:Signaali-kohina suhde / vastaanottimen herkkyysrajan laskentaparametrit EN:Signal to Noise Ratio / Receiver Sensitivity Limit Parameters </TH></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Vastaanottimen<BR>kaistaleveys EN:Receiver<BR>Bandwidth </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="RXBW" SIZE=9 ALIGN=RIGHT **: VALUE="'.$RXBW.'"></TD> FI: <TD>Hertzeinä EN: <TD>in Hertz </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Vastaanottimen<BR>lämpötila EN:Receiver<BR>Temperature </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="RXTEMP" SIZE=9 ALIGN=RIGHT **: VALUE="'.$RxTemp.'"></TD> FI: <TD>Kelviniä; 290 vastaa +18° C EN: <TD>in Kelvins; 290 is ROOM TEMPERATURE </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Vastaanoton<BR>haluttu SNR EN:Desired SNR </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="RXSNR" SIZE=9 ALIGN=RIGHT VALUE="'.$RXSNR.'"></TD> FI: <TD>desibeleinä EN: <TD>in dB </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Vastaanottimen<BR>kohinaluku EN:Receiver Noise<BR>Figure </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="RXNF" SIZE=9 ALIGN=RIGHT VALUE="'.$RXNF.'"></TD> **:<TD> FI:desibeleinä EN:in dB </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Häviöt ennen<BR>LNA:ta EN:Losses<BR>prior to LNA </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="RXLOSS" SIZE=9 ALIGN=RIGHT VALUE="'.$RXLOSS.'"></TD> **:<TD> FI:desibeleinä EN:in dB </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Antennnilämpötila<BR>(Taivas) EN:Antenna<BR>temperature (Sky) </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="ANTTEMP" SIZE=9 ALIGN=RIGHT VALUE="'.$ANTTEMP.'"></TD> **:<TD> FI:Kelvineinä [K] EN:in Kelvins [K] </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH ALIGN=LEFT COLSPAN=4> FI:Maksimikuuluvuuden laskentaparametrit EN:Calculation of maximum possible Free Space Range parameters </TH></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Lähetinantennin<BR>suuntavahvistus EN:Transmit<BR>antenna gain **:</TH><TD ALIGN=RIGHT> **:<INPUT TYPE="text" NAME="TXANTGAIN" SIZE=9 ALIGN=RIGHT **: VALUE="'.$TXANTGAIN.'"></TD><TD> FI:dBi EN:in dBi </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Vastaanotinantennin<BR>suuntavahvistus EN:Receive<BR>antenna gain **:</TH><TD ALIGN=RIGHT> **:<INPUT TYPE="text" NAME="RXANTGAIN" SIZE=9 ALIGN=RIGHT **: VALUE="'.$RXANTGAIN.'"></TD><TD> FI:dBi EN:in dBi </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH ROWSPAN=3> </TH><TH ALIGN=LEFT ROWSPAN=3> FI:Lähettimen<BR>teho EN:Transmit<BR>power **:</TH><TD VALIGN=TOP ALIGN=RIGHT ROWSPAN=3> **:<INPUT TYPE="text" NAME="TXPOWERIN" SIZE=9 ALIGN=RIGHT **: VALUE="'.$TXPOWERIN.'"></TD>');
printf("<TD><INPUT TYPE=radio NAME=PWRUNIT VALUE=1"); if ($PWRUNIT == 1) { echo(" CHECKED"); } printf("> "); langfilt('**: FI:desibeli-milliwatteina (dBm) EN:in dBm (dB relative to 1mW)'); langfilt('</TD></TR>
<TR><TD>'); printf("<INPUT TYPE=radio NAME=PWRUNIT VALUE=2"); if ($PWRUNIT == 2) { echo(" CHECKED"); } printf("> "); langfilt('**: FI:desibeli-watteina (dBW) EN:in dBW (dB relative to 1W)'); langfilt('</TD></TR>
<TR><TD>'); printf("<INPUT TYPE=radio NAME=PWRUNIT VALUE=3"); if ($PWRUNIT == 3) { echo(" CHECKED"); } printf("> "); langfilt('**: FI:Watteina (W) EN:in Wats (W)'); langfilt('</TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Taajuus EN:Frequency **:</TH><TD ALIGN=RIGHT> **:<INPUT TYPE="text" NAME="FREQ" SIZE=9 ALIGN=RIGHT **: VALUE="'.$FREQ.'"></TD><TD> FI:Gigahertseinä (GHz) EN:in GHz </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
<TR VALIGN=TOP><TH ALIGN=LEFT COLSPAN=4> FI:EME yhteyden erityisparametrit EN:EME situation special parameters </TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
**:<TR VALIGN=TOP><TH> </TH><TH ALIGN=LEFT> FI:Kuun läpimitta EN:Moon diameter </TH><TD ALIGN=RIGHT> <INPUT TYPE="text" NAME="MOONDIAM" SIZE=4 ALIGN=RIGHT **: VALUE="'.$MOONDIAM.'"></TD> **:<TD> FI:Kilometreinä<BR> <BR><B>Huomio: Käytä arvoa 3400 jos et tiedä varmaksi, FI: että lähetinantenni alivalaisee kuun!</B> EN:in kilometers<BR> <BR><B>NOTE: Use value of 3400 unless you know for EN: sure that the transmitter antenna will sub-illuminate the moon! EN:</B> </TD></TR>
<TR VALIGN=TOP><TH COLSPAN=4> </TH></TR>
</TBODY> </TABLE> <P> **: <INPUT TYPE="submit" NAME="doit" VALUE=" FI:Laske EN:Compute "> </FORM>
<P>
');
### ---- The business itself ----
### The original DF6CY EXCEL spread-sheet seems to ### contain a few bugs.. D34
# Rx Noise Power = k T RxBW; T = 290 K
#$RxTemp = 290.0; $k = 1.38E-23;
$MoonDist3 = 406700.0; # Apogee distance $MoonDist2 = 384400.0; # "Mean" distance $MoonDist1 = 356400.0; # Perigee distance
$MoonReflectivity = 0.07; ## This is quite good value for any frequency 10 thru 30 000 MHz.
$RxNPwr = 10.0 * log10($RXBW * $RxTemp * 1000 * $k); # dBm $RxNFTemp = pow( 10.0, $RXNF * 0.1) * $RxTemp - $RxTemp; $RxLossTemp = pow( 10.0, $RXLOSS * 0.1) * $RxTemp - $RxTemp;
$SysNoiseTemp = $ANTTEMP + $RxNFTemp + $RxLossTemp; $SysNoisePower = 10.0 * log10($RXBW * $SysNoiseTemp * 1000 * $k); $RxSensitivity = $SysNoisePower + $RXNF;
$PathLossBudget = $RXANTGAIN + $TXANTGAIN + $TXPOWER - $RxSensitivity; $PathRangeGM = pow( 10.0, ($PathLossBudget - 32.45 - 20 * log10($FREQ * 1000.0))/20)/1E6;
$EMERadarEQ3 = 10.0 * log10( 4.0 * $MoonDist3 * $MoonDist3 / ($MOONDIAM * $MOONDIAM / 4)); $EMERadarEQ2 = 10.0 * log10( 4.0 * $MoonDist2 * $MoonDist2 / ($MOONDIAM * $MOONDIAM / 4)); $EMERadarEQ1 = 10.0 * log10( 4.0 * $MoonDist1 * $MoonDist1 / ($MOONDIAM * $MOONDIAM / 4));
$EMEPathLoss3 = ( 32.45 + 20 * log10($FREQ * 1000.0) + 20 * log10($MoonDist3 * 2.0) + $EMERadarEQ3 - 10 * log10( $MoonReflectivity )); $EMEPathLoss2 = ( 32.45 + 20 * log10($FREQ * 1000.0) + 20 * log10($MoonDist2 * 2.0) + $EMERadarEQ2 - 10 * log10( $MoonReflectivity )); $EMEPathLoss1 = ( 32.45 + 20 * log10($FREQ * 1000.0) + 20 * log10($MoonDist1 * 2.0) + $EMERadarEQ1 - 10 * log10( $MoonReflectivity ));
$ExpectedEMEsnr3 = $PathLossBudget - $EMEPathLoss3; $ExpectedEMEsnr2 = $PathLossBudget - $EMEPathLoss2; $ExpectedEMEsnr1 = $PathLossBudget - $EMEPathLoss1;
### ---- present the results ----
function nbspprintf($FMT,$PARAM) { $ll = sprintf($FMT,$PARAM); echo ereg_replace(" ", " ", $ll); }
function print3vals($FMT,$unit,$V3,$V2,$V1) { printf("<TR><TH> </TH><TH ALIGN=LEFT> @ Apogee:</TH>"); printf("<TD ALIGN=RIGHT><CODE>"); nbspprintf($FMT,$V3); printf("</CODE></TD><TH ALIGN=LEFT> %s</TH></TR>\n",$unit);
printf("<TR><TH> </TH><TH ALIGN=LEFT> @ \"mean\":</TH>"); printf("<TD ALIGN=RIGHT><CODE>"); nbspprintf($FMT,$V2); printf("</CODE></TD><TH ALIGN=LEFT> %s</TH></TR>\n",$unit);
printf("<TR><TH> </TH><TH ALIGN=LEFT> @ Perigee:</TH>"); printf("<TD ALIGN=RIGHT><CODE>"); nbspprintf($FMT,$V1); printf("</CODE></TD><TH ALIGN=LEFT> %s</TH></TR>\n",$unit); }
langfilt(' <A NAME="result"></A><P>
FI:<B>Tulokset:</B> EN:<B>Results:</B>
<TABLE> <TBODY VALIGN=TOP> <TR><TH> </TH> <TH> </TH> <TD> </TD> <TH> </TH></TR> **:<TR><TH ALIGN=LEFT COLSPAN=4> FI:Vastaanottimen signaali/kohina suhde ja herkkyysraja EN:Receiver signal-to-noise ratio, and sensitivity limit **:<BR> </TH></TR> **:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Rx kaistaleveys: EN:<TH ALIGN=LEFT>Rx bandwidth: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.0f ",$RXBW); langfilt('</CODE></TD><TH ALIGN=LEFT> Hz</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Rx lämpötila EN:<TH ALIGN=LEFT>Rx temperature: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.0f ",$RxTemp); langfilt('</CODE></TD><TH ALIGN=LEFT> Kelvin [K]</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Sisäinen kohinateho: EN:<TH ALIGN=LEFT>Internal Noise Power: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RxNPwr); langfilt('</CODE></TD><TH ALIGN=LEFT> dBm</TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> <BR> FI:Systeemini signaali/kohina suhde: EN:My system Signal to Noise Ratio: **:<BR> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Tavoiteltu SNR: EN:<TH ALIGN=LEFT>Wanted SNR: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RXSNR); langfilt('</CODE></TD><TH ALIGN=LEFT> dB</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Vastaanottimen<BR>kohinaluku: EN:<TH ALIGN=LEFT>Rx Noise Figure: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.2f ",$RXNF); langfilt('</CODE></TD><TH ALIGN=LEFT> dB</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Vastaanottimen<BR>kohinalämpötila: EN:<TH ALIGN=LEFT>Rx Noise Temperature: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RxNFTemp); langfilt('</CODE></TD><TH ALIGN=LEFT> Kelvin [K]</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Häviöt ennen LNA:ta: EN:<TH ALIGN=LEFT>Losses prior to LNA: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.2f ",$RXLOSS); langfilt('</CODE></TD><TH ALIGN=LEFT> dB</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>.. kohinalämpötilana: EN:<TH ALIGN=LEFT>.. as Noise Temperature: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RxLossTemp); langfilt('</CODE></TD><TH ALIGN=LEFT> Kelvin [K]</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Antennin (taivaan)<BR>kohinalämpötila: EN:<TH ALIGN=LEFT>Antenna (Sky) temp: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$ANTTEMP); langfilt('</CODE></TD><TH ALIGN=LEFT> Kelvin [K]</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Kohinalämpötilojen summa: EN:<TH ALIGN=LEFT>Sum of Noise Temps: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$SysNoiseTemp); langfilt('</CODE></TD><TH ALIGN=LEFT> Kelvin [K]</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>.. kohinatehona: EN:<TH ALIGN=LEFT>.. as noise power: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$SysNoisePower); langfilt('</CODE></TD><TH ALIGN=LEFT> dBm</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Vastaanottimen herkkyys: EN:<TH ALIGN=LEFT>Rx Sensitivity: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RxSensitivity); langfilt('</CODE></TD><TH ALIGN=LEFT> dBm</TH></TR>
**:<TR><TH COLSPAN=4 ALIGN=LEFT> <BR> <BR> FI:Lasketaan arvio maksimikantamasta vapaatilassa: EN:Calculation of maximum possible Free Space Range: <BR> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Lähettimen antennivahvistus: EN:<TH ALIGN=LEFT>Tx Antenna Gain: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$TXANTGAIN); langfilt('</CODE></TD><TH ALIGN=LEFT> dB</TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Vastaanottimen antennivahvistus: EN:<TH ALIGN=LEFT>Rx Antenna Gain: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RXANTGAIN); langfilt('</CODE></TD><TH ALIGN=LEFT> dB</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Lähetysteho: EN:<TH ALIGN=LEFT>Tx power: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$TXPOWER); langfilt('</CODE></TD><TH ALIGN=LEFT> dBm</TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT> </TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$TXPOWER-30.0); langfilt('</CODE></TD><TH ALIGN=LEFT> dBW</TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT> </TH><TD ALIGN=RIGHT><CODE>'); $TxWatts = pow( 10.0, ($TXPOWER-30.0)*0.1); if ($TxWatts >= 999.5) { nbspprintf("%6.0f ", $TxWatts); } else { if ($TxWatts >= 99.95) { nbspprintf("%6.1f ", $TxWatts); } else { if ($TxWatts >= 9.995) { nbspprintf("%6.2f ", $TxWatts); } else { nbspprintf("%6.3f ", $TxWatts); } } } langfilt('</CODE></TD><TH ALIGN=LEFT> W</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Vastaanottimen herkkyys: EN:<TH ALIGN=LEFT>Rx Sensitivity: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$RxSensitivity); langfilt('</CODE></TD><TH ALIGN=LEFT> dBm</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Taajuus: EN:<TH ALIGN=LEFT>Frequency: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.3f ",$FREQ); langfilt('</CODE></TD><TH ALIGN=LEFT> GHz</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> FI:Matkahäviöbudjetti, sisältäen antennivahvistukset: EN:Path Loss Budget, including antenna gains: </TH></TR>
**:<TR><TH> </TH><TH> </TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$PathLossBudget); langfilt('</CODE></TD><TH ALIGN=LEFT> dB</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> FI:Vapaatilan kantama, miljoonaa kilometriä: EN:One Way Range of Free Space Path Loss Budget,<BR>millions of kilometers: </TH></TR>
**:<TR><TH> </TH><TH> </TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.3f ",$PathRangeGM); langfilt('</CODE></TD><TH ALIGN=LEFT> M km</TH></TR>
**:<TR><TH COLSPAN=4 ALIGN=LEFT> <BR> <BR> FI:EME yhteyden laskenta: EN:EME round-trip computation: <BR> </TH></TR>
**:<TR><TH> </TH> FI:<TH ALIGN=LEFT>Taajuus: EN:<TH ALIGN=LEFT>Frequency: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.3f ",$FREQ); langfilt('</CODE></TD><TH ALIGN=LEFT> GHz</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT> FI:Kuun läpimitta: EN:Moon diameter: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.0f ",$MOONDIAM); langfilt('</CODE></TD><TH ALIGN=LEFT> km</TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> FI:Kuun etäisyys: EN:Moon distance: </TH></TR>');
print3vals(" %1.0f ","km",$MoonDist3,$MoonDist2,$MoonDist1);
langfilt('**:<TR><TH> </TH><TH ALIGN=LEFT> FI:Kuun (RF) alebo: EN:Moon (RF) alebo: **:</TH><TD ALIGN=RIGHT><CODE>'); nbspprintf("%6.1f ",$MoonReflectivity * 100.0); langfilt('</CODE></TD><TH ALIGN=LEFT> %</TH></TR>
<TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> FI:Tutkayhtälö: EN:RADAR Equation: </TH></TR>'); print3vals(" %1.1f ","dB",$EMERadarEQ3,$EMERadarEQ2,$EMERadarEQ1);
langfilt(' <TR><TH COLSPAN=4> </TH></TR>
**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> FI:EME matkahäviöt: EN:EME Path Loss: </TH></TR>'); print3vals(" %1.1f ","dB",$EMEPathLoss3,$EMEPathLoss2,$EMEPathLoss1);
langfilt('**:
<TR><TH COLSPAN=4> </TH></TR> </TBODY> ');
if ($ExpectedEMEsnr2 < $RXSNR) { echo("<TBODY CLASS=\"red\">\n"); } else { echo("<TBODY CLASS=\"green\">\n"); }
langfilt('**:<TR><TH> </TH><TH ALIGN=LEFT COLSPAN=3> FI:Odotettavissa oleva EME-yhteyden signaali/kohina suhde: EN:Expected roundtrip Signal-to-Noise ratio: </TH></TR>'); print3vals(" %1.1f ","dB",$ExpectedEMEsnr3,$ExpectedEMEsnr2,$ExpectedEMEsnr1);
langfilt('**: </TBODY></TABLE>
<P>
FI: Yllä olevassa desibeliluvut ovat yhdellä desimaalilla, FI: muut ovat 2-3 merkitsevällä numerolla. FI: Pääasialliset syyt tähän ovat syöttöparametrien epätarkkuudet. EN: Above all decibel values are with one decimal, all others EN: are with 2-3 significant numbers EN: due to the accuracy (or lack, thereof) of the input values.
<P> FI: Siis: 12.34567 ja 0.001234567 pitää ymmärtää FI: lukuina 12.3 ja 0.00123. EN: That is: 12.34567, and 0.001234567 should be considered as EN: 12.3 and 0.00123 respectively!
<P>
<P><HR><P> <P>
FI: <H2>Laskentamenetelmä:</H2> EN: <H2>The computation method:</H2> <P>
FI:<A HREF="eme-pathloss.php?source=1">Lähdekoodi tälle sivulle</A> EN:<A HREF="eme-pathloss.php?source=1">Source for this page</A>
<P> <I><FONT SIZE="-4"> <PRE> # Rx Noise Power = k T RxBW; T = 290 K
#$RxTemp = 290.0; # 290 Kelvins $k = 1.38E-23; # Bolzman constant
$MoonDist3 = 406700.0; # Apogee distance $MoonDist2 = 384400.0; # "Mean" distance $MoonDist1 = 356400.0; # Perigee distance
$MoonReflectivity = 0.07; ## This is quite good value for any frequency 10 thru 30 000 MHz.
$RxNoisePwr = 10.0 * log10($RXBW * $RxTemp * $k) + 30.0; # dBW -> dBm $RxNFTemp = (10.0 ** ( $RXNF * 0.1)) * $RxTemp - $RxTemp; $RxLossTemp = (10.0 ** ( $RXLOSS * 0.1)) * $RxTemp - $RxTemp;
$SysNoiseTemp = $ANTTEMP + $RxNFTemp + $RxLossTemp; $SysNoisePower = 10.0 * log10($RXBW * $SysNoiseTemp * $k) + 30.0; # dBW -> dBm
$RxSensitivity = $SysNoisePower + $RXNF;
# [ TXPOWER in dBm ]
$PathLossBudget = $RXANTGAIN + $TXANTGAIN + $TXPOWER - $RxSensitivity;
# Path Loss Range in millions of kilometers.. # FREQ in GHz, must convert to MHz..
$PathRangeGM = 10.0 ** (($PathLossBudget - 32.45 - 20 * log10($FREQ * 1000.0))/20) / 1E6;
$EMERadarEQ = 10.0 * log10( 4.0 * $MoonDist ** 2 / ($MOONDIAM ** 2 / 4));
$EMEPathLoss = ( 32.45 + # Magic RADAR constant.. 20 * log10($FREQ * 1000.0) + # FREQ in MHz, raised to 2nd # power after taking the log.. 20 * log10($MoonDist * 2.0) + # Twice the distance, and # raised to 2nd power after # taking the log.. $EMERadarEQ - 10 * log10( $MoonReflectivity ));
$ExpectedEMEsnr = $PathLossBudget - $EMEPathLoss;
</PRE></FONT>
</I>
<P> EN:EME path-loss graph per frequency: FI:Graafi esittäen EME-matkavaimennusta taajuuden funktiona: <P ALIGN=CENTER> <A HREF="eme-pathloss-graph.gif"> <IMG SRC="eme-pathloss-graph.gif" WIDTH=553> </A> <BR> Tom A. Clark, W3IWI <P> FI: Huom: Tuo käyrästö (ja matematiikka sen takana) poikkeaa FI: yllä olevasta ja antaa noin 10 dB pienemmän matkavaimennuksen, FI: kuin mitä yllä lasketaan... EN: Note: The graph above (and the math behind it) does differ EN: from calculations given above, and is giving circa 10 dB EN: smaller path-loss, than what is calculated above..
<P> <HR> <P> ');
include("../include/sign-oh2mqk.inc");
printf("<P></TR></TABLE>\n");
include("../include/base.inc"); include("../include/foot.inc");
?>
Matti Aarnio <matti.aarnio@zmailer.org>; OH2MQK
|