В целях настройки и обеспечения функционирования оборудования связи необходимо управлять спутниковым конвертером (далее LNB англ. low-noise block downconverter,). Либо с помощью самого приемника, либо с помощью внешнего устройства.
Для переключения диапазона LNB используется управляющий сигнал(УС) 22 кГц.
Если формирователя нет в приёмнике, то дело усложняется. Внешние генераторы дорогие и их трудно найти.
![](https://habrastorage.org/getpro/habr/upload_files/9ca/097/5f7/9ca0975f7c075d342eacb90b32a8eb45.jpg)
В данной статье описаны два, на взгляд автора, простых и дешёвых в реализации способа синтезировать сигнал такой частоты с помощью популярных микроконтроллеров(МК) от компании Espressif. Это МК ESP8266 и ESP32.
Отладочная плата WeMos D1 mini (ESP8266)
![](https://habrastorage.org/getpro/habr/upload_files/c4b/96d/489/c4b96d489882b92c5b9a80fc87f68abb.png)
Для формирования УС с помощью ESP8266 возьмём отладочную плату WeMos D1 mini. Стоит немного. Есть альтернативы приобрести дешевле, чем в магазине шаговой доступности. Полноценного цифро-аналогового преобразователя(далее ЦАП(DAC) на борту у ESP8266 нет. Формировать будем с помощью встроенного ШИМ и фильтра нижних частот (ФНЧ) по приведенной ниже схеме. Т.о. меандр заданной частоты "отмоем" до синусоиды. Частота среза ФНЧ 24 кГц.
![](https://habrastorage.org/getpro/habr/upload_files/52d/a36/a09/52da36a09f915f1a9b3fc1623a23aee4.png)
Для написания кода программы МК воспользуемся популярной и доступной средой разработки Arduino IDE. Данная платформа, ввиду своего широкого применения, имеет всё необходимое для компиляции и загрузки программ на МК. Так же имеется множество библиотек написанных разработчиками плат, так и любителями. Как устанавливать необходимые для работы с МК ESP8266 и ESP32 расширения есть исчерпывающие статьи, а так же масса информации на других площадках:
Установка ESP8266 в Arduino IDE (руководство для ОС Windows)
Установка ESP32 в Arduino IDE (руководство для ОС Windows)
Вот целых 9 строчек невероятно сложного кода (даже ни одной библиотекой не воспользовались):
int duty; // переменная для заполнения ШИМ
void setup() {
pinMode(2, OUTPUT); //устанавливаем режим вывода МК D4(GPIO02)
duty = 512; //для установки заполнения 50% (100% - 1024)
analogWriteFreq(22800); //подбираем установку частоты работы ШИМ
}
void loop() {
analogWrite(2, (duty)); //формируем меандр
}
Загружаем скетч в МК и видим на его выводе(в схеме vol1) корявый меандр:
![](https://habrastorage.org/getpro/habr/upload_files/08e/236/d0d/08e236d0dc515c8bc66d4bbc69affcbf.png)
А вот так сигнал выглядит после первого RC звена(val2):
![](https://habrastorage.org/getpro/habr/upload_files/396/d05/5fa/396d055fadc866308afedec6c086a24d.png)
После второго(val3):
![](https://habrastorage.org/getpro/habr/upload_files/76f/248/ed1/76f248ed15192c8e4e85f8a48d063161.png)
И на выходе с ФНЧ (val4) вы видим что-то похожее на синусоиду:
![](https://habrastorage.org/getpro/habr/upload_files/fdc/efd/fdc/fdcefdfdc6f1ed066c562fb0f6f35e74.png)
В целом, результат соответствует требованиям стандартного протокола управления спутниковым оборудованием.
Из минусов, помимо необходимости собирать ФНЧ, следует отметить:
В случае если на том же МК собрано какое-нибудь исполнительное устройство (например, кнопки и прочее управление LNB, обработка WiFi) синтез прервётся на неопределенное время. Есть ограничения использования ШИМ, в виду особенностей реализации этой функции на ESP8266.
Отладочная плата с ESP32
![](https://habrastorage.org/getpro/habr/upload_files/21d/0df/484/21d0df484fe077a7b701d3233b70fc7e.png)
В отличии от платы ESP8266 такое устройство дороже примерно в два раза, но функционал и возможности на много шире. Для формирования УС используем GPIO25, на плате он отмечен как D25. Ниже приведена схема подключения.
![](https://habrastorage.org/getpro/habr/upload_files/ec3/363/f7f/ec3363f7f292b9e97c841f4de170ef11.png)
На борту имеется два полноценных ЦАП. Однако, ввиду того что использование стандартных библиотек имеет ограничения, для прямого синтеза необходимо воспользоваться специальной библиотекой. По ссылке доступно подробное описание работы библиотеки, её возможности и примеры. https://github.com/yellobyte/DacESP32
![](https://habrastorage.org/getpro/habr/upload_files/38f/577/9e9/38f5779e9fae3cada23d5fe92f535753.png)
В менеджере плат выбираем этот модуль (на нем заработало):
![](https://habrastorage.org/getpro/habr/upload_files/d94/682/94a/d9468294ae1ebe882eccbde816d88458.png)
Собственно вот код программы с комментариями:
#include <Arduino.h>
#include "DacESP32.h" //подключаем библиотеку
DacESP32 dac1(DAC_CHANNEL_1); //называем канал
void setup() {
dac1.outputCW(19750); // подбираем значение для частоты 22 кГц
dac1.setCwScale(DAC_CW_SCALE_4);//подбираем, близкое искомому, значение по амплитуде
}
void loop()
{}
Итак, загрузили скетч на плату и видим на выходе D25 такой вот сигнал:
![](https://habrastorage.org/getpro/habr/upload_files/bd6/efb/644/bd6efb64453f934de42c4978d5310511.png)
Параметры сигнала так же соответствуют требованиям протокола управления спутниковым оборудованием. Для сравнения, приведу осциллограмму сигнала управления, реализованного на бюджетном и стареньком телевизионном приемнике. Вероятно, разработчики не очень заморачивались с формой сигнала. Компаратор со стороны LNB способен отреагировать даже на такой меандр.
![](https://habrastorage.org/getpro/habr/upload_files/a56/07a/7e0/a5607a7e09747b4fbb964eeaf289db1d.png)
Заключение
Не смотря на широкий спектр аппаратных средств настройки и подключения спутникового оборудования - для специалистов и любителей, проектирование собственных устройств контроля остаётся актуальной темой.
Обобщая, необходимо отметить простоту получения результата и доступность модулей, использованных в работе. Возможности плат с МК ESP не ограничиваются представленными в данной статье, а так же продемонстрированные механизмы могут найти применение и в других областях. Так же следует сказать, что схожие методы можно реализовать и на базе других МК. Материалов для изучения на тему DDS в доступе не мало, что говорит о возрастающем интересе к этой теме.
zatim
Что то не похоже на шим. Формируется обычный меандр. Можно было обойтись и обычной 555 в таком случае.
Кстати, если хочется хороший синус, то есть копеечные фильтры на переключаемых конденсаторах. Порядки фильтрации там - 6...8, даже после меандра будет синус, визуально не отличимый от настоящего.
EfimkinDM Автор
Согласен. + 555 стоит копейки и стабилен. Почему не подошла такая схема в в этом конкретном случае - напряжение питания.
Про фильтры интересно. Спасибо.