Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - GM

Страницы: 1 ... 6 7 [8] 9 10 ... 23
106
Посчитал полосовой фильтр на 137 кГц.

107
Ну вот, подготовил файл для трансляции, проверил. Вставлю прямо в текст сообщения, благо он короткий.

;File:                EEBEACON.ASM
;Version:             1.3
;Last updated:        08.06.2020
;Author:              GM, a.k.a. George
;Target:              (ATtiny861, 8 MHz internal oscillator)
;
;Support E-mail:
;
;DESCRIPTION
;The programme produces the eeprom content for the LFBEACON project

         .nolist
         .include "tn861Adef.inc"          ;definitions for ATtiny861A
         .list
         .eseg
         .org     0x000
frqs:    .db      0x95,0x02,0x23,0xB8      ;fSAMPLE=24999454.00 Hz
frq1:    .db      0x00,0xD1,0xCE,0xF0      ;fOUT1=137500.00 Hz
frq2:    .db      0x00,0xD1,0xCE,0xF1      ;fOUT2=137501.00 Hz
tau0:    .db      0x00,0x01,0xD4,0xC0      ;in us units
t0d3:    .db      0x00,0x00,0x9C,0x40      ;1/3-rd duration of tau0 in us units
pause:   .db      0x00,0x07,0xA1,0x20      ;in us units
msg0:    .db      "THE CHASM GAPED BEFORE HIM",0,0
         .org     msg0+100
msg1:    .db      "CQ RA3TTS K",0
         .org     msg0+200
msg2:    .db      "CQ RN3AUS K",0
         .org     msg0+300
msg3:    .db      "CQ RW3ADB K",0
         .exit

Теперь каждый может подставить свои данные (константы fSAMPLE, fOUT1, fOUT2, TAU0, T0D3, PAUSE, сообщения msg0, msg1, msg2, msg 3), протранслировать с помощью AVRstudio (или что там есть под рукой), получить файл eeprom.eep и прошить его в МК вместе с хекс-файлом из первого сообщения темы. В общем и целом на этом всё. А, осталось добавить фильтр на выходе синтезатора.


108
Немного не так. fOUT2 - никакая не разность, а такая же частота, как fOUT1.

Например,  fOUT1=137500.00, fOUT2=137500,10. Разность частот будет 0.1 Гц. Синтезатор с опорой 25 МГц может дать 0.09 с копейками герц, меньше он дать не в состоянии. Так что, в данном случае вы не сможете получить 0.05 Гц, но задать сможете. Программа посчитает и выставит две одинаковые частоты, или при определенном соотношении частот две частоты с разницей df. Повторюсь, для AD9833 формула такова df=fОПОРЫ/2^28.

Чтобы уменьшить шаг частоты от синтезатора, надо снизить частоту опорного генератора.

Нашел: ответ #10. Цитата оттуда
[Замечу в скобках, если взять некий опорник с частотой 2.0-2.6 МГц, то шаг перестройки частоты составит 0.00745..0.00931 Гц, т.е. меньше 0.01 Гц, как и завещал нам партайгеноссе :-) Роман RW3ADB, но частота будет генериться от 0.01 Гц до 1..1.3 МГц].

Формулу привёл выше.

Джордж.

[Странно, могу править все свои сообщения, почему это?]

109
Если вопросов нет, я продолжу :-).

Поговорим о структуре записей в еепром. Она достаточно простая - шесть 4-х байтных переменных, далее четыре сообщения, на каждое из которых отведено по 100 байт.

Порядок следования такой.

1. Переменная fSAMPLE - частота опорного генератора на плате синтезатора, она же - частота выборок. Частота задается до сотых долей герца, десятичная запятая опускается. Например, у моего опорного генератора частота 24999454,00 Гц, соответственно fSAMPLE = 2499945400 или в шестнадцатиричном виде 0x950223B8. Побайтно запись частоты выглядит так 0x95, 0x02, 0x23, 0xB8. Первый байт является старшим. [Перевести из десятички в хекс можно с помощью калькулятора виндоуз.]

2. Переменная fOUT1 - первая выходная частота. Используется во всех режимах. Например, необходима выходная частота 137500,00 Гц. В шестнадцатиричном виде - 0х00D1CEF0 или, побайтно, 0x00, 0xD1, 0xCE, 0xF0. Подобная точность кажется излишеством, однако  при расчёте кода приращения фазы или, по-простому, кода частоты, точность вычисления кода максимальна. К тому же программа делает округление кода.

3. Переменная fOUT2 - вторая выходная частота. Используется в режиме DFCW. Структура переменной аналогична двум первым. Ответственность за разность частот fOUT2-fOUT1 переложил на плечи потребителя. Пусть ставит 1 Гц или 0.1 Гц или ещё что-нибудь. Для проверки ставил fOUT1=137500,00 Гц, а fOUT2=1000000,00 Гц - работало, как часы.

4. Переменная TAU0 - длительность элементарной посылки в микросекундах. Используется в режимах QRSS, DFCW и BPSK. Например, в QRSS это длительность точки. Например, нужна скорость 50 знаков в минуту, т.е. 120 мс на тире. 120 мс = 120000 мкс = 0x0001В4С0, в таком порядке и записывается.

5. Переменная T0D3 - длительность временного зазора между элементами знака в мкС. Используется в режиме DFCW. RA3TTS посоветовал взять треть TAU0, т.е. TAU0/3, отсюда название T0D3. Совету внял, но переложил ответственность за длительность T0D3 на пользователя, ему виднее.

6. Переменная PAUSE - длительность паузы между сообщениями в мкс.

[Отмечу в скобках, хотя временные переменные можно задавать от 1 до 2^32-1, но менее 10 мкс выставлять задержку не вижу смысла - длительность одного периода 137 кГц составляет 7.3 мкс. Опять же - ответственность за выбор ложится на потребителя.]

7. Сообщение может быть в пределах 100 байт, включая 0x00 на последнем месте. Сообщение может включать в себя 26 прописных букв английского алфавита A-Z, десять арабских цифр 0-9 и пробел в кодировке ASCII.

Сигнал fOUT1 в разных частях сообщения в режимах QRSS и BPSK является синхронным, таким образом существует возможность когерентного приёма.

Приведу пример программного кода в еепром.

            .eseg
        .org 0x000
frqs:   .db  0x95,0x02,0x23,0xB8   ;fS=24999454.00 Hz
frq1:   .db  0x00,0xD1,0xCE,0xF0   ;fOUT1=137500.00 Hz
frq2:   .db  0x00,0xD1,0xCE,0xF1   ;fOUT2=137501.00 Hz
tau0:   .db  0x00,0x01,0xD4,0xC0   ;in us units
t0d3:   .db  0x00,0x00,0x9C,0x40   ;in us units
pause:  .db  0x00,0x07,0xA1,0x20   ;in us units
msg0:   .db  "THE CHASM GAPED BEFORE HIM",0
        .exit


С ним нам предстоит немного поработать.

[подправил в своих сообщениях отдельные досадные неточности]

110
Забыл сказать. Тема начиналась здесь. Но там немного сказано о маяке, так что лучше сказанное повторить ещё раз здесь в данной теме.

На схеме видно, что маяк управляется двумя переключателями s1 ("250/1"), s2 ("Зп/Чт"), двумя кнопками s3 ("+"), s4 ("-") и кнопкой сброс ("RST"). Хотя сиё непринципиально, в моём варианте имеется 4 кнопки, а сброс делаю так: замыкаю + и - питания, срабатывает защита БП, потом нажимаю кнопку сброса защиты. Это от лени - не хотелось паять лишнюю кнопку :-). При нажатии кнопки "RST" получается тот же результат, но питание сбрасывать не надо.

Подтягивающие резисторы на s1-s4 в принципе не нужны, поскольку подключены внутренние резисторы. Однако, в сложной помеховой обстановке их лучше подключить.

Кварц 16 МГц, подключенный к ножкам 7 и 8 МК тоже в принципе не нужен, но константы TAU0, T0D3, PAUSE придётся подбирать самостоятельно.

Светодиоды LED1 и LED2 могут иметь разнообразное назначение в каждом режиме, хотя я старался придти к некой унификации. Поскольку нет полноценного дисплея, то смысл применения светодиодов состоит в том, чтобы при каждом нажатии кнопки показывать изменения в состоянии МК.

Итак, выбор режимов. Все режимы выбираются кнопками/переключателями s1, s2.

1) Если s1-выключен, s2-выключен, то при подаче на схему напряжения питания выбирается режим 1 - подстройка и запись частоты. Оба светодиода погашены. Теперь увеличение частоты с помощью кнопки s4 ("+") на 250 единиц df или на 1 единицу df зависит от состояния переключателя s1. Единица перестройки df=fSAMPLE/2^28. К примеру , при fSAMPLE=25000000 Гц, df=0.093132226 Гц. Уменьшение частоты делается с помощью кнопки s3 ("-")

2)  Если s1-включен, s2-выключен, то при подаче на схему напряжения питания выбирается режим 2 - QRSS. Светодиод LED1 светится, LED2 - погашен. Длительность элементарной посылки (точка) определяется 4-х байтной константой TAU0, одна единица константы соответствует 1 мкс. Максимальная величина TAU0 составляет 4294967295 мкс, чуть больше 1 час 11 минут, что удовлетворит самую строгую тетю :-).  Пауза между элементами знака составляет TAU0. Длительность тире в три раза больше. Пауза между знаками три TAU0. Пауза между сообщениями - определяется 4-х байтной константой PAUSE. Запуск режима осуществляется кнопкой s4. После запуска светодиоды мигают в соответствии с передаваемой информацией. [Добавлю, маяк можно использовать для формирования привычного кода Морзе, скажем, от 1 знака/мин до 1000 знаков/мин. Формула выбора константы TAU0=6000/W в мс, где W-требуемая скорость передачи знак/мин.]

3)  Если s1-выключен, s2-включен, то при подаче на схему напряжения питания выбирается режим 3 - DFCW. Светодиод LED1 погашен, LED2 - светится. Длительность элементарной посылки соответствует TAU0. За паузу между элементами знака отвечает 4-х байтная константа T0D3, которая также выбирается пользователем. Пауза между знаками составляет TAU0, пауза между сообщениями - определяется константой PAUSE. Запуск режима осуществляется кнопкой s4. После запуска светодиоды мигают в соответствии с передаваемой информацией.

4) Если s1-включен, s2-включен, то при подаче на схему напряжения питания выбирается режим 4 - BPSK. Светодиод LED1 светится, LED2 - светится. Длительность элементарной посылки соответствует TAU0. Пауза между сообщениями - определяется константой PAUSE. Запуск режима осуществляется кнопкой s4. После запуска светодиоды мигают в соответствии с передаваемой информацией.

111
Решил-таки выделить из данной темы вопрос о маячке. Теперь это здесь

112
Коллеги, всем GE.

Предлагаю вашему вниманию схему и программу простого автономного маяка на микросхеме синтезатора AD9833, управляемого микроконтроллером ATtiny861A. Собственно, это не маяк, а возбудитель маяка, поскольку амплитуда сигнала всего 600 мВ двойной размах.

Маяк имеет 4 режима работы.

1) Оперативная подстройка частоты. При подаче питания программа читает код частоты опорного генератора fSAMPLE и выходных частот fOUT1, fOUT2 из еепром МК. Режим позволяет подстроить любую из частот и записать ее на место  fOUT1 или fOUT2.

2) Режим QRSS. При подаче питания программа читает длительность элементарной посылки TAU0, длительность паузы между сообщениями PAUSE, а также текст сообщения. В этом режима программа периодически выдаёт сообщение на частоте fOUT1.

3) Режим DFCW. При подаче питания программа дополнительно читает длительность между элементарными посылками T0D3. В этом режиме программа периодически выдаёт сообщение на частотах fOUT1 и fOUT2 в соответствии с протоколом.

4) Режим BPSK (экспериментальный). В этом режима программа периодически выдаёт сообщение на частоте fOUT1, при передаче логического нуля фаза частоты равна 0 градусов, при передаче логической единицы фаза частоты равна 180 градусам. Все байты сообщения передаются в формате 8N1, т.е. старт-бит, 8 бит данных, начиная с младшего бита и один стоп бит. В начале сообщения передается байт синхронизации, равный 0хЕ6. В силу специфики BPSK байт синхронизации передаётся независимо от содержимого сообщения.

Собственно, пока все режимы. Далее распишу эти режимы по-подробнее, укажу все форматы данных и расскажу, как можно легко и просто самостоятельно подготовить собственные данные в еепром.


113
Интересно! Блин! .... Во всяком случае мне.
   Кажись конкуренция началась)))

Have you heard about quite an event in the "chip & fish" shop :-)?

114
Алексей, прям целое исследование провели, спасибо.

Что скажете по поводу длины сообщения? Предлагаю сделать 4 сообщения по 100 знаков каждое, имеется простая возможность выбора номера сообщения без изменения схемы.

Прочитал ещё статью  А.Анкудинова UA3VVM, спасибо нашему rn3aus.

Цитаты оттуда. 6.2. Описание WOLF

"WOLF фактически представляет собой BPSK сигнал со скоростью передачи информации 10 бит в секунду. Как результат теоретически занимаемая полоса частот должна составить 10 Гц, но    из-за особенностей BPSK происходит расширение полосы до 100 Гц, что неприемлемо для LF диапазона (136 кГц) ввиду создания помех другим пользователям радиоэфира."

 "BPSK телеграфирование на 6 дб выгоднее обычного телеграфирования по типу включено/выключено. В обычном телеграфировании сигнал принимает значения 1 и 0, а в BPSK +1 и -1."

Так что, оставлю я, пожалуй, BPSK для экспериментов.

115
Начиная тему, я думал о просто хорошем гетеродине для ДВ-приёмника с хорошим синусом, без гармоник и без спуров, чтобы от кварцевого генератора любой частоты работал, ну и чтобы возбудитель передатчика мог выдать любую частоту с дискретом 0.1 Гц или лучше, а маячок был так - сбоку-припёка. А вы, вон куда повернули!

Тогда может и тему новую открыть про маячок? А эту тему оставить под добротный РЧ ГСС с дисплеем, энкодером, аттенюатором, ещё может, чего-нибудь придумаете...

Постараюсь по-быстрому внедрить DFCW, но сначала задам несколько вопросов.

1. Точка передается с частотой выше, чем тире?
2. Длительность точки и тире одинакова?
3. Как разделяются буквы, слова и предложения?
4. Каков диапазон длительности точки на практике?

Расскажу об особенностях хранения сообщения. Всего в 861 тиньке 512 байт еепром. Ну, 5 переменных по 4 байта отъедают 20 байт. На сообщение остаётся 492 байта. Сообщение заканчивается чётным нулём, или двумя нечетными.

В каждом байте хранится по символу, все прописные буквы, т.е. A, B, C, ..X, Y, Z и цифры 0, 1, 2, .. 9. При передаче они заменяются кодом Морзе. Можно добавить и русский алфавит, надо ли?

Мне кажется, 492 символа сообщения многовато будет, может быть, разбить на 8 сообщений? Скажем по 60 символов на сообщение или сделать сообщения не фиксированной длины, а произвольной, но чтобы в сумме не превышали 492 байта. Можно и во флеш забить какие-то постоянные сообщения. Другой вопрос, куда столько сообщений и как их вызывать :-)?

Ещё порция вопросов, стоит ли подумать о внешнем дистанционном управлении маяком, скажем, смс сообщениями или по радиоканалу? Или это опять непринципиальные навороты?

[Замечу в скобках, если взять некий опорник с частотой 2.0-2.6 МГц, то шаг перестройки частоты составит 0.00745..0.00931 Гц, т.е. меньше 0.01 Гц, как и завещал нам товарищ Роман RW3ADB, но частота будет генериться от 0.01 Гц до 1..1.3 МГц].

[Наверное, с переменными TAU0 и PAUSE я погорячился, начав с 1 мкс. Может, стоит единицей взять не микросекунду, а миллисекунду?
Что думаете?]

116
Дополнить можно, почему нет? Программа усложнится конечно, надеюсь, не радикально. Но к сожалению обычный дисплей требует порядка 11 ног МК для подключения. А у тинек их всего 15-16. Так что надо переходить на другие многоножки, на атмеги, например.

Есть, правда, ещё один способ, я его иногда применяю. Добавляю ещё один МК (ту же тиньку, скажем), который занимается дисплеем и клавиатурой. Тогда потребуется всего 2-3 ноги для связи между ними.

По поводу планов с данной схемой.

Во-первых, планирую добавить два режима маяка 1) с BPSK и 2) с DFCW. Вот только не знаю, нужно это кому-то или не нужно? как вы видите, активность коллег-радиолюбителей по данной теме нулевая.

Во-вторых, хочу добавить второй синтезатор, чтобы были квадратуры (синус и косинус любой частоты 0-12 мег). Если удастся разумеется, не в плане ножек, а в плане отображения. Тогда, скорее всего, добавлю дисплей и энкодер, ну а там уж сам бог велел приступить к полноценному ГСС на эти частоты, останется добавить аттенюатор 0-100 дБ, ну и может частотомер. Последний можно было бы и отдельно, да больно неохота на каждое отдельное устройство тратить дисплеи, корпуса, БП и т.п.

Есть ещё вариант - использовать плату ардуины с 328 мегой. У меня есть одна, пока занята под другой проект.

117
Коллеги,

Представляю вашему вниманию схему и прошивку генератора на базе DDS AD9833 . Как уже говорилось, диапазон частот генератора 0.1 Гц-12 МГц.

Генератор управляется 4-мя кнопками: "+", "-", "Запись", "Шаг". Функционирование отображается двумя светодиодами. Имеется два основных режима: установка частоты и режим маяка.

Если при включении переключатель 10/0.1 разомкнут, то программа переходит в режим установки частоты, что отображается с помощью светодиода "fADJ". При первом включении выдается частота 137500 Гц. Кнопками "+" и "-" можно выбрать любую частоту с шагом 0.1 Гц или 10 Гц. Таким образом, с помощью не более 200 (!) нажатий можно получить генерацию любой частоты ДВ-диапазона. Выбранную частоту с помощью кнопки "Запись" можно записать в еепром, при последующем включении генератора на выходе будет именно эта частота.

Если при включении переключатель 10/0.1 замкнут, то программа переходит в режим маяка что отображается с помощью светодиода "QRSS". Программа читает частоту установки из еепрома и циклически выдает телеграфное сообщение, записанное в еепроме. Длительность точки устанавливается переменной TAU0, расположенной также в еепром. Цикличность выдачи сообщения определяется переменной PAUSE. Обе переменные 4-х байтные, единица младшего разряда равна 1 мкс. Таким образом, длительность точки может быть от 1 мкс до 4294967295 мкс (т.е. до 4294 сек, перекрывает все длинные моды, привет Роману :-). Также и пауза может быть до 71 минуты (не учитывая длительности самого сообщения).

Частота опорного генератора и выходная частота также записывается в еепром, так что нет необходимости подгонять частоту опорного генератора под конкретное значение, каждый может использовать опорный генератор, имеющийся в наличии, в диапазоне от 2 МГц до 25 МГц. Ну и генерить частоту до частоты Найквиста этого опорника, тут уж фундаментальное ограничение.

Структуру еепром выложу позднее, что-то спать захотелось :-).

118
Ну, опорный генератор на плате неплох. Досконально не исследовал, но за 2 часа работы частота была в пределах плюс-минус 0.2 Гц.
Генератор можно сдуть и подключить свой собственный, кто помешает? Хоть гиацинт на 5 мег.

119
Добавлю еще фоток, которые не поместились. Поскольку синтезатор позволяет управлять не только частотой, но и фазой, написал фрагмент управления фазой 0 и 90 (почти BPSK :-). [Рука пронесла, поставил фазу 90 вместо 180].

5) спектр почти BPSK, длительность фазы 500 мкс.
6) спектр почти BPSK вблизи.
7) платка синтезатора.

120
Всем ЗДР.

Тема вышла из давнишнего разговора с Романом RW3ADB, процитирую
вопрос лишь в том, что с контроллерами умеешь общаться тут только ты и Саша АУС. Ну еще может пару человек. Если подобная конструкция будет "собери из готовых модулей" и максимум  залей готовую прошивку и все сразу заработало - оно будет востребовано. Ну и шаг синтеза на дв должен быть 0.01 Гц минимальный. При двух-трех часовой абсолютной нестабильности частоты 0.001 Гц.

По объективным и субъективным причинам только сейчас вплотную подступил к данному вопросу.

Закупил в Китае плату синтезатора AD9833, размер 18мм х13мм, написал тестовую программу. На фото показаны предварительные результаты.

1) синус 137500 Гц, прямо на выходе синтезатора, никаких фильтров.
2) спектр синуса 137500 Гц.
3) синус 1000000 Гц.
4) спектр синуса 1000000 Гц.

Если добавить второй синтезатор, можно построить качественный приёмник ДВ-диапазона, и не только, т.к. синтезатор позволяет генерить качественный синус до 12 МГц (с фильтром на выходе).

Теперь хочу посоветоваться с заинтересованными лицами, куда двигаться и как оформить данный генератор. Толи управлять двумя кнопками + и -, чтобы подогнать синтез к заданной частоте и записать частоту в еепром, толи поставить энкодер, дисплей и аттенюатор, и превратить генератор в простой р/л ГСС. А может ещё какие варианты найдутся? Что скажете?

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

Ещё пара пенсов. Частота опорного генератора практически не имеет значения в пределах 2-25 МГц, т.к. программа рассчитывает коды для фазового аккумулятора, исходя из конкретного значения опорной частоты, записанной в еепром. Ну и напоследок, по ТО уровень спуров порядка -85 дБ и меньше.

Сейчас используется голый МК ATtiny861, в принципе мржно брать любой атмеловский МК, хоть ардуино (для тех, кто не хочет паять).

Страницы: 1 ... 6 7 [8] 9 10 ... 23