Просмотр полной версии : Приём CW при отношении с/ш < 1 (0 dB)
Предлагается на тестирование програмка для приёма кода Морзе через звуковую карту при отношении сигнал/шум меньше 1 основанная на накоплении полезного сигнала за некоторый промежуток времени до уровня с некоторой вероятностью (шум предполагается случайным процессом) превышающего шум. Естественно, полоса пропускания очень узка (1000+-10 Гц), что требует достаточной стабильности и соответствующего шага перестройки и, так же естественно, имеется ограничение по скорости принимаемых сигналов. Для обработки звука используется чуть модифицированная библиотека bass.dll, которая и прилагается (если компьютер не находит её в папке с программой, переместите её в системную папку Windows).
Подключать приёмник к компьютеру желательно через разделительный НЧ трансформатор (и прочие вещи для уменьшения помех - заземление, сетевые фильтры и т. д. - не забываем). При начале работы установите источник звука (микрофонный или линейный вход), установите время накопления сигнала (максимальные значения скорости приёма в зн/мин и отношение сигнал/шум высвечиваются) и язык CW. "Пуск" и программа начинает работу. Три индикатора показывают работу: средний уровень НЧ на входе, средний уровень в отслеживаемой полосе - 1000+-10 Гц и индикатор максимального уровня - особое внимание: он не должен сверкать красным, нарушится случайный характер шума! Случайные и принимаемые точки-тире высвечиваются на синей полосе вверху, декодированные сигналы - на белой полосе, сформированные строки перемещаются в поле текстового редактора, где их можно редактировать и сохранить в текстовом файле.
Для тестирования можно установить связь и попросить коллегу постепенно уменьшать мощность сигнала одновременно контролируя приём на слух и программой.
Жду Ваших предложений, замечаний и критики. При положительных итогах тестирования буду делать 15-ти канальный вариант (скриншот прилагается). Так же прилагается скриншот исходника программы.
Скачал - попробовал..
Что-то у меня ничего не декодирует?!
Не совсем понятен выбор средней частоты 1000+-10 гц, т.к. в основном народ работает на прием на частотах 400-900 гц.
Имитировать прием (взамен реального приемника) в данном случае удобно программой MorzeRunner - она то и выдает случайные морзе последовательности.
Как насчет средней частоты в 700 ГЦ??
UAOWL, выбрать можно любую частоту, но чем ниже частота, тем больше времени занимает накопление по N шт периодов, т. е. ниже максимальная скорость приёма CW или больше минимальное соотношение сигнал/шум, в этом смысле более подходит 11 кГц! (Есть продвинутые звуковые карты с частотой дискретизации до 382 кГц - ещё бы чуть и можно работать на промежуточной!).
Попробуйте настроится на уверенно принимаемые сигналы, проверьте работоспособность программки.
Леонид,
Какие минимальные требования к компу, Р133 под W98 годится?
Олег UX8ZA
основанная на накоплении полезного сигнала за некоторый промежуток времени до уровня с некоторой вероятностью (шум предполагается случайным процессом) превышающего шум.
Если не затруднит, не могли бы Вы поподробней объяснить, о каком накоплении идет речь? Наверное, имеется в виду длина выборки отсчетов сигнала для расчета БПФ или это что-то другое?
Леонид3, а SHA файл не подбросите, чтоб в алгоритм врубиться?
ХЭМ/UR5ZQV
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.
Добавил *.SHA, он в процессе работы, есть лишние точки.
UAOWL, выбрать можно любую частоту, но чем ниже частота, тем больше времени занимает накопление по N шт периодов, т. е. ниже максимальная скорость приёма CW или больше минимальное соотношение сигнал/шум, в этом смысле более подходит 11 кГц! (Есть продвинутые звуковые карты с частотой дискретизации до 382 кГц - ещё бы чуть и можно работать на промежуточной!).
Попробуйте настроится на уверенно принимаемые сигналы, проверьте работоспособность программки.
Леонид, удалось таки добиться кой-какой дешифрации - но беда в том, что MorzeRunner не выдает более 900 гц, а ваш декодер настроен на 1000 гц - в каком месте можно изменить среднюю частоту полезного сигнала?
UA0WL, чуть переделал с возможностью выбора обрабатываемой частоты, берите!
Леонид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)
Сорри, Леонид опередил (hi).
Леонид, понял. У Вас последняя версия. Поставил предыдущий BASS - все пошло.
ХАМский designe, насчёт bass.dll во вступительном слове :)
Мне хочется услышать критику, замечания и предложения, т. к. не знаю, что делать дальше - продолжить-ли работу (есть возможности для улучшения) или выбросить её, как не находящую практического применения :idontnow:
ХАМский designe
......
Мне хочется услышать критику, замечания и предложения, т. к. не знаю, что делать дальше - продолжить-ли работу (есть возможности для улучшения) или выбросить её, как не находящую практического применения :idontnow:
Удалось получить устойчивое декодирование <чистого> CW сигнала , который генерится программой CWType, Сергея Постригайло .... Причем тон генерируемого сигнала нужно выставить точно 1002 гц.
К, сожалению, реалии жизни таковы, что корреспонденты отвечают в некоторой полосе 200-300 гц от центральной частоты вызова - причем эта частота заранее неизвестна - вот здесь первая задача: определить ее и захватить. Либо <автоматом> , либо вручную при помощи спектра или <водопада>. На популярной программе MorzeRunner, где обстановка 100% отображает реальный эфир декодирования сигналов корреспондентов почти не происходит - нет захвата и удержания частоты корреспондента.
В последней версии есть явная ошибка - при переборе выпадающего списка <частота приема> наилучший прием у меня получался при значении 848 гц...(1002 гц передача..)
На моем Win98 при закрытии проги крестиком она виснет, повторная загрузка возможна только при перезапуске компа
А в общем, идея интересная - и имеет право на жизнь, желательно с открытыми кодами - может кто и подкинет стоящую идейку...
Успехов в дальнейшем проектировании!
UAOWL, код открыт (см. выше файл SHA.zip). "при закрытии проги крестиком" - один раз было и у меня (Win XP) по непонятой причине?? Спасибо за отклик, буду работать.
To UA0WL: Коды содержаться в .SHA файле в посте Леонида от 05.05. только чтобы их прочитать требуется оболочка HiAsm (см. одноименный сайт, и вообще рекомендую, намного облегчите себе программный труд).
UAOWL, код открыт (см. выше файл SHA.zip). "при закрытии проги крестиком" - один раз было и у меня (Win XP) по непонятой причине?? Спасибо за отклик, буду работать.
Похоже происходит что-то напоминающее"пожирание памяти" - при аварийном закрытии программы не происходит освобождение пямяти..
Хотелось бы увидеть код последней версии , где меняется центральная частота приема.. Почему дискретом , а не плавно?
UAOWL, да, может быть остаётся не выключенной bass.dll и продолжает накапливать в буфер и переполняться, в упомянутом мной случае ОС вылетела напрочь, до синего экрана с сообщениями о смертельных неполадках.
Дискртность получается от нежелания нагружать компьютер вычислениями пропорций между двумя соседними значениями данных и шаг частоты поэтому кратен 44100/4*n, (44100 Гц - частота дискретизации, а за один период надо делать 4 измерения), хотя особых погрешностей не возникнет, если не вычислять пропорцию, а принять ближайшее значение. Полная задача - перекрыть весь звуковой диапазон (300 - 2700), а зто большой объём вычислений.
Код сделан в среде "мышиного" программирования HiAsm и не является тайной, он ещё сырой (переименовать в *.sha).
Леонид, чтобы избавиться от ложного приема на гармониках можно изменять частоту дискретизации: 4Fcиг>Fдис>2Fсиг.
Думается затея не имеет смысла.. Все давно поняли, что уши не заменит никакая программа.. Особенно когда корреспондент передаёт коряво с "клоподава".
RV6LSS, ну прежде всего для автора :) , а задача в том и заключается - расширить диапазон принимаемых сигналов в сторону, где уши уже ничего не слышат (по крайней мере хоть задача благородная :) ).
Уважаемые форумчане!
После долгого перерыва решил вернуться к этой теме и доделать программу до удобоваримого вида (вернее нарисовать снова). Прошу протестировать и по возможности дать свои замечания, критику и предложения.
В предыдущем посте забыл добавить, что исходники программки приложены.
2 Леонид3
почему-то постоянно сваливается "галка" Engl...декодирование переходит на русский...а вообщем, нормальная программа
hwm52, при наличии в тексте букв Ш, Ч, Э, Ю, Я - автоматически переходит на русский. Это легко убрать в HiAsm - исходник есть, если очень мешает, могу выложить и без автоматики.
могу выложить и без автоматики.
если не затруднит, иначе любая ошибка приводит к переключению на русский
hwm52, (надеюсь модераторы не будут ругать, всего 60 кБ) вот:
привет зря ты забросил программу идея была класс я прбовал работает
просто её нужно до делать и всё чувсвительность у программы хорошая
мой емайл dh6pn@mail.ru
у меня есть вопросы к тебе но не на этом сайте пиши жду
Пробовал на WINDJWS 7, не работает. CWGen Сергея Постригайло работает. Как её запустить на WINDJWS 7?
Помню была статья Полякова. Кажется журнал Радио номер 1 за 86 год. Радиосвязь с ФМ. Там описывался синхронный детектор, который звхватывает сигнал даже если тот лежит ниже уровня шума. Ну а далее можно было бы развить идею.
Powered by QRZ.RU