А не замахнуться ли нам на оптическую связь? Лазеры, космос, CubeSat

    Материал, описанный ниже, является результатом совместной работы с преподавателями ТУ Ильменау в рамках местного курсового проекта (Advanced Research Project). Опыт интересный, но и не лишенный определенных сложностей. Делали мы этот проект (и ещё один) вместе с моей тогда ещё невестой — да, так вот нам повезло и учиться вместе, и поехать на стажировку в Германию. По правде сказать, эту часть работы делала в большей степени именно она, но популяризировать эту тему хочется мне.


    Итак, однажды мы назначили встречу, чтобы выбрать тему научной работы...



    Короткая предыстория (в лицах)


    Немецкий преподаватель №1: О, я слышал, вы там у себя изучаете спутники формата CubeSat?


    Я и моя будущая супруга: Ну, можно сказать и так...


    Н.п. №1: Здорово! А что если попробовать рассмотреть оптическую связь между спутниками? Я знаю, что в некоторых случаях оптика даёт лучшие показатели по энергетике, для таких маленьких спутников, я предполагаю, данный вопрос весьма важен. У меня есть один товарищ, который профессионально занимается беспроводной оптикой. Я думаю, получится интересный проект!


    Мы: Звучит интересно!


    (проходит некоторое время)


    Встреча с Немецким преподавателем №2.


    Н.п. №2: Да, всё это, конечно, здорово, но что за спутники? Такая небольшая масса? Они вообще могут коммуницировать? Кто это предложил? Понятно… Видимо, его мы на этих встречах не увидим. Отправляйтесь-ка на поиски реальных примеров — пока не верю.


    И мы отправились...


    И, к радости своей, нашли даже целую статью посвященную данной тематике. Важное различие заключалось в том, что связь через оптику предполагалась с Землей, а не между спутниками. Это весьма важно, потому как:


    • всякого рода рассеиваний и помех, конечно, в данном случае больше,
    • однако, и приёмник на Земле можно поставить достаточно крупный, и передатчик довольно-таки точный. А космический сегмент, сами понимаете, всё немного усложняет.


    Рис. 1. Схематическое изображение наноспутника AeroCube-OCSD [1].


    Но это было уже что-то, и мы снова назначили встречу.


    Н.п. №2: Нуу, хорошо, раз уж НАСА… Давайте попробуем посчитать энергобюджет и сравнить его с энергобюджетом радиолинии. Статьи по тематике скинуть?


    И он скинул свою статью [2] (я буду несколько раз на неё сегодня ссылаться) и ещё пару статей других авторов для общего понимания вопроса.


    Что же подразумевает под собой энергобюджет межспутниковой оптической линии?


    Беспроводной оптический энергобюджет


    А подразумевает он под собой, в общем, то же самое, что и обычно (необходимую мощность передатчика, принимаемую мощность, SNR и т.д.) — только шумы считаются несколько немного интереснее, чем в случае радиосвязи...


    Начнем моделировать — будет немного понятнее:


    import numpy as np
    from matplotlib.pyplot import plot, grid, xlabel, ylabel, legend
    import matplotlib.pyplot as plt
    from scipy import special

    Допустим, есть у нас такая вот система:


    #initial parameters for optical case
    R = 100*1e3  #distance between objects, e.g. satellites, in m (100 km)
    Bit_rate = 1e6 #bit rate (1 Mbps)
    h = 6.62607004*1e-34 # Planck constant
    c = 299792458 #speed of light
    wavelength_opt = 1550*1e-9 #optical wavelength
    freq_opt = c/wavelength_opt #optical frequency
    
    Ptx_opt = 1 #transmitter power in Watts
    Ptx_opt_dBm = 10*np.log10(Ptx_opt*1e3) #transmitter power in dBm

    Определим некоторое предполагаемое множество возможных диаметров оптических приёмников (по сути, линз) — держим в голове ограничения по размеру самих спутников:


    a = [i for i in range(0,50,5)]
    a = np.array(a)*1e-3 #diameter of the receiver (in meters)
    a[0] = 1*1e-3
    a_m = a*100 # for figures (in cm)


    Рис.2. Принципиальная схема фотоприемника: показан в качестве примера для сектора №1, углы падения которого отображаются на фотодиод №1 [2].


    И некоторые возможные углы расходимости луча лазера (нашего передатчика):


    div_ang  = [0.2*1e-3, 0.5*1e-3, 2*1e-3, 5*1e-3, 7*1e-3]
    div_ang = np.array(div_ang) #half of divergence angle


    Рис. 3. Иллюстрация угла расходимости луча лазера.


    Мощность на входе приёмника (received power) можно посчитать по формуле [2]:


    P_{rx} = \frac{A_{rx}}{2\pi R^2} \left(1 - \frac{ln2}{ln(cos \theta_{div})}\right)P_{tx} \quad [W]

    где A_{rx} = \frac{d_{rx}^2 \pi}{4} — это площадь приёма, d_{rx} — диаметр приёмной линзы, R — расстояние между спутниками, \theta_{div} — это половина угла расхождения и P_{tx} — передаваемая мощность.


    Prx_opt_dBm = np.zeros((len(div_ang), len(a)))
    Prx_opt = np.zeros((len(div_ang), len(a)))
    Pathloss_dBm = np.zeros((len(div_ang), len(a)))
    Pathloss = np.zeros((len(div_ang), len(a)))
    Arx_m2 = (np.pi/4)*(a**2)
    
    for f, dvangl in enumerate(div_ang): 
        #received power
        Prx_opt[f,:] = (Ptx_opt*Arx_m2)/ (2*np.pi*(R**2))\
                    *(1-(np.log(2)/np.log(np.cos(dvangl))))
        Prx_opt_dBm[f,:] = 10*np.log10(Prx_opt[f,:]*1e3)
        #path loss
        Pathloss[f,:] = (Arx_m2)/(2*np.pi*(R**2))\
                        *(1-(np.log(2)/np.log(np.cos(dvangl))))
        Pathloss_dBm[f,:] = 10*np.log10(Pathloss[f,:]*1000)

    Окей, что-то уже есть. Но насколько всё это реализуемо физически?


    Ограничения чувствительности


    Квантовые пределы


    Вспоминаем формулу энергии фотона:


    E = hf \quad \left[m^2 kg / s^2\right]

    где h = 6.62607004e-34 m^2 kg / s — это постоянная Планка, а f — частота несущего сигнала (Гц).


    Далее последует небольшая эвристика, почерпнутая нами из консультаций. Если кто-то знает теоретическое обоснование или опровержение — пожалуйста, поделитесь!

    Требуемая энергия (минимальная энергия на один бит информации на стороне приемника для обнаружения хоть чего-нибудь):


    E_{req, Q} = N_{ph}hf \quad \left[m^2 kg / s^2\right]

    где N_{ph} — среднее число фотонов, необходимое для обнаружения 1 бита информации.


    Теоретическая энергия для оптического импульса:


    E_theor = 10*h*freq_opt 

    Более реалистичное значение энергия для оптического импульса (диод APD):


    E_real_APD = 1000*h*freq_opt 

    Более реалистичное значение энергия для оптического импульса (диод PIN):


    E_real_PIN = 10000*h*freq_opt  


    Рис.4. Схема рассматриваемых фотодиодов.


    Требуемая (минимальная) мощность приема (максимальная чувствительность):


    P_{req, Q} = 10\log_{10}\left(\frac{E_{req, Q}B}{10^{-3}}\right) = 10\log_{10}\left(\frac{E_{req, Q}R_b}{10^{-3}}\right) \quad[dBm]

    где B — это полоса пропускания канала связи, а R_b — это битрейт.


    P_req_theor = 10*np.log10(E_theor*Bit_rate*1000)
    P_req_real_APD = 10*np.log10(E_real_APD*Bit_rate*1000)
    P_req_real_PIN = 10*np.log10(E_real_PIN*Bit_rate*1000)

    Но и это ещё не всё: свою ограничивающую лепту ведь вносит и модуляция.


    Границы, зависящие от вероятности ошибки


    В качестве отправной точки будем рассматривать модуляцию OOK (On-off Keying).



    Рис.5. Иллюстрация принципа OOK модуляции.


    Вероятность ошибок (BER) для неё составит [2]:


    P_b = \frac{1}{2}ercf\left(\sqrt{\frac{SNR}{2}}\right) = \frac{1}{2}ercf\left(\sqrt{\frac{P_{req}^2\gamma^2}{2\sigma^2}}\right)

    где SNR — это отношение сигнал-шум, \sigma^2 — это дисперсия шума (т.е. мощность шума), а \gamma — это чувствительность фотодиодов (photodiode responsivity).


    BER для OOK (PIN диод):


    P_{b, PIN} =  \frac{1}{2}ercf\left(\frac{\gamma P_{req, PIN}}{\sqrt{2\sigma_{PIN}^2}}\right)

    И следовательно:


    P_{req, PIN} = \frac{erfcinv(2P_b)\sqrt{2\sigma_{PIN}^2}}{\gamma} \quad[W]

    BER для OOK (APD диод):


    P_{b, APD} =  \frac{1}{2}ercf\left(\frac{\gamma M P_{req, APD}}{\sqrt{2\sigma_{APD}^2}}\right)

    И поэтому:


    P_{req, APD} = \frac{erfcinv(2P_b)\sqrt{2\sigma_{APD}^2}}{\gamma M} \quad[W]

    где M — это некоторое справочное усиление.


    Мощность шума


    Как вы могли, наверное, догадаться, шумы тоже будут рассчитываться немного по-разному.


    Мощность шума для PIN-диода


    Тепловой шум можно посчитать по формуле [3, p 11]:


    \sigma_{PIN}^2 = \left( \frac{4kT}{R_f} + 2qI_{BE} \right)I_2R_b = N_0 + 2qI_{BE}I_2R_b \quad [W]

    где T = 290 K, k = 1.38064852e-23 — постоянная Больцмана, R_f = \frac{100}{2\pi C_d R_b} — прямое сопротивление, C_d — ёмкость фотодиода, q — заряд электрона, I_{BE} = \frac{I_C}{\beta} — ток база-эмиттер (base-emitter или leakage или bias current), I_2 — значение Personick integral (- сдаюсь, не нашёл адекватного перевода, прошу подсказать) для теплового шума, R_b — битрейт, N_0 — спектральная плотность шума.


    Cd = 2*1e-12 #capacitance of the photodiode
    T = 290 #absolute temperature
    Rf = 100/(Cd*2*np.pi*Bit_rate) #photodiode resistance
    k = 1.38064852*1e-23 #Bolzman constant
    I2 = 0.562 #depends on filter (Personick integral) for match filter
    q = 1.60217662*1e-19 #electron charge
    Ibe = (0.25*1e-3)/200
    
    #RESULT
    thermal_Noise_variance_add = 2*q*Ibe*I2*Bit_rate
    
    N_0 = 4*k*T/Rf #thermal noise density for PIN
    thermal_Noise_variance = N_0*Bit_rate*I2

    Мощность шума для APD-диода


    Для этого диода приготовьтесь — много латинских букв:


    \sigma_{APD}^2 = \frac{4kT}{R_f}I_2R_b + 2qI_dM_{Si}^2F_{Si}I_2R_b = N_0 + 2qI_2R_b(I_{BE} + M_{Si}^2F_{Si}I_d) \approx N_0 + 2qI_2I_dR_bM_{Si}^2F_{Si} \quad [W]

    где I_d — темновой ток (dark current), M_{Si} — это типичное усиление (кремний), F_{Si} — коэффициент избыточного шума (the excess noise factor).


    Параметры почерпнуты из следующего:



    В данной работе не учитывается шум входного полевого транзистора (input FET noise) и шум нагрузки входного полевого транзистора (noise of the input FET load). Подробнее об этих терминах читайте в [3, p 15].

    Id = 0.05*10e-9 #dark current (500e-12)
    M_Si = 100 #typical gain
    F_Si = 7.9 #excess noise factor
    
    apd_noise_Si = 2*q*Id*I2*Bit_rate*(M_Si**2)*F_Si #noise

    Моделирование


    Принимаемая мощность


    Подставим всё выясненное в наши формулы:


    r = 0.53 #A/W photodiode responsivity
    Pb = 10e-9 #Bit error rate (BER)
    P_req_pin = 10*np.log10((special.erfcinv(2*Pb)*
                             np.sqrt(2*(thermal_Noise_variance+thermal_Noise_variance_add))/(r))*1e3) #in dBm
    P_req_apd_lin = special.erfcinv(2*Pb)*np.sqrt(2*(thermal_Noise_variance+apd_noise_Si))/(r*M_Si)
    P_req_apd = 10*np.log10(P_req_apd_lin*1e3) #in dBm
    
    fig = plt.figure(figsize=(10, 7), dpi=300)
    
    req_theor = np.ones((len(a_m),))*P_req_theor
    req_real_APD = np.ones((len(a_m),))*P_req_real_APD
    req_real_PIN = np.ones((len(a_m),))*P_req_real_PIN
    PIN = np.ones((len(a_m),))*P_req_pin
    APD = np.ones((len(a_m),))*P_req_apd
    
    a_m = a_m.reshape((10,))
    
    plot(a_m, Prx_opt_dBm[0,:],'-o', label = '0.2 mrad')
    plot(a_m, Prx_opt_dBm[1,:],'-o', label = '0.5 mrad')
    plot(a_m, Prx_opt_dBm[2,:],'-o', label = '2 mrad')
    plot(a_m, Prx_opt_dBm[3,:],'-o', label = '5 mrad')
    plot(a_m, Prx_opt_dBm[4,:],'-o', label = '7 mrad')
    plot(a_m, req_theor,'k--', label = 'Sensitivity limit (theory)')
    plot(a_m, req_real_APD, '--*', label = 'Sensitivity limit (APD)')
    plot(a_m, req_real_PIN,  '--', label = 'Sensitivity limit (PIN)')
    plot(a_m, APD, '-*',label = '1e-9 OOK BER limit (APD)')
    plot(a_m, PIN,  label = '1e-9 OOK BER limit (PIN)')
    
    plt.gca().invert_yaxis()
    xlabel('Rx diameter (cm)'); ylabel('Prx and Preq (dBm)')
    legend()
    grid()
    plt.show()


    Поясним: смотреть нужно на те части кривых, которые лежат ниже соответствующих горизонтальных линий.


    Передаваемая мощность


    А теперь давайте рассмотрим обратную проблему: зафиксируем некоторую мощность на приемной стороне и посмотрим какую нужно будет приложить мощность на стороне передающей:


    P_{tx, dBm} = P_{rx, dBm} + |L| + |L_{add}|

    где L = 10\log_{10}\left[ \frac{A_{rx}}{2\pi R^2}\left(1 - \frac{ln2}{ln(cos \theta_{div})}\right)\right] — это затухания на пути распространения (path loss), а L_{add} — это некоторый запас на потери (margin).


    Prx_req_dB_APD = -65.5
    Prx_req_dB_PIN = -52.9
    
    margin = 5
    Arx_m2 = np.zeros((len(a)))
    
    Ptx_variable_APD = np.zeros((len(div_ang), len(a)))
    Ptx_variable_PIN = np.zeros((len(div_ang), len(a)))
    #area rx
    Arx_m2 = (np.pi/4)*(a**2)
    
    for f, dvangl in enumerate(div_ang):
        #Ptx required
        Ptx_variable_APD[f,:] = Prx_req_dB_APD + np.abs(Pathloss_dBm[f,:]) + margin;
        Ptx_variable_PIN[f,:] = Prx_req_dB_PIN + np.abs(Pathloss_dBm[f,:]) + margin;
    
    fig = plt.figure(figsize=(10, 7), dpi=300)
    
    plot(a_m, Ptx_variable_APD[0,:],'-o', label = 'APD, 0.2 mrad')
    plot(a_m, Ptx_variable_PIN[0,:],'-*', label = 'PIN, 0.2 mrad')
    plot(a_m, Ptx_variable_APD[1,:],'-o', label = 'APD, 0.5 mrad')
    plot(a_m, Ptx_variable_PIN[1,:],'-*', label = 'PIN, 0.5 mrad')
    plot(a_m, Ptx_variable_APD[2,:],'-o', label = 'APD, 2 mrad')
    plot(a_m, Ptx_variable_PIN[2,:],'-*', label = 'PIN, 2 mrad')
    
    xlabel('Rx diameter (cm)'); ylabel('P_tx (dBm)')
    legend()
    grid()
    plt.show()


    Сравнение со случаем электро-магнитного межспутникового канала можно посмотреть в нашей статье в журнале. Там же описаны причины, почему в итоге от такого сценария мы отказались, но об этом я скажу и здесь.

    Подводные камни


    И вот мы, потрепанные справочниками и математическими формулами, но всё же окрыленные полученными результатами (да что там — самим фактом красивых графиков!), назначаем финальную встречу перед защитой. И сталкиваемся с новым витком важных деталей…


    Н.п. №2: Ну, хорошо, это понятно, что есть выигрыши. Убедили, что есть уже и какая-то аппаратная база. А что с нацеливанием? Вы, наверное, слышали про PAT-систему (Pointing, Acquisition, and Tracking).



    Рис. 6. Упрощенная схема системы беспроводной оптической приёмопередачи.


    Н.п. №2: Да, есть примеры оптических каналов для больших спутников [4], однако, в этом случае вы можете позволить себе и больший диаметр приёмника, и больший угол расходимости лазера, и большую мощность передачи. Более того, сам CubeSat, я думаю, очень сильно вибрирует при движении. Для радиоканала на относительно небольших частотах это, может, и не существенно, однако, для оптики — сами понимаете. Существует ли такая точная стабилизация и PAT-система на данный момент?


    И мы сильно призадумались...


    Н.п. №2: Вот что, по своей части я вам положительную оценку ставлю. Однако, мой вам совет: спускайтесь с небес на землю...


    И мы, измотанно выдохнув, спустились: проект со спутниковой оптикой решили не продолжать. Тем более, что и у нас уже за время частых встреч накопилось некоторое выгорание...


    Однако, нет-нет да и проскользнет в сердце нотка студенческой надежды, что препод был неправ в своем скепсисе. Нет-нет да и хочется найти в достижениях современной техники ту самую концепцию. И взор устремляется ввысь...



    Литература


    1. Janson S. W., Welle R. P. The NASA optical communication and sensor demonstration program: an update //28th Annual AIAA/USU Conference on Small Satellites. – 2014. – С. 4-7.


    2. Wolf, M., & Kreß, D. (2003). Short-range wireless infrared transmission: the link buoget compared to RF. IEEE wireless communications, 10(2), 8-14.


    3. https://www.nii.ac.jp/qis/first-quantum/forStudents/lecture/pdf/noise/chapter12.pdf


    4. Smutny B. et al. 5.6 Gbps optical intersatellite communication link //Free-Space Laser Communication Technologies XXI. – International Society for Optics and Photonics, 2009. – Т. 7199. – С. 719906.


    • +16
    • 3,3k
    • 6
    Поделиться публикацией

    Похожие публикации

    Комментарии 6

      +5
      вы наверно будете смеяться, но вот статья от 9 апреля 2019, судя по которой один кубсат таки смог помигать другому кубсату с расстояния в 2400+ км.
        +1
        О, спасибо вам огромное! Было интересно (и приятно) прочитать.
        +1

        Насколько я понял лазерная межспутниковая коммуникация менее энергозатратна, но есть проблема с прицеливанием PAT и вибрациями в формате cubesat. SpaceX сейчас работает над лазерной системой для Starlink, правда у них спутник на порядок крупнее.

          +1
          Я думаю, что когда они изобретут (и запатентуют ))) подвес лазера или линзы для прицеливания, как это сейчас делается для камер в квадрокоптерах, то дела у них пойдут намного бустрее.
          +1

          Касательно Pat советую почитать про steering mirror (не знаю как правильно перевести), и адаптивную оптику.
          Вроде как ничего лучше пока не придумали.
          Хотя и не понятно как его в кубсат положить.

            0
            Спасибо! Возьмусь как-нибудь на досуге.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое