Генератор управляющего сигнала LNB

В целях настройки и обеспечения функционирования оборудования связи необходимо управлять спутниковым конвертером (далее LNB англ. low-noise block downconverter,).
Либо с помощью самого приемника, либо с помощью внешнего устройства.
Для переключения диапазона LNB используется управляющий сигнал (УС) 22 кГц.
Если формирователя нет в приёмнике, то дело усложняется. Внешние генераторы дорогие и их трудно найти.

9ca0975f7c075d342eacb90b32a8eb45.jpg

В данной статье описаны два, на взгляд автора, простых и дешёвых в реализации способа синтезировать сигнал такой частоты с помощью популярных микроконтроллеров (МК) от компании Espressif.  Это МК ESP8266 и ESP32.

Отладочная плата WeMos D1 mini (ESP8266)

c4b96d489882b92c5b9a80fc87f68abb.png

Для формирования УС с помощью ESP8266 возьмём отладочную плату WeMos D1 mini. Стоит немного. Есть альтернативы приобрести дешевле, чем в магазине шаговой доступности. Полноценного цифро-аналогового преобразователя (далее ЦАП (DAC) на борту у ESP8266 нет. Формировать будем с помощью встроенного ШИМ и фильтра нижних частот (ФНЧ) по приведенной ниже схеме. Т.о. меандр заданной частоты «отмоем» до синусоиды. Частота среза ФНЧ 24 кГц.

52da36a09f915f1a9b3fc1623a23aee4.png

Для написания кода программы МК воспользуемся популярной и доступной средой разработки Arduino IDE. Данная платформа, ввиду своего широкого применения, имеет всё необходимое для компиляции и загрузки программ на МК. Так же имеется множество библиотек написанных разработчиками плат, так и любителями. Как устанавливать необходимые для работы с МК ESP8266 и ESP32  расширения есть исчерпывающие статьи, а так же масса информации на других площадках:

https://wiki.iarduino.ru/page/WEMOS_start/
https://wiki.iarduino.ru/page/esp32-windows/
Вот целых 9 строчек невероятно сложного кода (даже ни одной библиотекой не воспользовались):

int duty;                    // переменная для заполнения ШИМ
void setup() {
   pinMode(2, OUTPUT);       //устанавливаем режим вывода МК D4(GPIO02)
    duty = 512;              //для установки заполнения 50% (100% - 1024)
   analogWriteFreq(22800);   //подбираем установку частоты работы ШИМ
}
void loop() {
   analogWrite(2, (duty));    //формируем меандр
}

Загружаем скетч в МК и видим на его выводе (в схеме vol1) корявый меандр:

08e236d0dc515c8bc66d4bbc69affcbf.png

А вот так сигнал выглядит после первого RC звена (val2):

396d055fadc866308afedec6c086a24d.png

После второго (val3):

76f248ed15192c8e4e85f8a48d063161.png

И на выходе с ФНЧ (val4) вы видим что-то похожее на синусоиду:

fdcefdfdc6f1ed066c562fb0f6f35e74.png

В целом, результат соответствует требованиям стандартного протокола управления  спутниковым оборудованием.
Из минусов, помимо необходимости собирать ФНЧ, следует отметить:

В случае если на том же МК собрано какое-нибудь исполнительное устройство (например, кнопки и прочее управление LNB, обработка WiFi) синтез прервётся на неопределенное время. Есть ограничения использования ШИМ, в виду особенностей реализации этой функции на ESP8266.


Отладочная плата с ESP32

21d0df484fe077a7b701d3233b70fc7e.png

В отличии от платы ESP8266 такое устройство дороже примерно в два раза, но функционал и возможности на много шире. Для формирования УС используем GPIO25, на плате он отмечен как D25. Ниже приведена схема подключения.

ec3363f7f292b9e97c841f4de170ef11.png

На борту имеется два полноценных ЦАП. Однако, ввиду того что использование стандартных библиотек имеет ограничения, для прямого синтеза необходимо воспользоваться специальной библиотекой. По ссылке доступно подробное описание работы библиотеки, её возможности и примеры.  https://github.com/yellobyte/DacESP32

38f5779e9fae3cada23d5fe92f535753.png

В менеджере плат выбираем этот модуль (на нем заработало):

d9468294ae1ebe882eccbde816d88458.png

Собственно вот код программы с комментариями:

#include 
#include "DacESP32.h"             //подключаем библиотеку
DacESP32 dac1(DAC_CHANNEL_1);     //называем канал
void setup() {
  dac1.outputCW(19750);           // подбираем значение для частоты 22 кГц
  dac1.setCwScale(DAC_CW_SCALE_4);//подбираем, близкое искомому,  значение по амплитуде
}
void loop()
{}

Итак, загрузили скетч на плату и видим на выходе D25 такой вот сигнал:

bd6efb64453f934de42c4978d5310511.png

Параметры сигнала так же соответствуют требованиям протокола управления спутниковым оборудованием. Для сравнения, приведу осциллограмму сигнала управления, реализованного на бюджетном и стареньком телевизионном приемнике. Вероятно, разработчики не очень заморачивались с формой сигнала. Компаратор со стороны LNB способен отреагировать даже на такой меандр.

a5607a7e09747b4fbb964eeaf289db1d.png

Заключение.
 Не смотря на широкий спектр аппаратных средств настройки и подключения спутникового оборудования — для специалистов и любителей, проектирование собственных устройств контроля остаётся актуальной темой.
 Обобщая, необходимо отметить простоту получения результата и доступность модулей, использованных в работе. Возможности плат с МК ESP не ограничиваются представленными в данной статье, а так же продемонстрированные механизмы могут найти применение и в других областях. Так же следует сказать, что схожие методы можно реализовать и на базе других МК. Материалов для изучения на тему DDS в доступе не мало, что говорит о возрастающем интересе к этой теме.

© Habrahabr.ru