PDA

Просмотр полной версии : Приём CW при отношении с/ш < 1 (0 dB)



Леонид3
05.05.2006, 14:51
Предлагается на тестирование програмка для приёма кода Морзе через звуковую карту при отношении сигнал/шум меньше 1 основанная на накоплении полезного сигнала за некоторый промежуток времени до уровня с некоторой вероятностью (шум предполагается случайным процессом) превышающего шум. Естественно, полоса пропускания очень узка (1000+-10 Гц), что требует достаточной стабильности и соответствующего шага перестройки и, так же естественно, имеется ограничение по скорости принимаемых сигналов. Для обработки звука используется чуть модифицированная библиотека bass.dll, которая и прилагается (если компьютер не находит её в папке с программой, переместите её в системную папку Windows).
Подключать приёмник к компьютеру желательно через разделительный НЧ трансформатор (и прочие вещи для уменьшения помех - заземление, сетевые фильтры и т. д. - не забываем). При начале работы установите источник звука (микрофонный или линейный вход), установите время накопления сигнала (максимальные значения скорости приёма в зн/мин и отношение сигнал/шум высвечиваются) и язык CW. "Пуск" и программа начинает работу. Три индикатора показывают работу: средний уровень НЧ на входе, средний уровень в отслеживаемой полосе - 1000+-10 Гц и индикатор максимального уровня - особое внимание: он не должен сверкать красным, нарушится случайный характер шума! Случайные и принимаемые точки-тире высвечиваются на синей полосе вверху, декодированные сигналы - на белой полосе, сформированные строки перемещаются в поле текстового редактора, где их можно редактировать и сохранить в текстовом файле.
Для тестирования можно установить связь и попросить коллегу постепенно уменьшать мощность сигнала одновременно контролируя приём на слух и программой.
Жду Ваших предложений, замечаний и критики. При положительных итогах тестирования буду делать 15-ти канальный вариант (скриншот прилагается). Так же прилагается скриншот исходника программы.

UA0WL
06.05.2006, 09:32
Скачал - попробовал..
Что-то у меня ничего не декодирует?!
Не совсем понятен выбор средней частоты 1000+-10 гц, т.к. в основном народ работает на прием на частотах 400-900 гц.
Имитировать прием (взамен реального приемника) в данном случае удобно программой MorzeRunner - она то и выдает случайные морзе последовательности.

Как насчет средней частоты в 700 ГЦ??

Леонид3
06.05.2006, 10:38
UAOWL, выбрать можно любую частоту, но чем ниже частота, тем больше времени занимает накопление по N шт периодов, т. е. ниже максимальная скорость приёма CW или больше минимальное соотношение сигнал/шум, в этом смысле более подходит 11 кГц! (Есть продвинутые звуковые карты с частотой дискретизации до 382 кГц - ещё бы чуть и можно работать на промежуточной!).
Попробуйте настроится на уверенно принимаемые сигналы, проверьте работоспособность программки.

UX8ZA
06.05.2006, 11:15
Леонид,
Какие минимальные требования к компу, Р133 под W98 годится?
Олег UX8ZA

RU3DKW
06.05.2006, 11:23
основанная на накоплении полезного сигнала за некоторый промежуток времени до уровня с некоторой вероятностью (шум предполагается случайным процессом) превышающего шум.

Если не затруднит, не могли бы Вы поподробней объяснить, о каком накоплении идет речь? Наверное, имеется в виду длина выборки отсчетов сигнала для расчета БПФ или это что-то другое?

UR5ZQV
06.05.2006, 11:59
Леонид3, а SHA файл не подбросите, чтоб в алгоритм врубиться?
ХЭМ/UR5ZQV

Леонид3
06.05.2006, 13:17
amsatuser, у меня P-IY 2400 мГц XP, нагружает процессор на 4-5%, 15-ти канальный на 20% (обработка звука с частотой дискретизации 44100 Гц!), на других не испытывал, (если бы я был Програмистом, то смог бы сделать программу обращения к звуковой карте в машинных кодах, и 133 мГц P-III вполне подошли).
Pilgrim, ХАМский designe, логика (алгоритм) следующая: за время накопления, равное целому числу N периодов анализируемой частоты, вычисляются 4 суммы по N мгновенных значений через 0, 90, 180, 270 градусов, шум, как случайная величина стремится к "0", а регулярный сигнал, если он есть, накапливается, накопленный сигнал сравнивается со средним значением величины шума и делается вывод о наличии регулярного сигнала. Численные значение сравнения выбраны по достоверной вероятности 0.99.

Леонид3
06.05.2006, 13:34
Добавил *.SHA, он в процессе работы, есть лишние точки.

UA0WL
10.05.2006, 08:44
UAOWL, выбрать можно любую частоту, но чем ниже частота, тем больше времени занимает накопление по N шт периодов, т. е. ниже максимальная скорость приёма CW или больше минимальное соотношение сигнал/шум, в этом смысле более подходит 11 кГц! (Есть продвинутые звуковые карты с частотой дискретизации до 382 кГц - ещё бы чуть и можно работать на промежуточной!).
Попробуйте настроится на уверенно принимаемые сигналы, проверьте работоспособность программки.

Леонид, удалось таки добиться кой-какой дешифрации - но беда в том, что MorzeRunner не выдает более 900 гц, а ваш декодер настроен на 1000 гц - в каком месте можно изменить среднюю частоту полезного сигнала?

Леонид3
10.05.2006, 09:48
UA0WL, чуть переделал с возможностью выбора обрабатываемой частоты, берите!

UR5ZQV
10.05.2006, 10:45
Леонид3, Какая версия ХИАСма использовалась? Что то под b154 у меня не идет (хотя exeшник запускается).
UA0WL, по видимому в участке кода элемента InLineCode:
" for i:=0 to len-1 do
begin
St.Read(Vhod,2);
AbsVhod:=abs(Vhod);
_Signal[4]:=_Signal[4]+AbsVhod;
_Shum:=_Shum+AbsVhod;
if _Max<absVhod then _Max:=absVhod;
j:=j+1;
if j>=44 then j:=0;//j>=88 для частоты 500гц
if j=0 then _Signal[0]:=_Signal[0]+Vhod;
if j=11 then _Signal[1]:=_Signal[1]+Vhod;//J=22 для 500гц
if j=22 then _Signal[0]:=_Signal[0]-Vhod;//j=44 для 500Гц
if j=33 then//j=66 для 500 гц
begin
_Signal[1]:=_Signal[1]-Vhod;
_Signal[2]:=_Signal[2]+_Signal[0];
_Signal[3]:=_Signal[3]+_Signal[1];
k:=k+1;"
пропорционально требуемому уменьшению частоты увеличить величины при переменной j (или подождать пока Леонид не введет эту опцию, у него есть неиспользуемая точка Freq)

UR5ZQV
10.05.2006, 10:59
Сорри, Леонид опередил (hi).

UR5ZQV
10.05.2006, 11:05
Леонид, понял. У Вас последняя версия. Поставил предыдущий BASS - все пошло.

Леонид3
10.05.2006, 13:12
ХАМский designe, насчёт bass.dll во вступительном слове :)
Мне хочется услышать критику, замечания и предложения, т. к. не знаю, что делать дальше - продолжить-ли работу (есть возможности для улучшения) или выбросить её, как не находящую практического применения :idontnow:

UA0WL
11.05.2006, 04:21
ХАМский designe
......
Мне хочется услышать критику, замечания и предложения, т. к. не знаю, что делать дальше - продолжить-ли работу (есть возможности для улучшения) или выбросить её, как не находящую практического применения :idontnow:

Удалось получить устойчивое декодирование <чистого> CW сигнала , который генерится программой CWType, Сергея Постригайло .... Причем тон генерируемого сигнала нужно выставить точно 1002 гц.
К, сожалению, реалии жизни таковы, что корреспонденты отвечают в некоторой полосе 200-300 гц от центральной частоты вызова - причем эта частота заранее неизвестна - вот здесь первая задача: определить ее и захватить. Либо <автоматом> , либо вручную при помощи спектра или <водопада>. На популярной программе MorzeRunner, где обстановка 100% отображает реальный эфир декодирования сигналов корреспондентов почти не происходит - нет захвата и удержания частоты корреспондента.

В последней версии есть явная ошибка - при переборе выпадающего списка <частота приема> наилучший прием у меня получался при значении 848 гц...(1002 гц передача..)
На моем Win98 при закрытии проги крестиком она виснет, повторная загрузка возможна только при перезапуске компа
А в общем, идея интересная - и имеет право на жизнь, желательно с открытыми кодами - может кто и подкинет стоящую идейку...

Успехов в дальнейшем проектировании!

Леонид3
11.05.2006, 08:21
UAOWL, код открыт (см. выше файл SHA.zip). "при закрытии проги крестиком" - один раз было и у меня (Win XP) по непонятой причине?? Спасибо за отклик, буду работать.

UR5ZQV
11.05.2006, 08:42
To UA0WL: Коды содержаться в .SHA файле в посте Леонида от 05.05. только чтобы их прочитать требуется оболочка HiAsm (см. одноименный сайт, и вообще рекомендую, намного облегчите себе программный труд).

UA0WL
11.05.2006, 10:25
UAOWL, код открыт (см. выше файл SHA.zip). "при закрытии проги крестиком" - один раз было и у меня (Win XP) по непонятой причине?? Спасибо за отклик, буду работать.

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

Леонид3
11.05.2006, 16:40
UAOWL, да, может быть остаётся не выключенной bass.dll и продолжает накапливать в буфер и переполняться, в упомянутом мной случае ОС вылетела напрочь, до синего экрана с сообщениями о смертельных неполадках.
Дискртность получается от нежелания нагружать компьютер вычислениями пропорций между двумя соседними значениями данных и шаг частоты поэтому кратен 44100/4*n, (44100 Гц - частота дискретизации, а за один период надо делать 4 измерения), хотя особых погрешностей не возникнет, если не вычислять пропорцию, а принять ближайшее значение. Полная задача - перекрыть весь звуковой диапазон (300 - 2700), а зто большой объём вычислений.
Код сделан в среде "мышиного" программирования HiAsm и не является тайной, он ещё сырой (переименовать в *.sha).

UR5ZQV
12.05.2006, 12:03
Леонид, чтобы избавиться от ложного приема на гармониках можно изменять частоту дискретизации: 4Fcиг>Fдис>2Fсиг.

RA6L
19.05.2006, 17:56
Думается затея не имеет смысла.. Все давно поняли, что уши не заменит никакая программа.. Особенно когда корреспондент передаёт коряво с "клоподава".

Леонид3
19.05.2006, 19:30
RV6LSS, ну прежде всего для автора :) , а задача в том и заключается - расширить диапазон принимаемых сигналов в сторону, где уши уже ничего не слышат (по крайней мере хоть задача благородная :) ).

Леонид3
07.12.2007, 14:04
Уважаемые форумчане!
После долгого перерыва решил вернуться к этой теме и доделать программу до удобоваримого вида (вернее нарисовать снова). Прошу протестировать и по возможности дать свои замечания, критику и предложения.

Леонид3
10.12.2007, 10:27
В предыдущем посте забыл добавить, что исходники программки приложены.

RA3TAC
10.12.2007, 12:05
2 Леонид3
почему-то постоянно сваливается "галка" Engl...декодирование переходит на русский...а вообщем, нормальная программа

Леонид3
10.12.2007, 12:13
hwm52, при наличии в тексте букв Ш, Ч, Э, Ю, Я - автоматически переходит на русский. Это легко убрать в HiAsm - исходник есть, если очень мешает, могу выложить и без автоматики.

RA3TAC
10.12.2007, 13:45
могу выложить и без автоматики.
если не затруднит, иначе любая ошибка приводит к переключению на русский

Леонид3
10.12.2007, 14:45
hwm52, (надеюсь модераторы не будут ругать, всего 60 кБ) вот:

DH6PN
20.01.2012, 20:27
привет зря ты забросил программу идея была класс я прбовал работает
просто её нужно до делать и всё чувсвительность у программы хорошая

мой емайл dh6pn@mail.ru

у меня есть вопросы к тебе но не на этом сайте пиши жду

RA9FUE
03.02.2012, 18:41
Пробовал на WINDJWS 7, не работает. CWGen Сергея Постригайло работает. Как её запустить на WINDJWS 7?

RA9UEK
07.02.2012, 19:16
Помню была статья Полякова. Кажется журнал Радио номер 1 за 86 год. Радиосвязь с ФМ. Там описывался синхронный детектор, который звхватывает сигнал даже если тот лежит ниже уровня шума. Ну а далее можно было бы развить идею.