Микроконтроллеры STM32: пишем драйвер для Si5351
Si5351 — это управляемый по I2C генератор частот от 8 кГц до 160 МГц. Чип имеет три канала с выходным импедансом 50 Ом. Уровень сигнала может регулироваться примерно от 2 до 11 dBm. За счет сочетания цены и качества Si5351 очень популярен среди радиолюбителей. В частности, он используется в КВ-трансиверах uBITX и QCX, антенных анализаторах EU1KY и NanoVNA. Сегодня мы познакомимся с данным генератором поближе, а также поймем, как он может быть использован с микроконтроллерами STM32.
Существует несколько вариантов Si5351. Различия между ними описаны в даташите [PDF]. Характерно, что это даташит для Si5351‐B, более новых модификаций чипа на частоты от 2.5 кГц до 200 МГц. Они обратно совместимы с Si5351 без «‐B» в названии. В рамках этой статьи мы рассмотрим лишь базовый функционал, общий для всех модификаций.
Эксперименты будем проводить на следующей плате:
Такие модули предлагают многие продавцы как на eBay, так и на AliExpress.
Из готовых библиотек под STM32 было найдено три варианта. Во-первых, библиотека из кода прошивки антенного анализатора EU1KY. Библиотека умеет все необходимое, но распространяется под GPL. Также реализация показалась мне подозрительно сложной. Во-вторых, библиотека из кода прошивки NanoVNA. Код на первый взгляд нормальный, но лицензия также GPL. Наконец, в-третьих, библиотека si5351-stm32, которая является портом библиотеки под Arduino от Adafruit. Обе распространяются под лицензией BSD. Код мне преимущественно понравился. Но в нем не нашлось процедуры «генерируй сигнал с такой-то частотой на таком-то канале». Также в коде была обнаружена пара ошибок.
Fun fact! Драйвер для Si5351 есть в коде ядра Linux. Хотя и не очень понятно, зачем он там нужен.
Было решено взять за основу последнюю библиотеку и доработать ее. Вся необходимая информация была найдена в документе AN619: Manually Generating an Si5351 Register Map for 10-MSOP and 20-QFN Devices [PDF]. Хотя написан он немного запутанно. Отчасти, потому что одновременно рассказывает о разных модификациях Si5351, а отчасти, потому что использует одинаковые обозначения для разных вещей.
Рассмотрим упрощенную структурную схему Si5351:
Чип имеет два встроенных ФАПЧ (PLL). Каждый может быть настроен при помощи трех целых чисел a, b и c. Частота внешнего кварцевого резонатора Fxtal преобразуется по приведенным выше формулам, в результате чего может быть получена любая частота Fpll от 600 МГц до 900 МГц. Для наших модулей Fxtal составляет 25 МГц.
Сигнал с частотой Fpll идет на делитель MultiSynth divider (MS). В отличие от PLL, MS уже не два, а по одному на канал. MS также настраивается при помощи трех целых чисел x, y и z, но он не умножает сигнал, а делит. На выходе MS может быть любая частота Fms от 500 кГц до 200 МГц.
Наконец, последний блок в схеме — это R divider. Его по одному на канал, как и MS. Этот блок выполняет деление Fms на степень двойки от 1 до 128. Блок нужен главным образом для получения частот ниже 500 кГц. Выходной сигнал CLK может быть в интервале от 8 кГц до 160 МГц.
Характерно, что a, b и c чипу мы не передаем. Вместо этого вычисляются:
P1 = 128 * a + (128 * b)/c – 512
// P2 = 128 * b – c * ((128 * b)/c)
P2 = (128 * b) % c
P3 = c
… и уже они передаются Si5351. Таким же образом происходит передача x, y и z.
Управление Si5351 осуществляется путем записи значений в 8-и битные регистры по I2C. Запись происходит точно так же, как ранее мы это делали для EEPROM. Нужно только знать, как интерпретируются данные, записанные в регистр с тем или иным адресом. Это описано в AN619 и уже реализовано во взятой за основу библиотеке.
Также нам понадобится алгоритм, вычисляющий параметры PLL и делителей для получения заданной частоты. Алгоритм получился довольно простым:
// Calculates PLL, MS and RDiv settings for given Fclk in 8K..160M rangevoid si5351_Calc(int32_t Fclk,
si5351PLLConfig_t* pll_conf,
si5351OutputConfig_t* out_conf) {
Fclk *= 64;
out_conf->rdiv = SI5351_R_DIV_64;
} else {
out_conf->rdiv = SI5351_R_DIV_1;
}
// Apply correction, _after_ determining rdiv.
Fclk = Fclk – ((Fclk/1000000)*si5351Correction)/100;
const int32_t Fxtal = 25000000;
int32_t a, b, c, x, y, z, t;
if(Fclk < 81000000) {
// Valid for Fclk in 0.5..112.5 Meg range
// However an error is > 6 Hz above 81 Megs
a = 36; // PLL runs @ 900 Meg
b = 0;
c = 1;
int32_t Fpll = 900000000;
x = Fpll/Fclk;
// t = ceil(Fclk/0xFFFFF)
t = Fclk >> 20;
if(Fclk & 0xFFFFF) {
t += 1;
}
y = (Fpll % Fclk) / t;
z = Fclk / t;
} else {
// Valid for Fclk in 75.
if(Fclk >= 150000000) {
x = 4;
} else if (Fclk >= 100000000) {
x = 6;
} else {
x = 8;
}
y = 0;
z = 1;
int32_t numerator = x*Fclk;
a = numerator/Fxtal;
// t = ceil(Fxtal/0xFFFFF)
t = Fxtal >> 20;
if(Fxtal & 0xFFFFF) {
t += 1;
}
b = (numerator % Fxtal) / t;
c = Fxtal / t;
}
pll_conf->mult = a;
pll_conf->num = b;
pll_conf->denom = c;
out_conf->div = x;
out_conf->num = y;
out_conf->denom = z;
}
Суть алгоритма в следующем. Если нужно получить частоту ниже 1 МГц, умножим частоту на 64, взяв соответствующий R, и этим сводим задачу к поиску решения для 0.5-64 МГц. Далее, если требуется получить частоту до 81 МГц, говорим, что PLL работает на 900 МГц.
Представленный алгоритм находит такие параметры, что в худшем случае результирующая частота отличаться от целевой на 6 Гц, в связи с ошибками округления. Это в теории. В физическом мире все чуточку сложнее, особенно на частотах ниже 1 МГц и выше 100 МГц. Тем не менее, вооруженный частотомером я наблюдал ошибку не более 10 Гц на всем интервале от 8 кГц до 160 МГц. Для моих текущих задач такой точности хватит с лихвой. Но если в вашей задаче требуется большая точность, то, естественно, придется придумать другой алгоритм.
Окончательный интерфейс библиотеки был поделен на две части — базовый и расширенный. Базовый интерфейс выглядит так:
const int32_t correction = 978;si5351_Init(correction);
// 28 MHz @ ~7 dBm
si5351_SetupCLK0(28000000, SI5351_DRIVE_STRENGTH_4MA);
// 144 MHz @ ~7 dBm
si5351_SetupCLK2(144000000, SI5351_DRIVE_STRENGTH_4MA);
// Enable CLK0 and CLK2
si5351_EnableOutputs((1<<0) | (1<<2));
Поскольку чип имеет два PLL, то совершенно не зависеть друг от друга могут только два канала. В базовом интерфейсе в качестве таких каналов были выбраны CLK0 и CLK2, поскольку в модуле Si5351 они физически находятся далеко друг от друга. К ним просто удобнее подключаться, чем к CLK0 и CLK1.
Расширенный интерфейс позволяет использовать три канала, но он сложнее:
si5351_Init(correction);
si5351PLLConfig_t pll_conf;
si5351OutputConfig_t out_conf;
int32_t Fclk = 7000000; // 7 MHz
si5351_Calc(Fclk, &pll_conf, &out_conf);
si5351_SetupPLL(SI5351_PLL_A, &pll_conf);
si5351_SetupOutput(0, SI5351_PLL_A, SI5351_DRIVE_STRENGTH_4MA,
&out_conf);
si5351_EnableOutputs(1<<0);
При использовании этого интерфейса можно и нужно использовать знание о том, что si5351_Calc
всегда использует Fpll = 900 МГц для частот ниже 81 МГц. В принципе, этот Fpll подходит для частот до 112.5 МГц, если вас устраивает ошибка генерируемой частоты 13 Гц вместо 6 Гц. Вы можете пропатчить si5351_Calc
соответствующим образом.
Наконец, вас наверняка интересует, что это за:
const int32_t correction = 978;
В реальном мире Si5351 генерирует сигналы, частота которых имеет ошибку. Эта ошибка зависит от частоты, притом линейно. Физические причины, по которым зависимость именно линейная, мне неизвестны. Однако любой нормальный драйвер к Si5351 поддерживает так называемый correction factor для компенсации данной ошибки. У меня он определяется, как ошибка при генерации частоты 100 МГц. Поскольку зависимость линейная, то ошибка может быть измерена на любой частоте. Например, если вместо 10,000,000 Гц без коррекции вы получаете 10,000,097.8 Гц, то коррекция равна 97.8*(100 МГц/10 МГц) = 978. Теперь с коррекцией 978 синтезатор должен выдавать ровно 10 МГц, а также любую другую частоту с погрешностью ~10 Гц в худшем случае.
Fun fact! Si5351 генерирует сигнал прямоугольной формы, который богат гармониками. С подходящими фильтрами и усилителями генератор можно использовать на частотах до 1.5 ГГц и даже выше.
Полную версию получившейся библиотеки и пример ее использования вы найдете в этом репозитории на GitHub. Как обычно, буду рад вашим вопросам и дополнениям.
Дополнение: Примеры использования драйвера вы найдете в статьях Самодельный SSB-трансивер на диапазон 40 метров и AYN: телеграфный QRP трансивер на 20/40 метров.
Метки: STM32, Алгоритмы, Беспроводная связь, Электроника.
Синтезатор на Si5351 для техники прямого преобразования
Гетеродин является одним из важнейших узлов приемопередающей аппаратуры. От стабильности работы гетеродина зависит насколько стабильно будет работать приемник или передатчик. Конструкции с колебательным контуром подвержены воздействию внешних факторов, что нередко приводит к дрейфу частоты, а это не приемлемо. Есть и еще один недостаток – небольшой диапазон генерируемых частот. По этим причинам и не только, классические гетеродины все чаще заменяют синтезаторами частот.
Вот и я, увлёкшись прямым преобразованием задумался о надежном и в то же время простом синтезаторе. Самым лучшим и недорогим вариантом для меня оказалась микросхема Si5351. Тем более ее можно найти в виде готового модуля CJMCU-5351.
На известном китайском сайте я приобрёл кое-какие детали:
- Arduino Nano,
- IPS display,
- модуль CJMCU-5351,
- энкодер.
Несколько слов о деталях. Дисплей на базе контроллера ST7789 использует для обмена данными шину SPI. Лучше, конечно использовать шину I2C, так экономнее расходуются свободные пины Ардуино. Но и у дисплея с SPI шиной тоже есть плюсы: для обновления данных не нужно перезагружать все данные выведенные на экран. Изменяется только конкретная область. Модуль CJMCU-5351 поставляется в комплекте с тремя SMA коннекторами, которые, к слову я почти не использовал. Энкодер тоже в виде готового модуля для Ардуино. Так удобнее. Что касается самого проекта, я нашёл в Сети прототип и доработал его. Схема соединения модулей представлена ниже.
Схема соединения модулей
Схема довольно простая. Работает только один генератор CLK0. Диапазон от 1 до 100 МГц. Два оставшихся генератора отключены. Настройка частоты производится энкодером. Встроенная кнопка отвечает за изменение шага перестройки: 10 Гц, 100 Гц, 1 КГц, 10 КГц, 100 КГц и 1 МГц. Кнопка “Calibration” отвечает за включение и отключение режима калибровки синтезатора. В режиме калибровки, изменение опорной частоты производится так же при помощи энкодера.
Как вы могли заметить, устройству требуется два напряжения питания: 3.3В и 5В. Напряжение в 3.3 В я взял прямиком с выхода 3.3V Ардуино. Мощности встроенного стабилизатора должно хватить на питание дисплея и платы генератора. Поэтому, вам потребуется только стабильное питание в 5В для Ардуино Нано.
С дисплеем пришлось повозиться. Дисплей на базе контроллера ST7789 занял целых 4 свободных пина Ардуино. Плюс к этому пришлось добавить в проект библиотеки SPI.h и Arduino_ST7789_Fast.h, что дополнительно добавило весу проекту.
Как я писал выше, при обновлении данных перерисовывается только специально отведенная для этих данных область экрана. Область прямоугольной формы перезаливается определенным цветом, тем самым затирая старое значение. Реализация непростая, но оно того стоит: экран не рябит и не напрягает глаза.
Так же в схеме я не отметил установку резисторов на 100-240 Ом в соединениях между Ардуино и дисплеем. Установить их все же необходимо. Делается это чтобы согласовать логические уровни, иначе дисплей уходил в глухую оборону и ничего не показывал. Это опасно еще и тем, что может выгореть контроллер дисплея ST7789.
Готовое устройство.
Немного ошибся с распиновкой Ардуино,пришлось исправить желтым проводом. Вывел так же дополнительно 4 штырька для подключения чего-либо полезного и отдельно колодку от выходов генератора. Хотя, на мой взгляд лучше подключать при помощи SMA разъема и экранированого кабеля.
Основной режим работы и режим калибровки.
Точно пока не решил что строить на этом генераторе – просто приёмник радиолюбителя или полноценный трансивер. Проект для Ардуино и некоторые библиотеки я выложу ниже одним архивом. Если будут недостатки или улучшения – дайте знать.
Наблюдения за формой выходного сигнала, выявили, что на частотах около 1…2 МГц и ниже форма сигнала близка к меандру. При увеличении частоты меандр перерастает в синусоиду. При этом, при увеличении частоты уменьшается амплитуда выходного сигнала. Советую учитывать это при добавлении синтезатора в свою аппаратуру. Ниже видео с результатами моих трудов. Там же и видно изменение формы сигнала.
- http://rfanat. ru/s25/dds_sio5351_pro-min.html – прототип синтезатора взят отсюда.
- Распиновка и в общем про Ардуино Нано тут.
- https://www.silabs.com/documents/public/data-sheets/Si5351-B.pdf – Даташит на si5351
- Архив с моим проектом и некоторыми библиотеками
UT5QBC: Синтезатор частоты на Si5351
Совместная разработка с UV7QAE. Решили сделать для себя свой синтезатор частоты (под свои запросы и желания).Синтезатор для КВ (160м – 10м) трансивера с преобразованием VFO = Fсигн. + BFO.
Контроллер STM32F100C8T6B в корпусе LQFP48. Синтез на Si5351a. Экран цветной 1,8″ 160х128 (ST7735), 320х240 ILI9341, черно белый NOKIA 5510 (эконом вариант).
Энкодер решили не ставить на плату, это позволит применить энкодер любой по размерам так же разместить его в любом месте конструкции.
Можно отказаться вообще от энкодера так как можно управлять частотой кнопками INC и DEC выбрав в системном меню ENCODER ENABLE = OFF.
Было опробовано четыре опт. энкодера разных производителей заявленным питанием 5в. Все они прекрасно работали от питания 3,3в. Если вы все таки примените питание энкодера 5в обратите внимание что согласование уровней 5в>3,3в отсутствует.
Схема рассчитана на подключение оптического энкодера, так что если кто будет повторять ее с мех.энкодером поставьте RC фильтра по входам энкодера.
Печатная плата 85мм х 45мм в формате Sprint-Layout 6 под кнопки размером 6х6мм synthesizer_si5351_buttons_6x6M.lay
Экран 2,8″. | Экран 1,8″. |
Выход CLK0 – частота VFO.
Выход CLK1 – частота SSB BFO.
Выход CLK2 – частота CW BFO
Можно установить реверс частот при передачи в “SYSTEM MENU” опция “TX REVERSE”.
Сигналы на выходах опция “TX REVERSE” = ON,
OUTPUT | RX | TX | CW RX | CW TX |
CLK0 | VFO | SSB BFO | VFO+CW SHIFT | — |
CLK1 | SSB BFO | VFO | CW BFO | VFO |
CLK2 | — | — | — | CW BFO |
Кнопки.
Up, Dn – Вверх, вниз по диапазонам, меню.
Mode – Смена LSB, USB, CW в рабочем режиме, в меню для быстрого ввода частоты.
Menu – вход/выход в меню.
Выбор функций кнопок в “SYSTEM MENU” опция “BUTTON MODE”.
VFO, Step – Переключение VFO A/B, Шаг перестройки частоты. В меню изменяет значения.
Или.
Inc(+), Dec(-) – перестройка по частоте в рабочем режиме. В меню изменяет значения.
Дополнительный мод. Подключение переменного резистора для управления частотой перестройки RIT.
На схеме дополнения выделены красным цветом, также нужно включить опцию в системном меню 03.RIT VARIABLE RESISTOR .
Вход в “USER MENU” короткое нажатие кнопки Menu.
Вход в “SYSTEM MENU” нажатие и удержание кнопки Menu больше 1сек.
USER MENU.
01.FREQUENCY STEP | 1/5/10/50/100/500/1000 Hz | Шаг перестройки частоты |
02.ENCODER DYNAMIC SPEED | ON/OFF | Динамическая скорость перестройки частоты. |
03.ENCODER DIVIDER | 1-300 | Делитель энкодера. Перестройка частоты на один оборот энкодера. |
04.RIT ENABLE | YES/NO | Включение и выключение RIT. |
05.RIT SHIFT | +-9999Hz | Смещение частоты приема. |
06.CW SHIFT | 100Hz – 1500Hz | Тон приема CW. |
07.CW TX TIMEOUT | 0ms – 1000ms | Время задержки после отпускания ключа до перехода на прием. |
SYSTEM MENU.
01.ENCODER ENABLE | YES/NO | VFO/Step or Frequency |
02.ENCODER REVERSED | YES/NO | Реверс энкодера |
03.RIT VARIABLE RESISTOR | YES/NO | (мод)RIT переменный резистор подключен к РА3 |
04.INPUT VOLTAGE DIVIDER | 4-12 | Входной делитель напряжения 4 – 12 |
05.OUTPUT CURRENT OUTPUTS | 2mA – 8mA | Регулировка выходного напряжения CLK0, CLK1, CLK2 установкой тока выходов. |
06.TX OTPUT REVERSED | ON/OFF | Реверс частот на выходах VFO и BFO при передаче. |
07.BANDWIDTH FILTER SSB | 1000Hz – 10 000Hz | Полоса пропускания фильтра SSB. |
08.BANDWIDTH FILTER CW | 100Hz – 1000Hz | Полоса пропускания фильтра CW. |
09.VFO FREQUENCY MODE | FREQ+IF,FREQ,FREQx2,FREQx4 | CLK0=VFO+BFO, CLK0=VFO, CLK0=(VFOx2), CLK0=(VFOx4) |
10.FREQUENCY BFO LSB | 100kHz – 100mHz | Частота ПЧ НБП. |
11.FREQUENCY BFO USB | 100kHz – 100mHz | Частота ПЧ ВБП. |
12.FREQUENCY BFO CW LSB | 100kHz – 100mHz | Частота ПЧ НБП CW. |
13.FREQUENCY BFO CW USB | 100kHz – 100mHz | Частота ПЧ ВБП CW. |
14.FREQUENCY Si5351 | 100kHz – 100mHz | Тактовая частота Si5351a (коррекция). |
15.ADRESS I2C Si5351 | 0x00 – 0x7F | Адрес I2C,по умолчанию 0x60.(Нужна перезагрузка синтезатора). |
16.BINARY CODE ENABLE | YES/NO | Формировать на выводах двоичный код управления для дешифратор/мультиплексор. |
17.DECODER CODE | YES/NO | Двоичный код для дешифратора иначе код для мультиплексора FST3253. |
18.S-METER VALUE 1 | 0mV – 3300mV | Калибровка S Метра. |
19.S-METER VALUE 9 | 0mV – 3300mV | Калибровка S Метра. |
20.S-METER VALUE +40 | 0mV – 3300mV | Калибровка S Метра. |
21.ALL BANDS 1MHz-30MHz | YES/NO | Сплошной диапазон 1 – 30 МГц. WARC 30М, 16М, 12М. |
22.BAND WARC STATUS | ON/OFF | Только в режиме RANGE 1-30MHz = YES |
23.BAND 160M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
24.BAND 80M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
25.BAND 40M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
26. BAND 20M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
27.BAND 15M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
28.BAND 10M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
29.LSB MODE | ON/OFF | Выбор модуляции трансивера (приемника) |
30.USB MODE | ON/OFF | Выбор модуляции трансивера (приемника) |
31.CW MODE | ON/OFF | Выбор модуляции трансивера (приемника) |
32.SHUTDOWN LOW VOLTAGE | ON/OFF | Авто выключение, сохранение текущих данных. |
33.LOW VOLTAGE | 5.0V – 14.0V | Порог напряжения авто выключения. |
34.RCC STATUS | RCC HSI/RCC HSE | Источники тактирования, Внутренний/Кварц. |
35.FONT SMOOTHING | YES/NO | Сглаживание шрифтов на экране. |
Для управления дешифратором/мультиплексором используются выводы BAND 160, BAND 80, BAND 40, BAND 20 (смотрим схему).
Управляющие выходы.
Pin BAND 160 = DATA1/A
Pin BAND 80 = DATA2/B
Pin BAND 40 = DATA4/C
Pin BAND 20 = DATA8/D
Двоичный код для дешифратора.
BANDS | Pin BAND 160 | Pin BAND 80 | Pin BAND 40 | Pin BAND 20 |
01.BAND 160M | 0 | 0 | 0 | 0 |
02.BAND 80M | 1 | 0 | 0 | 0 |
03.BAND 40M | 0 | 1 | 0 | 0 |
04.BAND 30M | 1 | 1 | 0 | 0 |
05.BAND 20M | 0 | 0 | 1 | 0 |
06.BAND 16M | 1 | 0 | 1 | 0 |
07. BAND 15M | 0 | 1 | 1 | 0 |
08.BAND 12M | 1 | 1 | 1 | 0 |
09.BAND 10M | 0 | 0 | 0 | 1 |
Настройки COM порта:
Скорость 57600, протокол Kenwood, в настройках софта выбрать Kenwood TS-440S.
Прошивка для экрана NOKIA 5510.
Цифровой генератор на si5351 | Мастер Винтик. Всё своими руками!
Схема данного генератора построена на чипе Silicon Labs si5351s и графическом ЖК-дисплее от Nokia 5110/3310.
Это универсальный цифровой многовыходной VFO для любительских радиоприемников.
Мой цифровой VFO si5351a во время тестирования на моем стенде.
Вступление
Этот VFO — мой последний вариант из продолжающейся серии разработок. Она началась еще в 2008 году с моего DDS VFO на базе AD9850.
Как-то раз я наткнулся в Интернет на чип Cirrus Logic CS2000 и после значительных дополнительных усилий мне удалось приобрести несколько образцов. Короче говоря, я столкнулся с кучей проблем с устройствами. Технический паспорт был загадочным, примечания к приложению отсутствовали, программное обеспечение разработчика не работало должным образом, они не отвечали на вопросы о своих устройствах, а детали, которые я купил, не работали правильно. Из положительных моментов (заявленный) диапазон составлял 2-75 МГц, ток стока составлял всего 20 мА, а цена была приемлемой, особенно по сравнению с теми чипами si570 примерно по 9 долларов США каждый.
Один из моих последних проектов: Генератор RF основан на CS2000
(ссылка на описание ниже, но этот новый si5351 VFO намного лучше!)
В конце концов, у меня получилось с чипом CS2000 и вовсе не благодаря Cirrus Logic. Полученная в результате простая конструкция генератора сигналов описана в другом месте на сайте.
Проект на новом чипе Silicon Labs si5351a CMOS
Вскоре после этого я наткнулся на некоторые работы, выполняемые на новом чипе часов Silicon Labs si5351a CMOS. Он был похож на si570, но с рядом дополнительных функций.
Как и si570, он содержит пару UHF VCOs в сочетании с PLLs. Три программируемых делителя принимают один из этих двух выходов PLL и генерируют три отдельных тактовых выхода; три прямоугольных выхода в любом месте от 2,5 кГц до 200 МГц в соответствии с таблицей данных. Потребление тока VFO выглядело в диапазоне 20-30 мА при 3,3 В. Все это выглядело многообещающе.
Чип был легко доступен, и цена была приемлемой. Чуть больше 1 доллара США каждый! Да, определенно оценено в моем бюджете. Он совсем крошечный – около 3мм х 3мм.
В устройстве имеется более 150 регистров, которые требуют индивидуальной настройки.
Чтобы определить значения для загрузки в эти регистры, нужно было сделать несколько менее занимательных математических вычислений, чтобы преобразовать частоту, которую я хотел, в необработанные данные, которые будут загружаться каждый раз, когда эта частота изменится.
Я не хотел быть привязанным к использованию среды программирования Arduino и аппаратного обеспечения. Платы Arduino не являются дорогими, но системы на базе Arduino имеют тенденцию становиться физически большими, как только все будет добавлено. Там часто много пустого пространства.
Кроме того, почти все конструкции Arduino (и другие), которые я видел до сих пор, похоже, использовали буквенно-цифровой ЖК-дисплей 2×16. Эти дисплеи могут быть весьма ограничивающими для макета панели VFO и трансивера.
Я хочу сразу увидеть несколько частот VFO на моем дисплее VFO, а также состояние различных настроек VFO. Использование дисплея Nokia также может обеспечить более компактную компоновку передней панели.
Дисплей работающего si5351 VFO с синей подсветкой более очевиден, чем это имеет место в реальной жизни.
Что именно я хочу от моего VFO?
Я поставил себе некоторые четкие цели:
- Два VFOs (стандартное расположение A / B), работающие от 1 до 160 МГц
- Настройка поворотного энкодера
- Выбираемые шаги настройки – 5 Гц, 100 Гц, 1 кГц и 10 кГц (другие могут быть добавлены)
- Поддерживаемые функции VFO swap (A/B) и VFO memory (A=B)
- Одновременные выходы генератора VFO и BFO/CIO
- Выбираемые смещения BFO/CIO для режимов USB, LSB и CW
- Инкрементная настройка приемника (RIT) с отдельной всегда доступной регулировкой RIT
- Жидкокристаллический дисплей состояния VFO-частоты VFO (до 1 Гц), RIT вкл / выкл, передача, блокировка VFO
- Функция отображения S-метра-стандартное входное напряжение постоянного тока 0-5V от приемника
- Функция блокировки VFO-для предотвращения нежелательного сдвига частоты из-за вибрации или ударов
- Выбор диапазона вверх/вниз – до 16 полос
- Программируемые пусковые частоты для обоих VFOs для всех 9 диапазонов
- Воспоминания для каждой полосы (VFO A и VFO B)
- В настоящее время поддерживается девять полос– 160, 80, 40, 30, 20, 17, 15, 12 и 10м
- 4-битные выходы BCD BPF/LPF select-поддерживается до 16 полос (9 в текущей версии)
- Процессор Atmel Atmega328 с использованием внутренних часов 8 МГц — не требуется кристалл uP
- Графический дисплей Nokia 5110/3310-84 x 48 пикселей
- Программируемый источник опорного напряжения на si5351a
- Кристалл смещение частоты
- Низкий ток – менее 40 мА при 3,3 В, включая любую жидкокристаллическую подсветку
По-моему, это довольно длинный список. И я думаю, что мне удалось достичь их всех.
Принципиальная схема генератора
Мой новый низкоточный гибкий si5351a VFO использует несколько деталей и работает при напряжении 3,3 в
На первый взгляд это может показаться немного сложным. Однако на самом деле в схеме очень мало компонентов.
Процессор ATmega328 лежит в основе VFO и контролирует все. Выбор процессора изначально определялся количеством требуемых линий ввода-вывода. С широким спектром функций, которые я хотел встроить в VFO, и планируемым использованием компилятора языка высокого уровня, я ожидал, что потребуется разумное количество пространства для кода. ATmega328 (или ATmega328P) имеет 32k программного пространства и 8k оперативной памяти, и это один из самых дешевых процессоров в этом семействе.
Чтобы уменьшить количество деталей процессор работает на 3,3 В. Это также немного снижает потребление тока.
Микросхема генератора si5351a подключена непосредственно к контактам интерфейса I2C ATmega328.
Графический дисплей Nokia также подключается непосредственно к процессору. Процессор работает на частоте 8 МГц, используя свои внутренние часы.
Никакого дополнительного процессорного кристалла не требуется, и это немного снижает стоимость.
Тактовая частота 8 МГц — это самая быстрая скорость, на которой Mega328 может работать с питанием 3,3 В. Несмотря на это, он легко может удовлетворить требования этого приложения!
Подключение к ЖК-дисплею Nokia немного отличается от обычного. Почти каждый дизайн, который я видел, настаивает на подключении CE дисплея (Chip Enable), RST (Reset) и даже линий BL (Backlight). В большинстве случаев они не должны управляться процессором. Поскольку дисплей работает все время, контакты CE и BL можно просто привязать к Земле. Первая линия ожидает только краткого «логического минимума» сразу после подачи питания. После этого он просто держится высоко. Поэтому можно просто использовать простую RC-схему, чтобы позаботиться об этом. Все это означает, что для отображения требуется всего три вывода процессора.
Роторный энкодер — это стандартная недорогая деталь, которую я купил у одного из обычных китайских поставщиков. Кнопки аналогичны всем стандартным недорогим мгновенным переключателям на печатной плате, которые стоят несколько центов.
Управление RIT представляет собой стандартный линейный переменный резистор. В среднем положении, когда ручка настроена на “12-полдень», нет никакого сдвига частоты, когда RIT включен. Вращая его полностью по часовой стрелке, примерно до “5 часов», полученная частота повысится на 2,5 кГц. Если он будет полностью против часовой стрелки, примерно «7 часов», то полученная частота упадет на 2,5 кГц. Для меня этот диапазон примерно подходит для тонкой настройки как для работы SSB, так и для работы CW.
Низкое падение напряжения низкое энергопотребление 3.3 V трёхконтактный регулятор (TS2950CT33) используется для питания. Входное напряжение может упасть так низко, как около 4 в, прежде чем оно выйдет из регулирования, и может без труда подняться до 15 В. Это возможно, потому что весь VFO потребляет всего 30 мА. Он рассеивает только около 40 МВт. Идеально подходит для приемопередатчиков QRP с батарейным питанием.
Я не добавил никаких дополнительных выходных буферов генератора к выходам si5351a, потому что они уже существуют в моем трансивере. Тем не менее, ваше приложение может потребовать их.
Программное обеспечение
Все программное обеспечение написано на Bascom, базовом языке семейства процессоров AVR. Я сделал программное обеспечение доступным для скачивания по ссылке ниже только для некоммерческого использования. В настоящее время этот загрузочный файл состоит только из шестнадцатеричного кода. Как только код станет немного более стабильным (я могу добавить еще несколько функций и исправить несколько ошибок, когда/если таковые имеются)…) затем я предоставлю исходный код, доступный для загрузки, а также, в зависимости от интереса.
Итак, что же на самом деле делает программное обеспечение? Ну, в большинстве случаев программное обеспечение просто отображает напряжение S-метра и смотрит на поворотный кодер и кнопки, чтобы увидеть, если пользователь что-то меняет. Поскольку поворотный энкодер является наиболее важным устройством синхронизации, фоновый таймер постоянно проверяет его состояние. Кнопки и управление RIT просто периодически проверяются.
Любое изменение приведет к вычислению новых данных. Это затем преобразуется в правильную последовательность около 20 байт для каждого из двух выходов генератора (VFO и BFO/CIO), и данные отправляются на si5351. Затем информация на жидкокристаллическом дисплее обновляется, чтобы отразить новый статус.
А затем процессор возвращается, чтобы искать следующее изменение в коммутаторе или кодере.
Дисплей VFO
Поскольку VFO поддерживает двойные VFO (VFO A и VFO B), ЖК-дисплей отображает частоту текущего активного VFO большими символами (и генерируется на выходе CLK0), а также частоту альтернативного VFO. Последняя частота отображается с помощью меньших символов, чтобы сделать выбор частоты более четким. Можно переключаться между этими двумя VFO в любое время с помощью кнопки A/B или сохранять текущую частоту VFO A в памяти VFO B. Это очень полезно для работы с DX, например, для захвата частоты, которую Вы хотите периодически возвращать для проверки во время настройки и работы в другом месте диапазона.
Обе частоты отображаются с разрешением 1 Гц, хотя наименьший поддерживаемый шаг настройки составляет 5 Гц. Как функции, так и значения, как и почти все остальное в дизайне, легко изменяются в программном обеспечении.
Ниже этой информации на ЖК-дисплее также отображаются подробные сведения об общей конфигурации VFO. Это включает в себя (четвертая строка на дисплее, слева направо):
- Размер шага VFO
- Режим (который может изменить генератор BFO/CIO частота выходного сигнала генерируется сигнал clk1)
- РИТ (on или off)
- Передачи (on или OFF)
- Состояние блокировки VFO (включено или выключено)
Текст используется для первых двух элементов, а значки — для последних трех в списке.
Наконец, базовый S-метр (уровень сигнала) отображается в виде гистограммы вдоль нижней линии ЖК-дисплея. (Фактический дисплей немного отличается от показанного здесь, потому что я вернулся к непрерывной полосе для простоты) эта гистограмма S-метра периодически обновляется на основе постоянного напряжения на входном выводе S-метра на плате VFO. Он принимает стандартный входной сигнал от 0-5V, где 0V = нет сигнала и 5V = максимальный сигнал.
В настоящее время он не калибруется, хотя дополнительное программное обеспечение может быть добавлено в соответствующую подпрограмму теми, кто хочет получить более точный S-метр. Я не делал этого, потому что каждый трансивер имеет тенденцию иметь немного разные характеристики в этой области.
Сборка прибора
В зависимости от спроса я могу разработать печатную плату для VFO. С другой стороны, учитывая минимальное количество деталей, вероятно, почти так же легко повторить мой метод построения. Я построил свой прототип на кусочке макетной платы. Я использовал 0,1-дюймовые штыревые полоски на плате VFO для внешних соединений, например для дисплея. Я припаял соответствующую 0,1-дюймовую полоску гнезда на плате Nokia, чтобы дисплей можно было напрямую подключить к основной процессорной плате. Аналогичные разъемы использовались для управления RIT, входа PTT и входа S-метра. Выходы BPF select могут использовать аналогичный разъем, хотя я использовал здесь 6-контактный разъем DIL, потому что это все, что у меня было доступно в то время.
фото до добавления входных разъемов S-метра и выходных разъемов BPF. Si5351 установлен на небольшой печатной плате адаптера SMD-DIL рядом с кварцем на 25 МГц. Я также добавил еще пару кнопок после того, как эта фотография была сделана.
Регулятор lp2950-type 3.3 V поставляется в небольшом корпусе TO-92. Он никогда не нагревается во время работы и поэтому не требует какой-либо формы радиатора. Это очень далеко от регулятора LM7805 для моих старых конструкций AD9850 DDS VFO, которые могли бы стать очень горячими.
Дисплей Nokia — это стандартный модуль, доступный от обычных китайских поставщиков. Они имеют стеклянный жидкокристаллический дисплей с его встроенным жидкокристаллическим контроллером, удерживаемым на месте на небольшой печатной плате с помощью сложенной металлической крышки. Зажимы на этой металлической крышке удерживают дисплей против гибкого проводящего резинового разъема, чтобы сделать соединения между дисплеем и контактами на печатной плате.
Предупреждение! Возможно, неудивительно, что некоторые поставщики недорогих компонентов в глубинах Китая, похоже, не имеют никакой формы контроля качества. Из шести ЖК-модулей Nokia, которые я купил недавно, только один работал по прибытии, а два частично работали. Остальные просто не работали вообще.
В конце концов я спроектировал и построил небольшую доску для тестирования дисплеев с помощью AT89C2051, который у меня случайно нашелся. Тщательно разбирая каждый узел дисплея Nokia на части, очищая каждую из деталей, тщательно собирая и перенастраивая каждый узел, а затем повторно тестируя их на своей тестовой плате, мне удалось заставить все дисплеи работать. Некоторым потребовалось три попытки, прежде чем они начали работать.
Разобранный дисплейный модуль Nokia во время процесса очистки и перестройки эластомерного разъема
Поскольку si5351a доступен только в 10-контактном SMD-пакете, я использовал небольшую плату адаптера SMD-to-DIP для его монтажа. Пайка чипа на плате адаптера довольно проста. Затем он был установлен на плате VFO. Если бы я проектировал печатную плату для VFO, у меня был бы соблазн спроектировать ее для SMD-версии процессора и регулятора ATmega, чтобы минимизировать общий размер VFO. Скорее всего, он окажется не больше, чем дисплей Nokia. Хорошая мысль 🙂
Настройка, изменения и модификации
В процессе работы кварц на 25 МГц, приводящий в действие si5351a, может быть смещен до 3 кГц. Это вызвано комбинацией точности производителя, цены, температуры окружающей среды и нагрузки на кристалл от si5351. Короче говоря, значение константы «xtal», используемой в программном обеспечении, может потребовать корректировки.
Как только VFO заработает, установите VFO на выход 25,0000 МГц, измерьте фактический выход с помощью точного счетчика частоты и измените значение константы соответствующим образом. Перекомпилируйте программное обеспечение и перепрошейте процессор.
Программное обеспечение написано предполагая, что если 8867 кГц. Опять же, это значение (для BFO/CIO) записывается в программное обеспечение и может быть изменено в соответствии с вашими требованиями. Аналогичная константа записывает рабочую частоту, при которой VFO переключается с высокой стороны (выходная частота VFO = рабочая частота + частота IF) на низкую сторону впрыска (выходная частота VFO = рабочая частота-частота IF). Более поздние усовершенствования могут добавить специфичный для полосы флаг, указывающий на высокую или низкую боковую инъекцию. На данный момент эта простая система работает.
Каждого диапазона (160М, 80м и т. д.) Имеет две частоты запуска, хранится в программе в виде констант в режиме VFO A и VFO B на каждом диапазоне. Они вызываются VFO при включении питания и хранятся в восемнадцати полосных запоминающих устройствах (то есть два VFO на полосу х 9 полос). Когда Вы меняете полосы частот во время использования VFO, последняя пара частот, используемых на каждой полосе, сохраняется в памяти. Когда Вы возвращаетесь к этому диапазону, эти настройки перезагружаются.
Эти значения, хранящиеся в оперативной памяти процессора, теряются при отключении питания. Те, кто хочет более длительного хранения данных, могут изменить программное обеспечение, чтобы использовать память EEPROM процессора. В ATmega328 недостатка в этом нет. Можно добавить резервный аккумулятор к процессору и отправлять его в режим пониженного энергопотребления, когда генератор выключен.
Примечание: На момент написания статьи программное обеспечение потребляет около 50% от 32 КБ программного пространства в ATmega328. Это далеко за пределами бесплатной версии Bascom. Как только все оставшиеся ошибки будут устранены, я также загружу исходный код сюда. Если вам нужно изменить и перекомпилировать это программное обеспечение для VFO, вам, возможно, придется найти друга с полной версией Bascom или купить копию для себя. Просто чтобы ты знал…
Вот обновленный прототип с большим количеством вещей, висящих на нем. Кластер из четырех светодиодов в верхнем центре был добавлен для тестирования выходных линий диапазона. Дочерняя плата с двумя переключателями в центре переднего плана должна была добавить дополнительные кнопки» A=B «и» Band Down». Наконец, потенциометр в левом верхнем углу был добавлен для проверки дисплея S-метра. Все немного грубо.
Под дисплеем вы можете видеть вдоль верхнего края платы, слева направо, вход PTT, вход S-метра и вход RIT с подключенным RIT pot. Перемычка справа от полосы выбора тестовых светодиодов позволяла осуществлять выбор мощности во время программирования (через бортовой регулятор или от программатора).
Заключение
Короче говоря, есть место, чтобы добавить дополнительные функции. Есть три свободных контакта для дополнительных кнопок или для выходов для управления другими вещами. Расширение конструкции, скажем, до 12 полос или более, или для других более специализированных применений должно создавать мало проблем.
Еще одна мысль, которая у меня была, состояла в том, чтобы сделать версию этого VFO, используя маленький 8-контактный Tiny85 и дисплей I2C. Было бы интересно посмотреть, смогу ли я сжать основной код до базовых функций и заставить его поместиться в этом пространстве кода. Затем постройте все это в SMD. Я подумаю над этим.
Так что теперь вы можете выбрать VFO, который вам больше нравится. Вот фото двух генераторов:
Мой следующий шаг будет заключаться в завершении трансивера, который я планирую использовать с более полным многополосным VFO, описанным на этой странице.
Один из возможных вариантов компоновки передней панели-я думал о том, что
макет печатной платы мог бы выглядеть так, если бы я установил его прямо за передней панелью, поэтому я набросал этот рисунок в качестве первого шага
Макет печатной платы
Благодаря усилиям Cristi YO3FLR печатная плата была предназначена для этого генератора. Он дал согласие на публикацию в формате Sprint Layout-6.
Загрузки:
ZL2PD_si5351vfoV11 — этот файл содержит исходный код Bascom и шестнадцатеричный файл HEX для текущей версии генератора. Он также содержит другие вспомогательные файлы, необходимые для компиляции кода и др.
Примечание: это программное обеспечение не так эффективно, как мне бы хотелось — оно примерно на 10% больше, чем должно быть из-за некоторого ненужного дублирования кода, но я, вероятно, разберусь с этим в следующей версии. Я также буду время от времени изменять его в зависимости от того, что я обнаружу, когда интегрирую новый VFO с моим новым трансивером, который в настоящее время находится в стадии разработки. Я делаю его доступным для скачивания здесь, чтобы другие тоже могли наилучшим образом использовать его.
Fuse settings for the ATmega328 следующие:
Байт блокировки: 0ffh (Без блокировок)
Байт EXTd: 0ffh (BOD отключен)
Высокий байт: 0d9h
RSTDISBL 1 не отключается
DWEN 1 DW не включен
Spien 0 SPI Программирование включено
WDTON 1 сторожевой таймер выключен
EESAVE 1 EEPROM не сохраняется в стирании
BOOTSZ1 0 размер загрузочного ПЗУ
BOOTSZ0 0
BOOTRST 1 нет загрузочного вектора при запуске
Низкий байт: 0e2h
CKDIV8 1 не делится на 8
Предоставляются следующие удобства и услуги 1 не включен
SUT1 1 медленно растущая мощность
SUT0 0
Cksel3 0 8 МГц внутренние RC часы
CKSEL2 0
CKSEL1 1
CKSEL0 0
Источник:zl2pd.com
ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ
П О П У Л Я Р Н О Е:
- NetWorx 5.0.7
- «Умная» машина на одной микросхеме.
- Чтобы лампа стала «вечной»
Описание: NetWorx — Программа для учёта входящего и исходящего трафика на Вашем компьютере. Поможет не превысить лимит трафика, и не оказаться вообще без Интернета. Подробнее…
Если у Вас есть машинка с двух-моторным приводом, то на одной микросхеме-драйвере управления двигателем можно сделать забавную игрушку-робота — «умную» машину, которая будет двигаться на свет или (в зависимости от подключения двигателей) наоборот, будет прятаться в темноту. Она может ехать вперед в поисках света или назад, уезжая в тьму, а также следовать за рукой или ехать не сворачивая с дороги.
Подробнее…
Известно, что осветительная лампа чаще всего выходит из строя а момент включения. Именно в этот момент сопротивление нити лампы мало (примерно в 10 раз меньше раскаленной), и на ней рассеивается мощность, значительно превышающая номинальную. Нить не выдерживает и перегорает. Особенно часто такое случается с дорогостоящими лампами большой мощности (до 500 Вт), используемыми, например, в проекционных аппаратах. Подробнее…
Популярность: 2 519 просм.
Новое. Микроконтроллеры на интернет-аукционе Au.ru
Микросхема Si5351 это конфигурируемый через I2C генератор тактовых частот, идеально подходящий для замены кварцев, кварцевых генераторов, генераторов VCXO, синтезаторов с ФАПЧ (PLL), буферов развязки в приложениях, критичных к общей стоимости. Базируясь на архитектуре PLL/VCXO + high resolution MultiSynth fractional divider, Si5351 может генерировать любую частоту до 200 МГц на каждом из выходов с нулевым отклонением от заданного значения (0 ppm error). Для удовлетворения различным требованиям приложений Si5351 выпускается в 3 версиях. Si5351A генерирует до 8 не зависящих друг от друга тактовых сигнала, используя внутренний генератор, что позволяет заменить несколько кварцев или кварцевых генераторов. В Si5351B добавлен внутренний VCXO, что дает возможность заменить как свободно (независимо друг от друга), так и синхронно генерируемые тактовые частоты. Это устраняет необходимость применения дорогих специальных кварцев, предоставляя при этом высокую надежность работы в широком диапазоне настраиваемых частот. Si5351C предоставляет такую же гибкость, но синхронизируется при этом с внешним опорным генератором (CLKIN).
Основные возможности:
• Генерирует до 3 (или до 8, в зависимости от типа корпуса) не связанных линейной зависимостью частот от 2.5 кГц до 200 МГц.
• Конфигурация задается пользователем через интерфейс I2C.
• Абсолютно точный синтез частоты на каждом выходе (ошибка 0 ppm).
• VCXO с высокой линейностью.
• Опционально сигнал тактирования можно подать на CLKIN (для Si5351C).
• Малый джиттер периода выходного сигнала: типовое значение < 70 ps pp.
• Конфигурируемый расширяемый спектр помех на каждом выходе.
• Работает от дешевого кварца с фиксированной частотой: 25 или 27 МГц.
• Поддерживает статическое смещение фазы.
• Программируемое время нарастания/спада уровня.
• Изменение частоты без лишних выбросов на выходе.
• Отдельные выводы для напряжения питания:
– Core VDD: 2.5V или 3.3 V.
– Output VDDO: 1.8V, 2.5V или 3.3 V.
• Отличный PSRR, устраняющий необходимость фильтрации внешнего источника питания.
• Очень малое потребление энергии.
• Настраиваемая задержка между выходами.
• Доступен в 3 типах корпусов:
– 10-MSOP: 3 выхода.
– 24-QSOP: 8 выходов (этот вариант корпуса с некоторых пор больше не предлагается).
– 20-QFN (4×4 mm): 8 выходов.
• Обеспечивает совместимость с PCIE Gen 1.
• Поддерживает совместимость с уровнями HCSL.
Области применения:
• Устройства HDTV, DVD/Blu-ray.
• Оборудование audio/video, видеоигры.
• Принтеры, сканеры, проекторы.
• Переносные измерительные приборы.
• Базовые сетевые шлюзы.
• Обмен данными по сети.
• Серверы, устройства хранения данных.
Простой, универсальный синтезатор на Si5351. Универсальный синтезатор частоты Низкочастотный синтезатор на микроконтроллере
Простой, универсальный синтезатор на Si5351 до 160 МГц.
Si5351A — это генератор с тремя независимыми выходами, которые могут генерировать каждый отдельный сигнал от 8 кГц до 160 МГц. Чип SiLabs Si5351А является двоюродный братом известного и популярного Si570 , но гораздо меньше, и на много дешевле. В отличие от Si570 , Si5351A не имеет кварцевого кристалла внутри. Опорная частота может быть 25МГц или 27МГц. Может быть использован как кварцевый генератор или кварцевый резонатор. Si5351A, которая использует интерфейс I2C легко использовать с микроконтроллером Arduino. Все эти особенности, вместе с библиотекой программного обеспечения позволяют легко и быстро настроить Si5351A для использования в вашем следующем проекте в соответствии с вашими потребностями. Три независимых выхода идеально подходят для использования в качестве ГПД (VFO) в супергетеродине или трансивере. Маленький шаг настройки 1 Гц и большой диапазон частот делают его отличным выбором для таких проектов как приемники, трансиверы, техника прямого преобразование или SDR-техника, антенный анализатор, генератор сигналов или тактовый генератор. Дополнительный TCXO делает Si5351A особенно полезным в тех случаях, когда требуется высокая стабильность, необходимых, например, в передатчике WSPR или QRSS.
Предлагаемый синтезатор предназначен для использования в простых самодельных приемниках, трансиверах с кварцевым фильтром, в технике прямого преобразования, SDR — технике, где условием для их работы является удвоение или учетверение (Х2, Х4) частоты на выходе синтезатора. Причем для премо — передающих устройствах с одной ПЧ в районе 9МГц (может быть любая), нужные частоты «опоры» «снимаются» с дополнительного выхода Si5351. Что дает возможность отказаться от классических кварцевых опорных гетеродинов с подстраивающими частото — сдвигающими контурами, конденсаторами для выбора нужной боковой полосы. И при минимальных (никаких) знаниях пользователь сам может поменять, подстраивать их значения.
Так же не составит особого труда выбрать нужный для пользователя режим работы синтезатора.
1. Классический вариант с одним ПЧ и с опорой на борту.
2. Прямой выход. Синтезатор используется как генератор до 160 МГц.
3. Частоты на выходе синтезатора, умноженная на четыре . Для техники ПП, SDR.
4. Частоты на выходе синтезатора, умноженная на два . Для техники ПП, SDR.
В синтезаторе предусмотрено включение/выключение PRE/ATT (УВЧ, АТТ) по кругу с помощью одной кнопки. Так же планируется дешифратор для коммутации полосовых фильтров. Пока диапазоны уточняются. Схема и некоторые фото ниже.
Универсальный синтезатор частоты.
После публикации в схемы простого синтезатора частоты для УКВ радиостанции автор получал много просьб об изготовлении синтезатора на частоты 30-50 МГц. В данной статье описан синтезатор, который может быть с успехом применён в СВ – станциях, станциях типа “Лён” и др.Синтезатор предназначен для применения в радиопередающих устройствах в диапазоне 20000-65535 кГц с частотой ПЧ от 400 до 22000 кГц. Шаг сетки частот составляет 5 кГц.Есть возможность сканирования частот во всём рабочем диапазоне в режиме приёма.Напряжение питания синтезатора составляет 8…15В, ток потребления не более 50 мА.
Уровень высокочастотного сигнала на выходе синтезатора на нагрузке 50 Ом составляет не менее 0.1 В. Имеется три ячейки памяти. Частота синтезатора в режиме приёма выше, чем частота передачи на значение установленной промежуточной частоты.Управление микросхемой синтезатора осуществляется с помощью микроконтроллера AT90S1200. Индикация частоты производится с помощью ЖКИ индикатора, применяемого в импортных телефонах и АОНах.
При подаче напряжения питания синтезатор сразу начинает работу на частоте, записанной в 1-й ячейке памяти. На индикаторе отображается частота, на которой синтезатор будет работать в режиме передачи. Каждое нажатие на кнопку UP или DN приводит к смещению рабочей частоты на 5 кГц вверх или вниз. При нажатии на кнопку SCAN включается режим сканирования. Сканирование производится во всём диапазоне рабочих частот.Сигналом остановки сканирования служит уровень логического нуля, поданный на вывод “SCAN ” микроконтроллера. Оптимальным образом для этой цели послужит ключ с открытым коллектором, поскольку выводы микроконтроллера, настроенные на ввод, притянуты к положительному источнику питания с помощью внутренних резисторов.При появлении в канале несущей сканирование приостанавливается и возобновляется через несколько секунд после её пропадания. Для выхода из режима сканирования достаточно нажать на одну из кнопок UP, DN, SCAN.Для перехода на частоту, записанную в одной из ячеек памяти, необходимо нажать на соответствующую кнопку 1….3. Для записи частоты в ячейку памяти необходимо набрать на индикаторе значение частоты, нажать кнопку с номером ячейки и, не отпуская, кнопку SAVE. При выключении питания информация, записанная в ячейках памяти, сохраняется.
Электрическая принципиальная схема синтезатора приведена на рис.1.
Путём перепрограммирования синтезатора с клавиатуры можно изменить его границы перестройки. Для корректировки нижней границы перестройки нужно нажать на кнопку «1» и подать напряжение питания. На индикаторе отобразится записанное ранее значение и цифра «1» в левой части индикатора. Кнопками «UP» или « DN» выставляют новое значение. Для записи в память необходимо нажать «1» , и, не отпуская её, «SAVE». После этого синтезатор необходимо отключить.
Для установки новой верхней границы включают синтезатор при нажатой кнопке «2».Новое значение граничной частоты набирают так же, как и нижнюю. Запись в память – нажатие «2», и не отпуская, «SAVE». Установка частоты ПЧ производится аналогично, при нажатии кнопки «3».
Границы диапазона синтезатора нужно устанавливать внимательно. При некорректном вводе(например, нижняя граница выше, чем верхняя) синтезатор будет работать неправильно. Кроме того, сумма верхней границы частоты синтезатора и частоты ПЧ не должна превышать 81915 Кгц. После новых значений нужно включить синтезатор и с помощью кнопок UP, DN или SCAN добиться того, чтобы частота установилась в рабочих пределах и занести в первую ячейку памяти значение, которое будет устанавливаться при включении синтезатора. Также нужно занести корректные значения во вторую и третью ячейки.
Кедов Александр, г.Омск
В ашему вниманию предлагается синтезатор частот для вещательного приёмника 87,5-108МГц, выполненный на микроконтроллере ATMEGA16 и микросхеме LC72131 с индикацией на ЖК-дисплее Wh2602B. Внимание! Токоограничивающий резистор подсветки устанавливать на плате индикатора. Напряжение питания синтезатора – 12В, шаг сетки частот – 100 кГц, промежуточная частота: +10,7МГц. Имеется вариант прошивки для LM7001.
Для просмотра схемы кликните левой клавишей мышки
С
интезатор имеет возможность хранения в памяти до 99 каналов, причем, если занесено, например, 11 каналов, то перебор производится только по ним, а оставшиеся 88 каналов игнорируются. После подачи питания первой включается станция, на которой ранее был выключен синтезатор, она находится на канале с номером 0.
Синтезатор имеет валкодерное управление и 2 кнопки MODE и MEMORY. MODE определяет режим работы: плавная настройка или перемещение по станциям, занесённым в память. Плавная настройка осуществляется как вверх, так и вниз до краёв диапазона. Перемещение по станциям, занесенным в память осуществляется как вверх, так и вниз, по кольцу. Дополнительно имеется кнопка RESET, которой производится стирание всех станций из памяти.
Д ля стирания нобходимо нажать кнопку RESET, и, удерживая её, подать питание. 0,5 сек. индикатор не будет ничего показывать (в это время идёт очистка памяти), а затем отобразится следующее: “87,5 СН:00”. Для записи станций необходимо нажатием на кнопку MODE перейти в “Режим настройки” и, вращая валкодер, настроиться на желаемую станцию. После чего нажать кнопку MEMORY. При этом экран погаснет на 0,5 сек., что говорит о том, что запись в память произведена. Далее производится выбор и запоминание других желаемых станций, после чего переходят в режим “Предварительных настроек” повторным нажатием кнопки MODE. Исходник программы подробно комментирован, что позволит легко внести желаемые изменения, например, изменение границ диапазона. При желании возможна переразводка платы под контроллер ATMEGA8 (при перекомпиляции программы). Установки фьюзов для контроллера указаны в начале программы.
В
качестве валкодера применен энкодер PEC-16 фирмы BOURNS или аналогичный, который вырабатывает один импульс на один щелчок. Подключение линий валкодера А и В и кнопок к контроллеру – строго по принципиальной схеме (а не по печатной плате). На печатной плате процессора имеется место для установки кварцевого резонатора, но в данной конструкции он не применяется. Тактирование процессора осуществляется от внутреннего генератора частотой 1 МГц. В качестве частотозадающего элемента в синтезаторе применён кварц с частотой 7,2Мгц. Точная установка частоты производится подбором SMD конденсаторов, подключенными к резонатору, без подстроечных элементов. Для этого на плате предусмотрены соответствующие контактные площадки.
Из конструктивных особенностей отмечу соединение процессорной платы и платы индикатора “разъём в разъём”, без проводов. Для этой цели панель для контроллера установлена со стороны печатных проводников, без отверстий.
Фото отчет:
В данной статье мы постараемся ещё раз осветить такие темы, как создание подпрограмм и работа по шине I2C в Bascom.
В качестве примера приведём проект синтезатора высокой частоты для связного приёмника, работающего в диапазоне 10 м (28 – 29,7 МГц).
Сам приёмник выполнен на достаточно популярной микросхеме МС3362. Данная микросхема представляет собой полный приёмный тракт с двойным преобразованием частоты для узкополосной ЧМ связи. Однако нас будет интересовать два независимых узла: первый – смеситель с перестраиваемым варикапом гетеродином и усилителем первой промежуточной частоты (ПЧ) и второй – смеситель с гетеродином, поскольку эти узлы наиболее часто применяются в коротковолновых конструкциях. Следует отметить, что оба гетеродина имеют выходы через эмиттерные повторители, т.е. допускают подключение цифровой шкалы, что в значительной степени облегчает нашу задачу.
Структурная схема МС3362 с нужными нам узлами приведена на Рис.1. Отметим также, что микросхема имеет высокие технические характеристики. Параметры первого смесителя при применении внутреннего гетеродина нормированы до частоты 190 МГц, поэтому мы будем использовать его для построения синтезатора в качестве генератора, управляемого напряжением (ГУН).
Принципиальная схема приёмника приведена на Рис.2. Сигнал с антенны, прошедший диапазонный полосовой фильтр L1, L2, C14-C16, L3, L4 поступает на вход первого смесителя МС3362 вывод 24, второй его вход (вывод 1) соединён с общим проводом по высокой частоте. С выхода первого усилителя промежуточной частоты (УПЧ1) вывод 19 сигнал ПЧ проходит через четырёх – резонаторный лестничный фильтр на частоту 4,33 МГц с полосой пропускания 2,4 КГц. С выхода фильтра сигнал поступает на второй смеситель (вывод 17). На второй вывод этого смесителя (вывод 18) подано напряжение +5В. Частота гетеродина второго смесителя стабилизирована кварцевым резонатором ZQ5 на частоту 4,33 МГц. Поскольку рабочая частота этого генератора должна соответствовать скату характеристики кварцевого фильтра, то её сдвигают вниз от номинального значения катушкой индуктивности L6, включённой последовательно с резонатором.
Напряжение питания +5В подаётся на вывод 6 микросхемы МС3362. Оно стабилизировано микросхемой DA3 (78L05), а микросхема DA2 (LM368) – выходной усилитель звуковой частоты, питается от напряжения +12В.
Частота генератора плавного диапазона (ГПД или ГУН) регулируется подачей напряжения с синтезатора частоты на варикап (вывод 23) и снимается с вывода 20 микросхемы МС3362. Катушки индуктивности – это готовые дроссели со стандартной индуктивностью. Катушки связи наматываются поверх них.
Следует отметить, что использование всех узлов микросхемы МС3362 стандартное и соответствует рекомендациям фирмы – производителя.
В качестве синтезатора частоты выбрана микросхема LM7001, которая предназначена для построения синтезаторов с системой ФАПЧ (фазовая автоподстройка частоты) в бытовых радиоприёмных устройствах. Структурная схема LM7001 представлена на Рис.3.
Выводы Хout и Xin – выход и вход усилителя сигнала образцовой частоты; к этим выводам подключается кварцевый резонатор. СЕ – вход сигнала разрешения записи. CL – вход тактовых импульсов записывания. Data – информационный вход. SC – Syncro Conrol – выход сигнала контрольной частоты 400 КГц. BSout1 – Bsout3 – выходы управления внешними устройствами. С помощью этих сигналов выполняется коммутация диапазонов. AMin и FMin – входы программируемого делителя частоты АМ и FМ сигналов. Pd1 и Pd2 – выходы частотно-фазового детектора в режимах FM и АМ соответственно.
В соответствии с основными техническими характеристиками LM7001 выбираем частотный интервал FMin 5…30 МГц при шаге частотной сетки 10 КГц (при частоте образцового генератора 7200 КГц).
Введение информации происходит последовательно, начиная с младшего бита коэффициента деления частоты программируемого делителя, который может работать в двух режимах АМ и FM . Мы рассмотрим выбранный выше режим – FM. В данном режиме для программирования делителя используются биты D0 – D13. Максимальное значение коэффициента деления 3FFF (16383). Последовательность посылки битов приведена в таблице:
Биты Т0 и Т1 – тестовые, они должны быть всегда установлены в низкий уровень. Биты В0 – В2 и ТВ управляют состоянием выходов BSout1 – Bsout3, и не будут использованы нами. Биты R0 – R2 содержат информацию о шаге сетки. В нашем случае R0=1, R1=R2=0 (шаг = 10 КГц). Бит S определяет режим работы программируемого делителя частоты: 1 – FM, 0 – AM (в нашем случае S=1).
Рассмотрим пример составления управляющей последовательности. Пусть приёмник работает на частоте 28 МГц с промежуточной частотой 4,33 МГц и имеет шаг сетки 10 КГц. Найдем необходимый коэффициент деления частоты. Поскольку гетеродин работает на частоте ниже принимаемой, то его частота равна 28000 – 4330 = 23670 [КГц]. Коэффициент деления будет определён, как: 23670: 10 = 2367 = 93F (hex) =100100111111 (bin).
Таким образом, последовательность битов примет следующий вид:
D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,T0,T1,B0,B1,B2,TB,R0,R1,R2,S
1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0 ,1
Cхема синтезатора частоты радиоприёмника десяти метрового диапазона представлена на Рис.4. Режим работы микросхемы синтезатора LM7001J определяется программой микроконтроллера ATtiny2313. Отображение информации происходит с помощью ЖКИ – индикатора типа МТ-16S2H (фирма – производитель «МЭЛТ»).
Синтезатор управляется шестью кнопками. При включении устройство начинает работать на частоте, заданной начальными условиями программы – это начало диапазона 28 МГц. На экране индикатора отображается надпись: «F =28 000 КГц» . Кнопка S2 позволяет осуществлять сканирование диапазона вверх с шагом сетки 10 КГц с интервалом в одну секунду. Нажатие кнопки S3 – делает тоже, но вниз по диапазону. Кнопки S4, S5 cлужат для увеличения или уменьшения частоты при нажатии только на один шаг сетки. Нажатием кнопки S7 осуществляется запись значения частоты в EEPROM микроконтроллера, а кнопка S6 позволяет считать записанное значение частоты.
Синтезатор DA2 получает информацию о значении частоты по управляющей шине (I2C). ГУН устройства, как было упомянуто выше, выполнен на основе генератора первого смесителя микросхемы МС3362, и сигнал с него подаётся на синтезатор. Активный фильтр, собранный на транзисторах VT1, VT2 обеспечивает изменение напряжения на варикапе ГУН, ликвидируя возникающую разность фаз между частотой ГУН и генератором образцового сигнала микросхемы синтезатора.
Программа микроконтроллера “Sintes” состоит из основного цикла, где осуществляется быстрое сканирование, а также запись и чтение частоты, и подпрограмм обработки внешних прерываний INT0 (Pulse0) и INT1 (Pulse1), с помощью которых осуществляется точная настройка приёмника. Следует отметить, что процесс записи информации в синтезатор выделен в отдельную подпрограмму (Frequenc), поскольку её повторение привело бы к неоправданному увеличению объёма всей программы. Сама подпрограмма декларирована в начале текста: Declare Sub Frequenc. Информация в LM7001 передаётся побайтно: в начале младший байт данных, затем старший, а далее через 1,5 мкс байт управления. Высокий уровень напряжения на PORTB.6 разрешает запись данных в сдвиговый регистр синтезатора (а низкий соответственно запрещает).
Текст программы с подробными комментариями приведён ниже:
$regfile = “attiny2313a.dat” “настройки микроконтроллера
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$sim
Config Scl = Portb.7 “конфигурирование I2C
Config Sda = Portb.5
Config I2cdelay= 10 ’частота 100 КГц
Config Portb.6 = Output “включ. – выкл. синтезатора
Config Int0 = Falling “по спаду импульса-вверх
Config Int1 = Falling “-вниз
Config Pind.5 = Input “запись в EEPROM
Config Pind.4 = Input “чтение из EEPROM
Config Pind.0 = Input “быстрое сканирование ввех
Config Pind.1 = Input “быстрое сканирование вниз
Config Debounce = 75 “антидребезг
Dim F As Integer “частота КГц
Dim K As Word “коэффициент деления
Dim Kh As Byte “старший байт коэфф. деления
Dim Kl As Byte “младший байт коэфф. деления
Const Up = &B10010000 “байт управления-модуляция FM, шаг=10 КГц
Const St = 10 “шаг – 10 КГц
Const Fp = 4330 “промежуточная частота=4330 KГц
$eeprom “инициализация EEPROM
Freq:
Data 10%
F = 28000 “начальное значение частоты – КГц
Declare Sub Frequenc “опред. подпрог. управления синтезатором
On Int0 Pulse0 “опред. подпрог. внешних прерываний
On Int1 Pulse1
Enable Interrupts “разрешение прерываний
Enable Int0
Enable Int1
Call Frequenc ’вызов подпрограммы управл. синтезатором
Do “основной цикл
If Portd.0 = 0 Then “быстрое сканирование вверх
F = F + 10 ” увеличение частоты на 10 КГц
Call Frequenc “вызов подпрог. управления синтезатором
End If
If Portd.1 = 0 Then “быстрое сканирование вниз
Call Frequenc
End If
If Portd.5 = 0 Then “если кнопка PD5 нажата
Writeeeprom F , Freq “записать значение частоты в EEPROM
Waitms 10 “задержка 10 мс
End If
If Portd.4 = 0 Then “если кнопка PD4 нажата
Readeeprom F , Freq “считать значение частоты из EEPROM
Waitms 10
Call Frequenc
End If
Cls
Lcd “F=” ; F ; “KGz” “индикация значения частоты на ЖКИ
Wait 1 “задержка 1 сек
Loop
Sub Frequenc “подпрограмма управлением синтезатором
K = F – Fp “частота гетеродина
K = K / 10 “коэфф. деления частоты
Kl = K And &B0000000011111111 “младший байт коэфф. деления
K = K And &B1111111100000000
Shift K , Right , 8
Kh = K “старший байт коэфф. деления
Set Portb.6 “включение управления синтезатором
I2cstart
I2cwbyte Kl “отсыл младшего байта
I2cwbyte Kh “отсыл старшего байта
Nop “задержка 1,5 мкс
nop
nop
nop
nop
nop
I2cwbyte Up “отсыл байта управления
I2cstop
Reset Portb.6 “выключение управ. синтезатором
End Sub
Pulse0: “точное сканирование вверх
Waitms 75 “задержка 75 мс
F = F + 10 “увеличение частоты на 10 КГц
Call Frequenc “вызов подпрограммы упр. синтезатором
Return
Pulse1: “точное сканирование вниз
Waitms 75
F = F – 10 “уменьшение частоты на 10 КГц
Call Frequenc
Return
End “end program
Программа находится в
В. Гавриленко
В настоящее время промышленность выпускает , в которых реализован метод прямого или косвенного синтеза. Сущность прямого синтеза заключается в получении необходимой частоты путем выполнения операций умножения и деления частот гармонических составляющих высокостабильной частоты опорного генератора. При косвенном синтезе , управляемого напряжением (ГУН), уменьшается делителем с переменным коэффициентом деления (ДПКД) в требуемое количество раз. С выхода делителя частота подается на один из входов частотно-фазового детектора, на другой вход которого поступает сигнал с частотой, равной шагу изменения частоты синтезатора, полученной из частоты опорного генератора. Выходной сигнал частотно-фазового детектора проходит через (ФНЧ) и управляет частотой ГУН. Последняя изменяется до тех пор, пока частота на выходе ДПКД не станет равна шагу изменения частоты синтезатора и не достигает заданного значения, определяемого коэффициентом деления.
Большинство описанных методов хотя и дают возможность получать высокостабильные частоты, но обладают недостатками, практически не позволяющими основной массе радиолюбителей конструировать такие . И прежде всего это сложность реализации подобной конструкции из-за трудоемкости настройки, наличия большого количества фильтров, моточных изделий. Прибор, которого описана ниже, разработан по методу цифрового синтеза и свободен от этих недостатков.
Для пояснения метода цифрового синтеза вспомним, как работает частоты. Для преобразования аналогового сигнала синусоидальной формы в дискретный через определенные интервалы времени берутся выборки этого аналогового сигнала. Другими словами, мгновенное значение сигнала измеряется в момент выборки и преобразуется в цифровой код (число). Затем сигнал последовательности чисел с аналогоцифрового преобразователя (АЦП) подается на цифро-аналоговый (ЦАП), который преобразует числа в соответствующий уровень напряжения. Для «сглаживания» ступенек, образующихся при смене чисел, сигнал с выхода ЦАП подается на (ФНЧ). В процессе цифрового синтеза осуществляется по сути дела операция, обратная той, которая происходит в АЦП. В результате формируется последовательность импульсов напряжения, величины которых равны мгновенному значению синтезируемого сигнала, соответствующего данному значению текущей фазы. Эти импульсы подаются на ФНЧ, формирующий синусоидальную форму синтезируемого сигнала. Для упрощения фильтра количество импульсов на период частоты синтезируемого сигнала выбирается не менее пяти.
Накопитель фазы D1 представляет собой многоразрядный накапливающий двоичный , на вход которого подается число К, определяющее синтезируемую частоту. Содержимое накопителя увеличивается на величину К через интервалы времени, равные периоду частоты генератора опорной частоты. Двоичные числа на выходе накапливающего сумматора изменяются циклически от нуля до N – емкости накапливающего сумматора и соответствуют изменению текущей фазы от нуля до 360°. За время цикла формируется один период синтезируемой частоты. Чем больше число К, тем короче время цикла и, следовательно, короче период синтезируемой частоты. Изменяя это число, можно менять и синтезируемую частоту.
Двоичные числа, определяющие момент выборок на периоде синусоидального колебания, подаются с накопителя фазы на вычислитель мгновенных значений D2, в качестве которого используется постоянное запоминающее устройство (ПЗУ), где записаны заранее вычисленные значения выборок. Числа с выхода ПЗУ для преобразования в аналоговую форму подают на ЦАП. Оттуда сигнал поступает на ФНЧ U1, на выходе которого образуется выходной сигнал синтезатора.
Синтезируемую частоту определяют как / = КА/, где Af=fo/N – шаг изменения частоты синтезатора. При этом период частоты на выходе синтезатора формируе?ся по N/К выборкам. Емкость накапливающего сумматора N = 2 n , где п – количество его двоичных разрядов. Задаваясь максимальной синтезируемой частотой и шагом изменения частоты, можно по приведенным выше формулам рассчитать частоту опорного генератора и количество разрядов в накапливающем сумматоре.
Содержимое ПЗУ вычисляется по формуле
где entier(x)-целая часть числа X; т – адрес ПЗУ, который изменяется от нуля до 511.
Вычисленные величины мгновенных значений отсчетов на четверти периода синусоидального колебания приведены для компактности в шестнадцатиричной системе счисления в таблице. При пользовании таблицей следует помнить, что в этой системе счисления символам А, В, С, D, Е, F соответствуют числа 10, 11, 12, 13, 14, 15. Два старших разряда адреса ПЗУ приведены в левом вертикальном столб-
Содержимое ПЗУ микросхемы КР556РТ5 (1/4 SIN)
це, младший разряд в первой строке таблицы. Для примера определим содержимое ячейки ПЗУ с адресом 254. Этот адрес в шестнадцатиричной системе счисления записывается как FE. На пересечении строки F и столбца Е записано ВЗ, что соответствует числу 179 в десятичной системе счисления. Следовательно, по адресу 254 ПЗУ записано число 179.
Как уже упоминалось, синтезируемая частота задается восемнадцатиразрядным двоичным числом К. Так при К= 1 частота на выходе синтезатора равна 0,1 Гц, а при 7(=200 000 – 20 кГц. На рис. 3 показана задания частоты. Для удобства пользования синтезатором и упрощения индикации частоту в синтезаторе устанавливают с помощью шести переключателей ПП10-хВ. Каждый переключатель имеет десять положений (от нуля до девяти), и в его окне видна только одна цифра, соответствующая данному положению. Сигнал на выходах каждого переключателя (выводы А, В, О, Е) представляет собой четырехразрядное двоичное число, а на выходах всех переключателей – значение частоты в двоично-десятичном коде. Для управления частотой синтезатора двоично-десятичный код, набранный с помощью переключателей, необходимо преобразовать в двоичный. Это делают , выполненный DD1, DD2, DD7, DD8, DD13, DD14, двоичный счетчик DD4, DD10, DDI5, а также регистры DD5, DD6, DDI1, DD12 и DD16. На микросхеме DD3 выполнен тактовых сигналов. Для того чтобы процесс преобразования двоично-десятичного кода в двоичный на самой высокой частоте не превышал одной секунды, выбрана равной 400…500 кГц.
31-й и 32-й выставок творчества радиолюбителей /Сост. В. М. Бондаренко.- М.: ДОСААФ, 1989,- 112 с., ил.
Показать содержимое по тегу: si5351
Разработка UV7QAE.
Синтезатор для КВ (160м, 80м, 40м, 20м, 15м, 10м) трансивера с преобразованием “вниз”.
Контроллер STM32F100C8T6B в корпусе LQFP48. Синтез на Si5351a. Экран цветной 1,8″ (ST7735), черно белый NOKIA 5510 (эконом вариант).
Энкодер решили не ставить на плату, это позволит применить энкодер любой по размерам так же разместить его в любом месте конструкции.
Можно отказаться вообще от энкодера так как можно управлять частотой кнопками INC и DEC.
Схема рассчитана на подключение оптического энкодера, так что если кто будет повторять ее с мех.энкодером поставьте RC фильтра по входам энкодера.
Печатная плата 85мм х 45мм в формате Sprint-Layout 6 под кнопки размером 6х6мм synthesizer_si5351_buttons_6x6M.lay
Для увеличения схемы, кликните левой клавишей мышки. Или просто скачать
Выход CLK0 – частота VFO.
Выход CLK1 – частота SSB BFO.
Выход CLK2 – частота CW BFO + CW TONE.
Можно установить реверс частот при передачи в “SYSTEM MENU” опция “TX REVERSE”.
Опция “TX REVERSE” = ON,
OUTPUT | RX | TX |
CLK0 | VFO | SSB BFO |
CLK1 | SSB BFO | VFO |
CLK2 | CW BFO | CW BFO |
Кнопки.
Up, Dn – Вверх, вниз по диапазонам, меню.
Mode – Смена LSB, USB, CW в рабочем режиме, в меню для быстрого ввода частоты.
Menu – вход/выход в меню.
Выбор функций кнопок в “SYSTEM MENU” опция “BUTTON MODE”.
VFO, Step – Переключение VFO A/B, Шаг перестройки частоты. В меню изменяет значения.
Или.
Inc(+), Dec(-) – перестройка по частоте в рабочем режиме. В меню изменяет значения.
Вход в “USER MENU” короткое нажатие кнопки Menu.
Вход в “SYSTEM MENU” нажатие и удержание кнопки Menu больше 1сек.
USER MENU.
01.FREQUENCY STEP | 1/5/10/50/100/500/1000 Hz | Шаг перестройки частоты |
02.ENC. DYNAMIC | ON/OFF | Динамическая скорость перестройки частоты. |
03.ENC. PRESCALER | 1-300 | Делитель энкодера. Перестройки частоты на один оборот энкодера. |
04.RIT FUNCTION | ON/OFF | Включение и выключение RIT. |
05.RIT SHIFT | +-1000Hz | Смещение частоты приема. |
SYSTEM MENU.
01.BUTTON MODE | VFO/Step or Frequency | Функции кнопок |
02.ENC. REVERSED | YES/NO | Реверс энкодера |
03.ADC PRESCALER | 4-12 | Входной делитель напряжения 4 – 12 |
04.TX REVERSE | ON/OFF | Реверс частот на выходах VFO и BFO при передаче. |
05.OUTPUT CURRENT | 2mA – 8mA | Регулировка выходного напряжения CLK0, CLK1, CLK2 установкой тока выходов. |
06.BANDWIDTH SSB | 1000Hz – 10 000Hz | Полоса пропускания фильтра SSB. |
07.BANDWIDTH CW | 100Hz – 1000Hz | Полоса пропускания фильтра CW. |
08.VFO MODE | FREQ+IF,FREQ,FREQx2,FREQx4 | CLK0=VFO+BFO, CLK0=VFO, CLK0=(VFOx2), CLK0=(VFOx4) |
09.FREQ. BFO LSB | 100kHz – 100mHz | Частота ПЧ НБП. |
10.FREQ. BFO USB | 100kHz – 100mHz | Частота ПЧ ВБП. |
11.FREQ. BFO CW | 100kHz – 100mHz | Частота ПЧ CW. |
12.FREQ. SI XTAL | 100kHz – 100mHz | Тактовая частота Si5351a (коррекция). |
13.BANDS CODE | YES/NO | Формировать на выводах двоичный код управления для дешифратор/мультиплексор. |
14.BINARY CODE | YES/NO | Двоичный код для дешифратора иначе код для мультиплексора FST3253. |
15.S-METER 1 | 0mV – 3300mV | Калибровка S Метра. |
16.S-METER 9 | 0mV – 3300mV | Калибровка S Метра. |
17.S-METER +60 | 0mV – 3300mV | Калибровка S Метра. |
18.RANGE 1-30 MHz | YES/NO | Сплошной диапазон 1 – 30 МГц. WARC 30М, 16М, 12М. |
19.BAND WARC | ON/OFF | Только в режиме RANGE 1-30MHz = YES |
20.BAND 160M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
21.BAND 80M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
22.BAND 40M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
23.BAND 20M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
24.BAND 15M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
25.BAND 10M | ON/OFF | Выбор работающих диапазонов трансивера (приемника) |
26.LSB MODE | ON/OFF | Выбор модуляции трансивера (приемника) |
27.USB MODE | ON/OFF | Выбор модуляции трансивера (приемника) |
28.CW MODE | ON/OFF | Выбор модуляции трансивера (приемника) |
29.LOW POWER OFF | ON/OFF | Авто выключение, сохранение текущих данных. |
30.LOW VOLTAGE | 5.0V – 14.0V | Порог напряжения авто выключения. |
31.STATUS RCC | RCC HSI/RCC HSE | Источники тактирования, Внутренний/Кварц. |
Для управления дешифратором/мультиплексором используются выводы BAND 160, BAND 80, BAND 40, BAND 20 (смотрим схему).
Управляющие выходы.
Pin BAND 160 = DATA1/A
Pin BAND 80 = DATA2/B
Pin BAND 40 = DATA4/C
Pin BAND 20 = DATA8/D
Двоичный код для дешифратора.
BANDS | Pin BAND 160 | Pin BAND 80 | Pin BAND 40 | Pin BAND 20 |
01.BAND 160M | 0 | 0 | 0 | 0 |
02.BAND 80M | 1 | 0 | 0 | 0 |
03.BAND 40M | 0 | 1 | 0 | 0 |
04.BAND 30M | 1 | 1 | 0 | 0 |
05.BAND 20M | 0 | 0 | 1 | 0 |
06.BAND 16M | 1 | 0 | 1 | 0 |
07.BAND 15M | 0 | 1 | 1 | 0 |
08.BAND 12M | 1 | 1 | 1 | 0 |
09.BAND 10M | 0 | 0 | 0 | 1 |
Прошивка
Источник: https://ut5qbc.blogspot.com
Amazon.com: Si5351 ГЕНЕРАТОР ЧАСОВ с 3,3 / 5 В I2C bu, 27 MHZ 10ppm xtal: MP3-плееры и аксессуары
Этот небольшой модуль, основанный на микросхеме Silicon Labs Si5351A, представляет собой полноценный тактовый генератор, работающий от менее 8 кГц до более 150 МГц. Микросхема Si5351A использует внешний прецизионный кристалл для создания прецизионного тактового сигнала, который использует его для управления несколькими ФАПЧ и тактовыми делителями с помощью инструкций I2C. Установив ФАПЧ и делители, можно создавать точные и произвольные частоты.Есть три независимых выхода, каждый из которых может иметь разную частоту. Выходы – 3Vpp, и он потребляет менее 35 мА при 3,3 В постоянного тока. Модуль печатной платы также имеет сверхмалошумящий стабилизатор напряжения на входе 5 В – на выходе 3,3 В. Внешний кристалл изготавливается по специальному заказу, чтобы соответствовать требованиям руководства по применению Silicon Labs AN-551. Интерфейс I2C может быть подключен к резисторам 10 кОм как на 3,3 В, так и на 5 В с помощью перемычки J4. Если ваша шина I2C уже терминирована, вы можете удалить эту перемычку. Также два переключателя MOSFET позволяют автоматически подключаться к обоим 3.Системы микроконтроллеров 3 В или 5 В. На 5-контактный разъем J5 подается + 5 В постоянного тока для питания, заземления и сигналов SDA и SCL шины I2C. Размеры печатной платы составляют всего 32,5 x 31 мм, и эти 4 монтажных отверстия способствуют механической устойчивости кристалла, если печатная плата будет использоваться в портативном оборудовании. Возможные варианты использования этого модуля – генератор тактовых импульсов общего назначения на любой необходимой частоте, что устраняет необходимость специального или труднодоступного кварцевого генератора, VFO для радио QRP, VFO / BFO для радио с двойным преобразованием, включая возможность одновременного сдвига частот VFO и BFO, чтобы предложить “IF- Shift », VFO для SDR-радиоприемников, встроенный в систему генератор BITE и т. Д.Стабильность частоты и его спектральная чистота более или менее похожи или лучше на более старые типы Si570, хорошо подходят для работы в любительском радиооборудовании, ну, недостаточно для очень узких режимов, таких как WSPR и т. Д. В целом это отличный исполнитель, учитывая его низкий цена и быстрая и простая реализация.
Простой тест – документация Adafruit SI5351 Library 1.0
# SPDX-FileCopyrightText: 2021 ladyada для Adafruit Industries # SPDX-License-Identifier: MIT # Простая демонстрация тактового генератора SI5351.# Это похоже на пример библиотеки Arduino: # https://github.com/adafruit/Adafruit_Si5351_Library/blob/master/examples/si5351/si5351.ino # Что настроит чип с: # - PLL A на 900 МГц # - PLL B на 616,66667 МГц # - Clock 0 на частоте 112,5 МГц, с использованием PLL A в качестве источника, деленного на 8 # - Тактовый сигнал 1 на частоте 13,553115 МГц, с использованием ФАПЧ B в качестве источника, деленного на 45,5 # - Clock 2 на 10,76 кГц, с использованием PLL B в качестве источника, деленного на 900 и далее # делится с делителем R равным 64. импортная доска импортный бизнес импорт adafruit_si5351 # Инициализировать шину I2C.i2c = busio.I2C (board.SCL, board.SDA) # Инициализировать SI5351. si5351 = adafruit_si5351.SI5351 (i2c) # В качестве альтернативы вы можете указать адрес I2C, если он был изменен: # si5351 = adafruit_si5351.SI5351 (i2c, адрес = 0x61) # Теперь настройте ФАПЧ и тактовые выходы. # ФАПЧ могут быть сконфигурированы с умножителем и делением бортовой Эталонный кристалл # 25 МГц. Например, настройте PLL A на 900 МГц, умножив # на 36. Используется целочисленный множитель, который со временем становится более точным. # но допускает меньший диапазон частот по сравнению с дробным # множитель показан рядом.si5351.pll_a.configure_integer (36) # Умножить 25 МГц на 36 print ("Частота ФАПЧ A: {0} МГц" .format (si5351.pll_a.frequency / 1000000)) # Затем настройте PLL B на 616,6667 МГц, умножив 25 МГц на 24,667, используя # конфигурация дробного множителя. Обратите внимание, что вы указываете целое число # множитель, а затем числитель и знаменатель как отдельные значения, т.е. # числитель 2 и знаменатель 3 означают 2/3 или 0,667. Это дробное # конфигурация чувствительна к некоторому дрожанию со временем, но может установить большее # диапазон частот.si5351.pll_b.configure_fractional (24, 2, 3) # Умножить 25 МГц на 24,667 (24 2/3) print ("Частота ФАПЧ B: {0} МГц" .format (si5351.pll_b.frequency / 1000000)) # Теперь настройте тактовые выходы. Каждый из них управляется частотой ФАПЧ в качестве входа #, а затем делит это до определенной частоты. # Сконфигурируйте выход тактового сигнала 0, чтобы он управлялся PLL A, деленным на 8, поэтому выход # 112,5 МГц (900 МГц / 8). Опять же, здесь используется самое точное целочисленное деление. # но нельзя установить такой широкий диапазон значений. si5351.clock_0.configure_integer (si5351.pll_a, 8) print ("Часы 0: {0} МГц" .format (si5351.clock_0.frequency / 1000000)) # Затем настройте тактовый генератор 1, который будет управляться PLL B, разделенным на 45,5, чтобы получить # 13,5531 МГц (616,6667 МГц / 45,5). Здесь используется дробное деление и снова # обратите внимание, что числитель и знаменатель указаны явно. Это меньше # точный, но допускает большой диапазон частот. si5351.clock_1.configure_fractional (si5351.pll_b, 45, 1, 2) # Разделить на 45,5 (45 1/2) print ("Часы 1: {0} мгц" .format (si5351.clock_1.frequency / 1000000)) # Наконец, настройте тактовый генератор 2, чтобы он управлялся PLL B, разделенным один раз на 900, чтобы получить # до 685,15 кГц, а затем делится специальным делителем R, который # делит 685,15 кГц на 64, чтобы получить конечный результат 10,706 кГц. si5351.clock_2.configure_integer (si5351.pll_b, 900) # Установите разделитель R, это может быть значение: # - R_DIV_1: делитель 1 # - R_DIV_2: делитель 2 # - R_DIV_4: делитель на 4 # - R_DIV_8: делитель на 8 # - R_DIV_16: делитель 16 # - R_DIV_32: делитель 32 # - R_DIV_64: делитель 64 # - R_DIV_128: делитель 128 si5351.clock_2.r_divider = adafruit_si5351.R_DIV_64 print ("Часы 2: {0} кгц" .format (si5351.clock_2.frequency / 1000)) # После настройки ФАПЧ и тактовой частоты включите выходы. si5351.outputs_enabled = Верно # Вы можете отключить их, установив false.
– Купить si5351 с бесплатной доставкой на AliExpress
Отличные новости !!! Для si5351 вы находитесь в нужном месте. К настоящему времени вы уже знаете, что все, что вы ищете, вы обязательно найдете на AliExpress.У нас буквально есть тысячи отличных продуктов во всех товарных категориях. Ищете ли вы товары высокого класса или дешевые и недорогие оптовые закупки, мы гарантируем, что он есть на AliExpress.
Вы найдете официальные магазины торговых марок наряду с небольшими независимыми продавцами со скидками, каждый из которых предлагает быструю доставку и надежные, а также удобные и безопасные способы оплаты, независимо от того, сколько вы решите потратить.
AliExpress никогда не уступит по выбору, качеству и цене. Каждый день вы будете находить новые онлайн-предложения, скидки в магазинах и возможность сэкономить еще больше, собирая купоны. Но вам, возможно, придется действовать быстро, так как этот лучший si5351 вскоре станет одним из самых востребованных бестселлеров. Подумайте, как вам будут завидовать друзья, когда вы скажете им, что приобрели si5351 на AliExpress.Благодаря самым низким ценам в Интернете, дешевым тарифам на доставку и возможности получения на месте вы можете еще больше сэкономить.
Если вы все еще не уверены в si5351 и думаете о выборе аналогичного товара, AliExpress – отличное место для сравнения цен и продавцов. Мы поможем вам решить, стоит ли доплачивать за высококлассную версию или вы получаете столь же выгодную сделку, приобретая более дешевую вещь.И, если вы просто хотите побаловать себя и потратиться на самую дорогую версию, AliExpress всегда позаботится о том, чтобы вы могли получить лучшую цену за свои деньги, даже сообщая вам, когда вам будет лучше дождаться начала рекламной акции. и ожидаемая экономия.AliExpress гордится тем, что у вас всегда есть осознанный выбор при покупке в одном из сотен магазинов и продавцов на нашей платформе. Реальные покупатели оценивают качество обслуживания, цену и качество каждого магазина и продавца.Кроме того, вы можете узнать рейтинги магазина или отдельных продавцов, а также сравнить цены, доставку и скидки на один и тот же продукт, прочитав комментарии и отзывы, оставленные пользователями. Каждая покупка имеет звездный рейтинг и часто имеет комментарии, оставленные предыдущими клиентами, описывающими их опыт транзакций, поэтому вы можете покупать с уверенностью каждый раз. Короче говоря, вам не нужно верить нам на слово – просто слушайте миллионы наших довольных клиентов.
А если вы новичок на AliExpress, мы откроем вам секрет.Непосредственно перед тем, как вы нажмете «купить сейчас» в процессе транзакции, найдите время, чтобы проверить купоны – и вы сэкономите еще больше. Вы можете найти купоны магазина, купоны AliExpress или собирать купоны каждый день, играя в игры в приложении AliExpress. Вместе с бесплатной доставкой, которую предлагают большинство продавцов на нашем сайте, вы сможете приобрести si5351 по самой выгодной цене.
У нас всегда есть новейшие технологии, новейшие тенденции и самые обсуждаемые лейблы.На AliExpress отличное качество, цена и сервис всегда в стандартной комплектации. Начните самый лучший шоппинг прямо здесь.
УНИВЕРСАЛЬНЫЙ МОДУЛЬ VFO-BFOС SI5351 УНИВЕРСАЛЬНЫЙ МОДУЛЬ VFO-BFO
С SI5351 УНИВЕРСАЛЬНЫЙ МОДУЛЬ VFO-BFO С SI5351
(2020)
KLIK HIER VOOR DE NEDERLANDSE VERSIE
Универсальный модуль VFO-BFO.Здесь подключен к ресиверу прямого преобразования.
В этом простом приемнике используется только выход VFO.
Такой модуль генератора SI5351, который вы можете заказать через Интернет, я должен уметь что-то с этим сделать! Он имеет 3 выхода сигналов генератора, поэтому я могу заменить им VFO и BFO! И управляйте им с помощью знаменитой Arduino Nano! Универсальный модуль VFO-BFO, вот в чем идея. Его можно использовать с простыми приемниками прямого преобразования.Тогда вы используете только выходной сигнал VFO. С простым приемником прямого преобразования “Barefoot Technology” вы можете принимать почти столько же, сколько и с дорогостоящим коммерческим радиоприемником. Но для цифровых режимов вы должны использовать DDS или этот универсальный модуль VFO-BFO для достаточной стабильности частоты! Но универсальный модуль VFO-BFO можно использовать и с супергетеродинными приемниками с промежуточной частотой и кварцевыми фильтрами. Тогда вы используете не только сигнал VFO, но и сигнал BFO.
Конечно, большая проблема заключается в том, как управлять этим SI5351 с помощью Arduino Nano.У Silicon Labs есть документ AN619, 63 страницы, и я должен сначала его прочитать. Ну сначала вообще не понял! Разделители Fractional Multisynth и странное число 1 048 575 … Тактовых сигналов 8, а у моего 10-контактного модуля их только три. Однако остальные 5 находятся в микросхеме и должны быть отключены для экономии энергии.
С простым приемником прямого преобразования “Barefoot Technology” вы можете получить почти
столько же, сколько с дорогим коммерческим радио.Но для цифровых видов нужно
DDS или универсальный модуль VFO-BFO для достаточной стабильности частоты!
Есть две схемы ФАПЧ, ФАПЧ и ФАПЧ. Частота этих ФАПЧ должна быть установлена. Второй каскад Multi Synth должен быть установлен на четное целое значение для низкого джиттера. Таким образом, одновременно можно использовать только два из трех выходов! Постепенно все становится ясно. Это вызов – понять все в документе AN619.К счастью, есть 8 тактовых сигналов, так что это примерно в 8 раз то же самое. Я должен прочитать это только один раз.
Я нашел несколько примеров в Интернете. Один с библиотекой SI5351, но он использовал PLLA для обоих выходов и не имел целочисленного значения для вторых каскадов Multi Synth. Мне пришлось бы изменить всю библиотеку, а это слишком сложно. Но более простая программа OE1CGS (Christophe) Arduino sketch была пригодна для использования и могла быть изменена. Никакой библиотеки или лишних файлов, очень понятно и логично. Эта простота идеально сочетается с философией «Barefoot Technology»! Просто и легко!
Принципиальная схема и проводка между Arduino Nano и модулем SI5351.
Моя идея заключалась в том, чтобы использовать универсальный модуль VFO-BFO для приема QRSS. Тогда стабильность частоты очень важна. Поэтому была добавлена хрустальная печь. Он работает с резистором NTC в качестве датчика температуры и резистором на 120 Ом в качестве нагревательного элемента. Они приклеены к кристаллу модуля SI5351.
Два транзистора BC547 представляют собой дифференциальный усилитель, BC557 управляет резистором «нагревателя». Вы можете сами выбрать номинал резистора 100-1к.Я использую 150 Ом. Низкое сопротивление дает высокую точность, высокое сопротивление – более спокойное управление.
Вид изнутри
Предотвращение радиопомех очень важно для приема слабых сигналов QRSS. У меня было простое решение для этого. Модуль SI5351 имеет собственный источник питания на 5 В. Arduino Nano получает питание от ПК через USB-разъем, а не от того же 5-вольтового источника питания модуля SI5351.Когда частота модуля SI5351 программируется с помощью Arduino Nano, он отключается от USB-кабеля. Он больше не имеет напряжения питания, теперь выключен и не может вызывать радиопомех.
Но если вы хотите использовать модуль в качестве VFO и BFO для обычного приемника, кристалл-печь и источник питания на 5 В для SI5351 не нужны. Затем просто подключите модуль SI5351 к 5 вольту Arduino Nano. Arduino подключается к вашему ПК через USB-кабель, и вы можете настроить модуль с помощью программы, запущенной на ПК.
Низ
Резистор нагревателя приклеен к кристаллу вместе с резистором NTC.
Вы можете сделать это с помощью клея, который можно расплавить паяльником.
Создайте новый каталог и скопируйте в него файлы из следующего ZIP-файла: Программное обеспечение для Arduino Nano
В каталоге VFO-BFO01 вы найдете программу «VFO-BFO01.ino », который необходимо загрузить в Arduino Nano. Программа основана на скетче OE1CGS (Christophe) Arduino. Кристоф понял, как запрограммировать модуль SI5351 для вывода CLK0. Программа была легко адаптирована для двух выходов CLK ( CLK0 = VFO, CLK1 = BFO). И была добавлена процедура последовательного RS232, так что вы можете установить частоту через порт USB.
Программирование Arduino Nano. Загрузите программу “VFO-BFO01.ino”
и нажмите на стрелку чуть ниже “редактировать”, чтобы загрузить его.
Загрузите и установите IDE. Подключите Arduino Nano к USB-порту на вашем ноутбуке или ПК и с помощью «Инструменты – Порт» вы можете выбрать правильный COM-порт. Когда он работает, у вас есть правильный COM-порт.
С помощью «Файл – Открыть… “вы можете открыть программу, то есть файл с расширением” .ino “. С помощью первого V на панели инструментов вы можете проверить, есть ли в программе ошибки. Во втором раунде со стрелкой вы можете скомпилировать программу , загрузите и готово!
Программа состоит из двух частей. Часть «void setup ()» содержит конфигурацию, например, какие порты настроены как входные или выходные. Вторая часть «void loop ()» содержит программу. Более подробную информацию можно найти на вышеупомянутом веб-сайте Arduino.
Запуск последовательного монитора в среде разработки Arduino
Для этого вам нужно запустить Serial Monitor в среде разработки Arduino.
Теперь вы можете просто использовать следующие команды для программирования SI5351! Попробуйте, отправив вопросительный знак, вы получите информацию о версии программного обеспечения.
===
Использование:
Команда “?” распечатать информацию о версии программного обеспечения
Команда “Annnnnnnn” Установить частоту nnnnnnnn CLK0
Команда «Bnnnnnnnn» Установить частоту nnnnnnnn CLK1
Команда «An» Установить мощность CLK0, n = 0 = выключено; n = 1 = -8 дБм; n = 2 = -3 дБм; n = 3 = 0 дБм
Команда «Bn» Установить мощность CLK1, n = 0 = выключено; n = 1 = -8 дБм; n = 2 = -3 дБм; n = 3 = 0 дБм
===
Программирование частоты с помощью специальной программы
Но это, конечно, непрактично для настройки ресивера.Таким образом вы можете установить частоту только один раз. Для работы с радиоприемником есть программа, написанная на Python. Это программа “VFO-BFO01-v01a.py”, которую вы также можете найти в ZIP-файле.
Перед использованием этой программы вам необходимо установить Python. Это очень просто. Но сначала прочтите что-нибудь о Python, щелкнув следующую ссылку:
ЧТО ТАКОЕ PYTHON И КАК УСТАНОВИТЬ PYTHON
Поскольку исходный код Python написан в кодировке ASCII, вы можете легко адаптировать программу под свои нужды.Рассмотрим, например, размер экрана, цвета и т. Д.
Откройте Python 3 (IDLE) и откройте “VFO-BFO01-v01a.py”
Затем выберите «Запустить модуль». Тогда вы сначала получите вопрос о том, какой порт RS232 использовать.
Понятно какой порт выбрать!
Графический интерфейс пользователя, с помощью которого вы можете управлять модулем VFO-BFO.
Модуль VFO-BFO подключается к вашему ПК с помощью кабеля USB.
Для установки мощности: n = 0 = выключено; n = 1 = -8 дБм; n = 2 = -3 дБм; n = 3 = 0 дБм.
CLK0 – это выход VFO, CLK1 – выход BFO.
BFO1 и BFO2
Это позволяет вам выбрать две частоты BFO, например, для приема LSB и USB. Вы должны указать эти частоты в файле конфигурации.
Частота BFO и частота BFO +
Частота BFO увеличивается или уменьшается на значение шага частоты.
Вызов и сохранение
Для загрузки и сохранения файла конфигурации. Вы можете редактировать этот файл с помощью текстового редактора ASCII. В файле конфигурации вы также можете установить коррекцию частоты в PPM.
Частота VFO и частота VFO +
Тюнинг.При нажатии частота изменяется на величину шага частоты.
FreqStep- и FreqStep +
Установите размер шага частоты настройки, а также сканирования.
Сканирование и сканирование + сканирование ВЫКЛ
Для сканирования полосы частот. Частота VFO постоянно изменяется со значением шага частоты.
Первые результаты
Универсальный модуль VFO-BFO был подключен к простому приемнику прямого преобразования, ничего особенного.И … скоро были получены сигналы! Модуль SI5351 с термостабилизированным кристаллом стабилен.
Воздушный шар на высоте 20 метров
5 сигналов на 10 м
Индекс PA2OHH
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 год 22 23 24 25 26 27 28 год 29 30 31 год 32 33 34 35 год 36 37 38 39 40 41 год 42 43 год 44 год 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 год 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | / * * Si5351A Rev B Файл заголовка экспорта регистра конфигурации * * Этот файл представляет серию Silicon Labs Si5351A Rev B * записи в регистр, которые могут быть выполнены для загрузки одной конфигурации * на устройстве.Он был создан Silicon Labs ClockBuilder Pro. * инструмент экспорта. * * Деталь: Si5351A Rev B * Идентификатор дизайна: * Включает записи в регистр управления загрузкой до и после загрузки: Да * Создано: ClockBuilder Pro v3.1 [2021-01-18] * Временная метка: 2021-03-12 15:00:15 GMT-08: 00 * * Полный отчет о дизайне, соответствующий этому экспорту, включен в конце * этого заголовочного файла.* * / #ifndef SI5351A_REVB_REG_CONFIG_HEADER #define SI5351A_REVB_REG_CONFIG_HEADER #define SI5351A_REVB_REG_CONFIG_NUM_REGS 52 typedef struct { беззнаковый адрес типа int; / * 16-битный адрес регистра * / значение беззнакового символа; / * 8-битные данные регистра * / } si5351a_revb_register_t; si5351a_revb_register_t const si5351a_revb_registers [SI5351A_REVB_REG_CONFIG_NUM_REGS] = { {0x0002, 0x53}, {0x0003, 0x00}, {0x0004, 0x20}, {0x0007, 0x00}, {0x000F, 0x00}, {0x0010, 0x0F}, {0x0011, 0x0F}, {0x0012, 0x8C}, {0x0013, 0x8C}, {0x0014, 0x8C}, {0x0015, 0x8C}, {0x0016, 0x8C}, {0x0017, 0x8C}, {0x001A, 0xAF}, {0x001B, 0xC8}, {0x001C, 0x00}, {0x001D, 0x0E}, {0x001E, 0x8D}, {0x001F, 0x00}, {0x0020, 0x85}, {0x0021, 0x58}, {0x002A, 0x00}, {0x002B, 0x04}, {0x002C, 0x00}, {0x002D, 0x0D}, {0x002E, 0xE0}, {0x002F, 0x00}, {0x0030, 0x00}, {0x0031, 0x00}, {0x0032, 0x00}, {0x0033, 0x04}, {0x0034, 0x00}, {0x0035, 0x0D}, {0x0036, 0xE0}, {0x0037, 0x00}, {0x0038, 0x00}, {0x0039, 0x00}, {0x005A, 0x00}, {0x005B, 0x00}, {0x0095, 0x00}, {0x0096, 0x00}, {0x0097, 0x00}, {0x0098, 0x00}, {0x0099, 0x00}, {0x009A, 0x00}, {0x009B, 0x00}, {0x00A2, 0x00}, {0x00A3, 0x00}, {0x00A4, 0x00}, {0x00A5, 0x00}, {0x00A6, 0x00}, {0x00B7, 0x92}, }; / * * Отчет о дизайне * * Обзор * ======== * Деталь: Si5351A * Создано: ClockBuilder Pro v3.1 [2021-01-18] * Временная метка: 2021-03-12 15:00:15 GMT-08: 00 * * Примечания к дизайну * ============ * Si5351A 10-контактный MSOP * * Проверка правил проектирования * ================= * Ошибки: * - Ошибок нет * * Предупреждения: * - Без предупреждений * * Дизайн * ====== * Входы: * IN0: 27 МГц * * Выходы: * OUT0: 28,1544 МГц * Включен LVCMOS 8 мА * Смещение 0,000 с * OUT1: 28,1544 МГц * Включен LVCMOS 8 мА * Смещение 0,000 с * OUT2: Не используется * * Частотный план * ============== * PLL_A: * Включенные функции = Нет * Fvco = 893.0) * Fout = 28,1544 МГц * N = 31,75 * * Настройки * ======== * * Расположение Имя настройки Десятичное значение Шестнадцатеричное значение * ------------ -------------- ----------------- ------ ----------- * 0x0002 [3] XO_LOS_MASK 0 0x0 * 0x0002 [4] CLK_LOS_MASK 1 0x1 * 0x0002 [5] LOL_A_MASK 0 0x0 * 0x0002 [6] LOL_B_MASK 1 0x1 * 0x0002 [7] SYS_INIT_MASK 0 0x0 * 0x0003 [7: 0] CLK_OEB 0 0x00 * 0x0004 [4] DIS_RESET_LOLA 0 0x0 * 0x0004 [5] DIS_RESET_LOLB 1 0x1 * 0x0007 [7: 4] I2C_ADDR_CTRL 0 0x0 * 0x000F [2] PLLA_SRC 0 0x0 * 0x000F [3] PLLB_SRC 0 0x0 * 0x000F [4] PLLA_INSELB 0 0x0 * 0x000F [5] PLLB_INSELB 0 0x0 * 0x000F [7: 6] CLKIN_DIV 0 0x0 * 0x0010 [1: 0] CLK0_IDRV 3 0x3 * 0x0010 [3: 2] CLK0_SRC 3 0x3 * 0x0010 [4] CLK0_INV 0 0x0 * 0x0010 [5] MS0_SRC 0 0x0 * 0x0010 [6] MS0_INT 0 0x0 * 0x0010 [7] CLK0_PDN 0 0x0 * 0x0011 [1: 0] CLK1_IDRV 3 0x3 * 0x0011 [3: 2] CLK1_SRC 3 0x3 * 0x0011 [4] CLK1_INV 0 0x0 * 0x0011 [5] MS1_SRC 0 0x0 * 0x0011 [6] MS1_INT 0 0x0 * 0x0011 [7] CLK1_PDN 0 0x0 * 0x0012 [1: 0] CLK2_IDRV 0 0x0 * 0x0012 [3: 2] CLK2_SRC 3 0x3 * 0x0012 [4] CLK2_INV 0 0x0 * 0x0012 [5] MS2_SRC 0 0x0 * 0x0012 [6] MS2_INT 0 0x0 * 0x0012 [7] CLK2_PDN 1 0x1 * 0x0013 [1: 0] CLK3_IDRV 0 0x0 * 0x0013 [3: 2] CLK3_SRC 3 0x3 * 0x0013 [4] CLK3_INV 0 0x0 * 0x0013 [5] MS3_SRC 0 0x0 * 0x0013 [6] MS3_INT 0 0x0 * 0x0013 [7] CLK3_PDN 1 0x1 * 0x0014 [1: 0] CLK4_IDRV 0 0x0 * 0x0014 [3: 2] CLK4_SRC 3 0x3 * 0x0014 [4] CLK4_INV 0 0x0 * 0x0014 [5] MS4_SRC 0 0x0 * 0x0014 [6] MS4_INT 0 0x0 * 0x0014 [7] CLK4_PDN 1 0x1 * 0x0015 [1: 0] CLK5_IDRV 0 0x0 * 0x0015 [3: 2] CLK5_SRC 3 0x3 * 0x0015 [4] CLK5_INV 0 0x0 * 0x0015 [5] MS5_SRC 0 0x0 * 0x0015 [6] MS5_INT 0 0x0 * 0x0015 [7] CLK5_PDN 1 0x1 * 0x0016 [1: 0] CLK6_IDRV 0 0x0 * 0x0016 [3: 2] CLK6_SRC 3 0x3 * 0x0016 [4] CLK6_INV 0 0x0 * 0x0016 [5] MS6_SRC 0 0x0 * 0x0016 [6] FBA_INT 0 0x0 * 0x0016 [7] CLK6_PDN 1 0x1 * 0x0017 [1: 0] CLK7_IDRV 0 0x0 * 0x0017 [3: 2] CLK7_SRC 3 0x3 * 0x0017 [4] CLK7_INV 0 0x0 * 0x0017 [5] MS7_SRC 0 0x0 * 0x0017 [6] FBB_INT 0 0x0 * 0x0017 [7] CLK7_PDN 1 0x1 * 0x001C [17: 0] MSNA_P1 3725 0x00E8D * 0x001F [19: 0] MSNA_P2 34136 0x08558 * 0x001F [23: 4] MSNA_P3 45000 0x0AFC8 * 0x002C [17: 0] MS0_P1 3552 0x00DE0 * 0x002F [19: 0] MS0_P2 0 0x00000 * 0x002F [23: 4] MS0_P4 4 0x00004 * 0x0034 [17: 0] MS1_P1 3552 0x00DE0 * 0x0037 [19: 0] MS1_P2 0 0x00000 * 0x0037 [23: 4] MS1_P4 4 0x00004 * 0x005A [7: 0] MS6_P2 0 0x00 * 0x005B [7: 0] MS7_P2 0 0x00 * 0x0095 [14: 0] SSDN_P2 0 0x0000 * 0x0095 [7] SSC_EN 0 0x0 * 0x0097 [14: 0] SSDN_P3 0 0x0000 * 0x0097 [7] SSC_MODE 0 0x0 * 0x0099 [11: 0] SSDN_P1 0 0x000 * 0x009A [15: 4] SSUDP 0 0x000 * 0x00A2 [21: 0] VCXO_PARAM 0 0x000000 * 0x00A5 [7: 0] CLK0_PHOFF 0 0x00 * 0x00A6 [7: 0] CLK1_PHOFF 0 0x00 * 0x00B7 [7: 6] XTAL_CL 2 0x2 * * * / #endif |
Si5351 Библиотеки и коммутационная плата – пульсации в эфире
Несколько интересных новинок, касающихся Si5351.Во-первых, я взял код C из моей библиотеки Si5351 для avr-gcc и преобразовал его в библиотеку Arduino / C ++, которую вы можете найти здесь. Он воспроизводит функциональность библиотеки avr-gcc, но значительно упрощает быструю реализацию проектов. Я тестировал этот дизайн на Arduino Uno и клоне Arduino Uno, но я не вижу причин, по которым библиотека не должна работать и с другими вариантами Arduino. Пожалуйста, попробуйте и оставьте отзыв на странице GitHub, если вы обнаружите ошибки или у вас есть предложения по улучшению.
Другая новость касается платы Si5351 Breakout Board, о которой я упоминал в предыдущем посте. Я только что получил 3 фиолетовых печатных платы от OSHpark, и они просто великолепны.
Я быстро заполнил его компонентами и соединил его с Arduino, чтобы протестировать новую библиотеку. Как вы можете видеть на фотографии в верхней части сообщения, это довольно маленькая доска, но она довольно мощная для своего размера. Все, что вам нужно сделать, это подключить линии VCC, GND и I2C SDA и SCL к Arduino, и вы получите три независимых трансформаторных выхода на разъемах SMA, которые могут генерировать от 1 до 150 МГц (в будущем библиотека будет изменена, чтобы позволить полный диапазон от 8 кГц до 160 МГц)
Продам ли я их комплектом? Я бы хотел, но пока не уверен.Как ни странно, я только что узнал, что весьма вероятно, что Adafruit также будет продавать коммутационную плату Si5351. Если вы посмотрите видео ниже примерно на отметке 6:22, вы это увидите.
Я немного удивлен этим, так как RF – это не то, чем я знал, что интересовало Adafruit. Честно говоря, будет сложно конкурировать с относительно более крупной рыбой в пруду для любителей, которым является Adafruit. Хотя, похоже, что на моей коммутационной плате есть то, чего нет на плате Adafruit: изолирующие выходные трансформаторы.Скорее всего, сделаю одну пробную комплектацию и посмотрю, хватит ли после этого интереса к другой. Следите за блогом, чтобы узнать об этом в ближайшем будущем.
СвязанныеSi5351 VFO – биты и байты Яна
Прошивка написана на C ++ с использованием фреймворка Arduino для простоты.
Часть пользовательского интерфейса содержит небольшую библиотеку шаблонов, использующую как шаблон CRTP, чтобы избежать накладных расходов виртуальных функций (экономит память кода и немного накладных расходов времени выполнения), так и оценку времени компиляции с помощью вариативных шаблонов, чтобы обеспечить сильную оптимизацию компилятора.Фактически, версия 2.0 этого кода использовала обычное наследование, виртуальные функции и не использовала шаблоны – и была примерно на 2 КБ больше. Большая разница в микроконтроллере с 32 КБ памяти кода. Недостатком является то, что код не так легко читать и читать без некоторого опыта в метапрограммировании шаблонов.
Если кому-то интересно узнать, как это работает, можно найти полезные ресурсы:
Код не зависит от стандартной библиотеки, потому что она обычно не доступна для AVR.Вот почему мне пришлось включить минимальные реализации контейнеров массивов и кортежей. Они не претендуют на полноту или отсутствие ошибок по какой-либо мере, они предназначены для использования только в целях этой библиотеки пользовательского интерфейса.
В остальном код зависит от библиотеки Etherkit Si5351a (а не от Adafruit, которая мне не подошла), библиотеки вращающегося кодировщика Брайана Лоу и библиотеки устранения дребезга кнопок Bounce2. Установите их либо с помощью диспетчера библиотек Arduino, либо вручную, как описано на их страницах Github.
Функциональность очень похожа на VFO AD9850, однако я не реализовал автоматическое сохранение и восстановление последнего состояния в / из EEPROM. Я редко использовал эту функцию, и она только усложняла код и изнашивала микроконтроллер (EEPROM имеет ограниченное количество операций записи). Код для этого подготовлен, если он кому-то понадобится, его не составит труда добавить обратно.
Последовательный порт также не используется в текущей версии (кроме отладки).Его можно использовать либо для дистанционного управления, либо, например, для переключения диапазонов в будущем, если кто-то захочет это реализовать. Разъем есть.
ВАЖНО
При загрузке прошивки обязательно выберите вариант платы, который поддерживает внутренний генератор 8 МГц (в обычном Arduino Uno используется кварцевый / резонатор 16 МГц).