{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Table of contents\n", "\n", "### Tutorials (Python)\n", "1. Sat-to-Ground (and vice versa) link budget calculation\n", "2. [Intersatellite Link budget calculation (wireless optical)](https://nbviewer.jupyter.org/github/kirlf/cubesats/blob/master/Optical-ISL-LB.ipynb)\n", "\n", "### Surveys\n", "1. [Statistical channel model survey](https://github.com/kirlf/cubesats/blob/master/statistical_model.md)\n", "2. [Modulation and coding \\(FEC\\) survey](https://github.com/kirlf/cubesats/blob/master/fec.md)\n", "\n", "\n", "## 1.1. Main formulas\n", "\n", "### 1.1.1. Expected Signal-to-Noise ratio\n", "\n", "Before we start considering even different types of modulation it is extremely valuable to know what SNR values can be expected on the receiver side. In fact, we can calculate the SNR as:\n", "\n", "$$ SNR = P_t + G_t + G_r + \\eta_{t} + \\eta_{r} - L_r - L_t - L_{add} - L - N \\qquad (1.1) $$\n", "\n", "where $N$ is the total termal noise power \\(relates to the noise spectral density $N_0=kT_{noise}$ and double-sided white noise variance $\\sigma^2=\\frac{N_0}{2}$\\) in dBm, $P_t$ is the transmitted power in dBm, $G_t$ and $G_r$ are the antenna gains on the transmitter and receiver sides respectively \\(in dBi\\), $\\eta_{t}$ и $\\eta_{r}$ are feeder gains in dB, $L_t$ and $L_r$ are the feeder losses in dB, $L$ is the path losses in dB, $L_{add}$ is additional losses \\(some margin\\) in dB.\n", "\n", "### 1.1.2. Path loss\n", "\n", "Path losses can be estimated by Friis formula:\n", "\n", "\n", "$$ L = 20lg\\frac{\\lambda}{4\\pi d}[dB] \\qquad (1.2)$$\n", "\n", "\n", "where $\\lambda$ \\(relates to the carrier frequency $f_0=\\frac{c}{\\lambda}$, $c$ is the speed of electromagnetic wave\\) is the wave length and $d$ is the distance between satellite and the ground station.\n", "\n", "### 1.1.3. Noise power\n", "\n", "Noise power can be calculated by:\n", "\n", "$$\n", "N = 10lg\\left(\\frac{kT_{noise}B_{noise}}{10^{-3}}\\right) [dBm] \\qquad (1.3)\n", "$$\n", "\n", "where $k$ is the Boltzmann constant, $T_{noise}$ is the equivalent noise temperature and $B_{noise}$ is the noise bandwidth. According to \\[1, p.98\\] the noise bandwidth $B_{noise}$ can be estimated as $\\gamma B$, where $B$ is the receiver bandwidth and $\\gamma$ is the constant from 1.002 to 1.57 that relates to configuration of the receiver.\n", "\n", "Equivalent noise temperature is not the physical temperature of an antenna. It is equal to the temperature of a resistor, which would have the same thermal noise power in the given frequency band. This parameter can be represented as:\n", "\n", "$$\n", "T_{noise} = T_a+T_e \\qquad (1.4)\n", "$$\n", "\n", "where $T_a$ is the sum of antenna losses and sky noise and $T_e$ is the receiver noise temperature. Additionally, receiver noise temperature can be calculated by following formula:\n", "\n", "$$\n", "T_e=T_0(F_{sys}-1) \\qquad (1.5)\n", "$$\n", "\n", "where $T_0$ is equal to $290K$ and $F_{sys} = 10^{\\frac{NF}{10}}$ is the noise factor which can be estimated by noise figure \\($NF$\\) of the receive antenna.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2. Additional losses\n", "The short review of additional losses can be obtained via the [following link](https://nbviewer.jupyter.org/github/kirlf/cubesats/blob/master/LinkBudget/AddLoss.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.3. Parameters summary\n", "\n", "Let us provide some parameters summary:\n", "\n", "1. **Initial point:** carrier frequency, hight of the orbit;\n", "2. **Equipment dependent parameters \\(adjustable\\)**: transmitted power , receiver bandwidth ;\n", "3. **Reference data:** antenna gains and losses, feeder gains and losses , noise temperature, additional losses.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.4. Sat-to-Ground distance and visibility time\n", "\n", "The theoretical description can be obtained via the [following link](https://nbviewer.jupyter.org/github/kirlf/cubesats/blob/master/LinkBudget/SatDist.ipynb). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.5. Considered equipment\n", "\n", "In fact, we use informstion about common example of ground station such as [IC-910H](http://sicom.ru/catalog/radiostancii/lyubitelskie/bazovye/icom-ic-9100.html) or [ISIS ground station](https://www.cubesatshop.com/product/full-ground-station-kit-vhfuhfs-band/) however we can estimate some parameter of mobile stations of real space communication systems also. Fortunately, a lot of this information is open and available on official sites: [Iridium](https://www.iridium.com%20), Globalstar[](https://www.globalstar.com) and [Gonets](http://www.gonets.ru/rus/%20).\n", "\n", "These parameters can be used for calculation of up-link link budget.\n", "\n", "For down-link estimation real example of CubeSat transceivers such as [NanoCom AX100](https://gomspace.com/Shop/subsystems/communication/nanocom-ant2000.aspx) \\(fig. 1.6.1\\) may be used. Additionally, as an example of CubeSat UHF/VHF antenna omnidirectional [NanoCom ANT430](https://gomspace.com/Shop/subsystems/communication/nanocom-ant430.aspx) can be considered.\n", "\n", "\n", "For larger possible bandwidth 2.4GHz range also should be considered. For this range patch-antenna NanoCom ANT2000 and S-band transceiver [NanoCom SR2000](https://gomspace.com/Shop/subsystems/communication/nanocom-sr2000.aspx) are available. For low speed transmission \\(for example, for signaling\\) UHF/VHF NanoCom [ANT430](https://gomspace.com/Shop/subsystems/communication/nanocom-ax100.aspx) can be used." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.6. Tests" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from SmallSatLB import *\n", "import pandas as pd\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The source code of the **SmallSatLB** can be obtained via the [following link](https://github.com/kirlf/cubesats/blob/master/LinkBudget/SmallSatLB.py)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 'draft'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "16.59103380442575" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l_d = LinkBudget(750*1e3, 'draft')\n", "snr, EIRP = l_d.expected_snr(2.4e9, 1, 7.3, 35, 1.5e6, 1000)\n", "max(snr)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "phi = np.pi*np.array(range(0,181,5))/180\n", "plt.plot(180*phi/np.pi, snr, '-o', label='2.4 GHz')\n", "plt.title('Expected SNRs')\n", "plt.xlabel('Elevation angles (degrees)')\n", "plt.ylabel('SNR (dB)')\n", "plt.legend()\n", "plt.grid()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "d = l_d.distance()\n", "phi = np.pi*np.array(range(0,181,5))/180\n", "plt.plot(180*phi/np.pi, d*1e-3, '-o')\n", "plt.title('Distances')\n", "plt.xlabel('Elevation angles (degrees)')\n", "plt.ylabel('Distance (km)')\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 'precise'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.556823874020452" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l_p = LinkBudget(750*1e3, 'precise',\\\n", " L_node = 100+90, incl = 90 - 61.5,\\\n", " lat_gs = 22, long_gs = 200, eps_min = 5)\n", "snr, EIRP = l_p.expected_snr(2.4e9, 1, 7.3, 35, 1.5e6, 1000)\n", "min(snr)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8.667000351847676" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max(snr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visibility time" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "alts = np.array([i for i in range(200, 2000, 50)])*1e3\n", "\n", "l_d = LinkBudget(alts, 'draft')\n", "l_p = LinkBudget(alts, 'precise',\\\n", " L_node = 100+90, incl = 90 - 61.5,\\\n", " lat_gs = 22, long_gs = 200, eps_min = 5)\n", "\n", "t0 = pd.DataFrame(np.round(l_d.visibility_time(),2),\\\n", " columns=['Visibility time (min) formula 1.4.6'])\n", "t1 = pd.DataFrame(np.round(l_p.visibility_time(),2),\\\n", " columns=['Visibility time (min) formula 1.4.7'])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Orbit altitudes (km)Visibility time (min) formula 1.4.6Visibility time (min) formula 1.4.7
0200.06.93NaN
1250.07.81NaN
2300.08.62NaN
3350.09.39NaN
4400.010.122.53
5450.010.824.04
6500.011.505.16
7550.012.156.12
8600.012.796.97
9650.013.427.76
10700.014.038.51
11750.014.639.21
12800.015.239.89
13850.015.8210.55
14900.016.4011.18
15950.016.9711.80
161000.017.5412.41
171050.018.1013.00
181100.018.6613.59
191150.019.2214.16
201200.019.7714.73
211250.020.3315.29
221300.020.8715.85
231350.021.4216.40
241400.021.9716.95
251450.022.5117.49
261500.023.0518.03
271550.023.5918.56
281600.024.1319.10
291650.024.6719.63
301700.025.2120.16
311750.025.7520.69
321800.026.2921.21
331850.026.8221.74
341900.027.3622.26
351950.027.9022.78
\n", "
" ], "text/plain": [ " Orbit altitudes (km) Visibility time (min) formula 1.4.6 \\\n", "0 200.0 6.93 \n", "1 250.0 7.81 \n", "2 300.0 8.62 \n", "3 350.0 9.39 \n", "4 400.0 10.12 \n", "5 450.0 10.82 \n", "6 500.0 11.50 \n", "7 550.0 12.15 \n", "8 600.0 12.79 \n", "9 650.0 13.42 \n", "10 700.0 14.03 \n", "11 750.0 14.63 \n", "12 800.0 15.23 \n", "13 850.0 15.82 \n", "14 900.0 16.40 \n", "15 950.0 16.97 \n", "16 1000.0 17.54 \n", "17 1050.0 18.10 \n", "18 1100.0 18.66 \n", "19 1150.0 19.22 \n", "20 1200.0 19.77 \n", "21 1250.0 20.33 \n", "22 1300.0 20.87 \n", "23 1350.0 21.42 \n", "24 1400.0 21.97 \n", "25 1450.0 22.51 \n", "26 1500.0 23.05 \n", "27 1550.0 23.59 \n", "28 1600.0 24.13 \n", "29 1650.0 24.67 \n", "30 1700.0 25.21 \n", "31 1750.0 25.75 \n", "32 1800.0 26.29 \n", "33 1850.0 26.82 \n", "34 1900.0 27.36 \n", "35 1950.0 27.90 \n", "\n", " Visibility time (min) formula 1.4.7 \n", "0 NaN \n", "1 NaN \n", "2 NaN \n", "3 NaN \n", "4 2.53 \n", "5 4.04 \n", "6 5.16 \n", "7 6.12 \n", "8 6.97 \n", "9 7.76 \n", "10 8.51 \n", "11 9.21 \n", "12 9.89 \n", "13 10.55 \n", "14 11.18 \n", "15 11.80 \n", "16 12.41 \n", "17 13.00 \n", "18 13.59 \n", "19 14.16 \n", "20 14.73 \n", "21 15.29 \n", "22 15.85 \n", "23 16.40 \n", "24 16.95 \n", "25 17.49 \n", "26 18.03 \n", "27 18.56 \n", "28 19.10 \n", "29 19.63 \n", "30 20.16 \n", "31 20.69 \n", "32 21.21 \n", "33 21.74 \n", "34 22.26 \n", "35 22.78 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alts = pd.DataFrame(alts, columns=['Orbit altitudes (km)'])\n", "pd.concat([alts*1e-3, t0, t1], axis=1, ignore_index=False, join='inner')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "\n", "\\[1\\] L. Kantor, Satellite communication and broadcasting. Directory,Radio and communication,1988\n", "\n", "*The work on this tutorial have inspired me to prepare the same stuff in my native laguage: [\"Подсчитываем энергобюджет радиолинии для спутника формата CubeSat\" (habr.com)](https://habr.com/ru/post/447728/). Probably, it can also be usefull for someone.*\n", "\n", "\n", "## Afterwords \n", "\n", "Huh, cannot but share this: \n", "\n", "\n", "\n", "*Source: https://xkcd.com/2148/*\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }