DUC-DDC ТРАНСИВЕР UA3REO: РЕЛИЗ ВЕРСИИ 1.2

Большое обновление проекта в программной части.

Предыдущая статья по разработке трансивера доступна тут.

В этой версии все изменения касаются только прошивки, не затрагивая аппаратную часть, среди них:

+Новые шрифты в интерфейсе на основе Sans, новые цвета

Обновил интерфейс, сделал шрифты на основе TTF шрифтов Sans. Можно подключить абсолютно любые, используя программу fontconvert.exe (находится в папке с проектом), она создаёт .h файл со шрифтом, который достаточно подключить в проект и кастомизировать интерфейс на свой вкус и лад. У меня получилось примерно так:

+Очередь отображения данных в LCD (исправление визуальных глюков)

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

+Банки памяти VFO-A VFO-B

Реализовано 2 банка памяти каналов, что позволяет быстро переключатся между диапазонами, модами или частотами.

+CW_L/CW_U мода RX + смещение CW генератора

Для приёма CW сигналов реализовано смещение гетеродина на определённое количество герц (указывается в настройках). Следующим этапом будет подключение ключа и полноценная реализация работы кодом морзе.

+Приём УКВ

Особенностью цифровой обработки данных является то, что мы можем оцифровать сигнал без особых потерь только на половине частоты АЦП (снимать верхнюю и нижнюю точку синуса). Но если на входе будет сигнал с частотой выше этой половины (так называемой первой частоты Найквиста), он никуда не денется и будет мешать оцифровке.

В связи с этим перед входом АЦП используют фильтры нижних частот, которые отрезают всё лишнее. В моём проекте он реализован в плате предусилителя.

Но, если мы не будем использовать ФНЧ, и попробуем оцифровать частоты выше половины частоты АЦП, получается занимательный эффект. Принимаемый сигнал начинает наслаиваться «гармошкой» на весь диапазон. То есть при частоте АЦП в 50мгц мы имеем:

0-25Мгц — обрабатывается стандартными методами.
25-50Мгц — эта частота будет наслоена на 0-25, но в перевернутом виде, тоесть 26 мгц можно принять прослушивая 24мгц, а 49мгц на частоте в 1мгц.
50-75Мгц — наслаивается на 0-25Мгц
75-100Мгц — опять инвертированный участок.
И так далее, с каждым шагом всё больше теряя чувствительность и часть выборок.

Картинки по запросу частоты найквиста

Картинки по запросу частоты найквиста

В итоге, по тех. спецификации на АЦП AD9226, можно принять сигнал до 750мгц, я с успехом принимал сигналы в 430Мгц, а с мощными FM-вещалками проблем нет вообще.

Итак, в проекте реализован приём частот до 750мгц (зависит от качества реализации входных цепей АЦП), для этого необходимо отключить предусилитель и подсоединить УКВ антенну.

+FM мода RX (режимы WFM/NFM)

Реализована демодуляция FM сигнала, что в паре с предыдущим пунктом даёт возможность прослушивания FM радио и УКВшных радиолюбителей. Код скопирован с проекта mcHF трансивера, рекомендую к ознакомлению. Для WFM режима использованы формулы из проекта RTL-SDR.
FM вещалки имею ширину полосы чуть большую, чем 48кгц, используемые в проекте, что приводит к потере несущей, но это не особо мешает принимать радио.

+Регулировка RF усиления на входе аудио-процессора

В проекте нет регулятора аналогового усилителя по ВЧ, но это легко исправить цифровым усилением. В случае, когда не используется предусилитель и AGC — теперь усиление можно выставить вручную.

+Исправлены косяки на главной плате

Доработана трассировка общей платы, в которую устанавливаются все модули, особенно пересмотрен узел LCD, который собирал очень много помех от соседних узлов.

+Системное меню настроек

Т.к. в проекте набирается всё больше настроек, которые можно «подкрутить» под индивидуальные потребности, реализовано «сервисное меню», вызываемое из основного. Например скорость работы с энкодером или смещение CW генератора.

+Исправлен косяк с USB

В связи с обновлением библиотеки HAL от STM32, появилась проблема с определением USB устройства, в данный момент ошибка исправлена и USB можно смело использовать для отладки.

+Доработка FFT и водопада

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

+Регулировка силы подсветки LCD

Подсветка LCD имеет значительное энергопотребление, и часто избыточно, поэтому в системном меню реализована возможность снижения уровня подсветки методом ШИМ генерации.

+Вывод ошибок при инициализации кодека, FPGA. Кодек не блокирует запуск устройства

Теперь ошибки инициализации аудио-кодека и FPGA не мешают запуску устройства, а лишь на пару секунд отображают ошибку, которую необходимо исправить для корректной работы. Это должно помочь при сборке устройства «с нуля».

+Отображение силы сигнала в dbm

Помимо S-метра реализовано отображение силы сигнала в dBm единицах, сначала значение высчитывается исходя из схемотехники проекта и разрядности АЦП, а далее применяется коэффициент калибровки, который необходимо установить каждому индивидуально в файле trx_manager.h, для калибровки можно использовать генератор сигналов или подручный трансивер с настроенной шкалой.
Также, теперь с-метр корректно работает с выключенным AGC.

+Снижение подсветки LCD за неактивностью

В системных настройках теперь задаётся, через сколько секунд/минут экран будет переведён в режим работы без подсветки для экономии электроэнергии. При вращении энкодера или клике по экрану работы возобновляется.

Файлы проекта доступны в 2х версиях (в архиве на момент публикации, и в репозитории github, постоянно обновляемые), в них включены файлы и исходные коды прошивок, даташиты, смета, схемы и чертежи плат.

Архив проекта версии 1.2.2
Репозиторий проекта на GitHub.

10 мыслей о “DUC-DDC ТРАНСИВЕР UA3REO: РЕЛИЗ ВЕРСИИ 1.2”

  1. Перешел на 1.2. Ну ОООчень громкий звук становится после включения AGC 🙂 Ранее было более комфортная разница. Еще какой-то прерывистый писк появился. Качество приема отличное.
    FFT хорошо калибруется лишь при наличии на спектре сильных сигналов, если их нет — все в желто-красном заборе. Думаю, не помешало бы усреднение показаний, чтобы палки не скакали так быстро, попробую сам сделать, но у Вас скорее всего качественнее выйдет 🙂

      1. Выложил видео. Еще пара моментов: если быстро крутить валкодер, на строке частоты появляются лишние линии, а при очень сильном уровне сигнала налезают друг на друга цифры S-метра.

          1. Перенес апдейты к себе. Скорость FFT радует 🙂 Забор пропал.
            Забыл еще ранее написать, иногда появляется надпись BUF и подолгу не исчезает, на качество приема заметных влияний нет. Пропадает в основном при переключении диапазона.

        1. В файле fft.h есть конструкция FFT_NOP_DELAY — если есть возможность, покрутите задержку на меньшие значения, у меня на высоких скоростях отображения экрана идёт сильная помеха на аудио, грешу на разводку платы, хотелось бы проверить.

          1. Ау меня наоборот — без этих задержек посторонний звук сильно ослаб 🙂 Думаю, тут дело в наводках по питанию от процессора, т.к. когда открыть меню и FFT не отрисовывается, этот звук пропадает. На моей плате есть место под LDO, завтра вечером распаяю и запитаю от 12В.

            1. Решение оказалось куда проще — скорость выводов FSMC в STM32CubeMX надо поставить в Low (было Very High), при этом скорость LCD отличная, а помех нет.

  2. Здравствуйте. Обратил внимание, что при возврате на диапазон при переключении не сохраняется частота, а устанавливается по умолчанию. Иногда появляется надпись BUF и подолгу не исчезает, на качество приема заметных влияний нет. Пропадает в основном при переключении диапазона.

    1. Приветсутвую! сохранение частоты по диапазонам пока не реализовано, только в рамках переключения VFO. Но в планах будет.
      Насчёт буфера странно — у меня только при запуске на секунду появляется и исчезает… попробую отловить.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *