PDA

Просмотр полной версии : Универсальный дешифратор диапазонов с индикацией на PIC16F628A



Страницы : [1] 2

Integral
29.04.2014, 13:34
Нужна помощь радиолюбительского сообщества по доведению устройства до рабочего состояния. В настоящее время собран экспериментальный образец, фото которого ниже:


171687 171688

Схема дешифратора


171689

Устройство предназначено для переключения ФНЧ транзисторного/лампового усилителя мощности. В транзисторных выходных каскадах дешифратор переключает ФНЧ на выходе усилителя мощности, в ламповых возможно применение во входных согласующих цепях ФНЧ. Устройство не использует от трансивера данные по дата-кабелям, а детектирует ВЧ сигнал поступающий на его вход и подключает нужный фильтр. Применение такого устройства исключало бы ошибочное подключение ФНЧ другого диапазона. Это актуально при частой смене диапазонов, например во время соревнований. Усилитель с универсальным дешифратором диапазонов можно эксплуатировать на значительном расстоянии от трансивера. В полевых условиях тоже наблюдался бы несомненный положительный эффект. Усилитель с подобным устройством легко бы стыковался с любым трансивером, не задумываясь о шнурах, которых на столе и застолом порой бывает очень много.

Универсальный дешифратор, определяющий частоту (диапазон) ВЧ-сигнала, был разработан в 2011 году Марком DK4DDS в его проекте SDR One (http://www.qslnet.de/member/dk4dds/text_duits_engels/2010_dk4dds_sdr_proj ect.htm)Схему его дешифратора диапазонов можно посмотреть здесь (http://www.qslnet.de/member/dk4dds/pdf_files/automatic_band_decod er_for_sdr_one.pdf). Марк использует контроллер PIC16F84A, который уже снят с производства. Его устройство и было взято за основу.
В представленной конструкции применен распространенный PIC16F628A и введена индикация включенного диапазона, также с устройства формируется сигнал блокировки защиты по КСВ на время переключения необходимого ФНЧ.
В настоящее время дешифратор безошибочно определяет диапазон ВЧ-сигнала в CW и выдает сигнал коммутатору на подключение необходимого ФНЧ. Проблема возникла в определении частоты (диапазона) в режиме SSB. Пока не удалось Евгению UN7GCE реализовать устойчивый алгоритм детектирования диапазонов и в SSB происходит хаотичное переключение выходных ключей ФНЧ. Вот пример работы нашего устройства


http://youtu.be/FW3mI9wkWmY

Дешифратор Марка в SSB работает без сбоев, безошибочно подключает нужный ФНЧ. Демонстрацию работы его конструкции можно посмотреть здесь


https://www.youtube.com/watch?v=Nussqv720fU

В архиве выложены схема устройства, печатная плата, исходный текст программы и текущая прошивка. Нам нужна помощь людей владеющих программированием. А так же любая полезная информация, которая может натолкнуть на правильный путь в наших рассуждениях. Иначе придётся выкинуть проект в мусор.

D0ITC
29.04.2014, 14:30
Было подозрение что причина в схеме формирователя входного сигнала, я проверил работу дешифратора в режиме SSB с формирователем по схеме во вложении, но результат остался тот же.

RV3DLX
29.04.2014, 14:35
Сергей, здравствуй!
Как ты уже знаешь у меня работает подобное устройство, которое я приобрел на сайте ЕВ104, оно совершенно один к одному содрано у DK4DDS. Работает совершенно без сбоев во всех режимах. Вначале я умудрился поджечь ПИК-контроллер, но с твоей помощью нашел прошивку и сейчас все работает прекрасно. Так что думаю подправив прошивку, можно заставить работать это устройство. А так очень удобная вещь, тем более что в Вашей разработке добавлена еще и цифровая индикация диапазона. Думаю такое простое и полезное устройство будет востребованным радиолюбителями.
Успехов! Юрий.
P.S. Не нужно эту разработку выкидывать на свалку, нужно и возможно довести до рабочего состояния!

R9MW
29.04.2014, 14:37
Если переключать диапазоны , то и тюнер будет настраиваться на нагрузку , хоть автоматически , хоть в ручном режиме . Времени достаточно , чтобы автомату переключателю определиться с частотой несущей и выбрать нужные LC - цепи на входе PA , ну и на выходе конечно .

Кукин Николай Николаевич
29.04.2014, 16:55
Я в пиках разбираюсь слабо, но, Евгений, если посмотреть параметр №47 для таймера1 по даташиту, (42 для таймера0) то там звучит цифра порядка 60нс, то есть максимальная величина читаемой частоты с таким методом подсчета порядка 15 мгц. Для таймера0 при включенном предделителе это 10 нс – 100 мГц. Может здесь собака зарыта?

Попробовать включить предделитель хотя бы на 4. Вдруг получится?
Или по классике – подать как у немца на RA4, включить предделитель ТМР0 где-то на примерно 256?

Евгений240
29.04.2014, 17:09
Проблема возникла в определении частоты (диапазона) в режиме SSB.Сергей, скажу сразу, в програмировании я полный дуб. Но чисто логически понятно, что частота в режиме SSB гуляет в пределах плюс-минус 3 кГц. Следовательно надо учитывать только старшие разряды. Например ,начиная с сотен кГц.

Владимир_К
29.04.2014, 17:13
Нужна помощь радиолюбительского сообщества по доведению устройства до рабочего состояния. В настоящее время собран экспериментальный образец, фото которого ниже:

Чтобы не рыться в коде (во избежание излишней траты времени), первое, что бросается в глаза... Мне кажется надо как-то привязать начало отсчета с появлением SSB сигнала. Например, организовать что-то типа компаратора, который дает дает разрешение на счет только при достижении определенного уровня сигнала на входе. Учитывая малое время счета, можно предполагать, что за это время, сигнал не пропадет. Иначе, например, возможна такая ситуация - контроллер начал счет, а сигнала нет... Хотя такая же ситуация вполне может быть и в случае с CW, а там у Вас вроде все нормально.
Может я что-то не доглядел, и у Вас все так и сделано, тогда заранее извиняюсь... Все же, как мне кажется, определение частоты, и прочие задачи стандартны и хорошо отработаны, а то, что я тут накалякал выше, менее изученная проблема (опять же, может она для меня "менее изученная":smile:). Я бы копал в этом направлении.

Integral
29.04.2014, 17:18
частота в режиме SSB гуляет в пределах плюс-минус 3 кГц. Следовательно надо учитывать только старшие разряды. Например ,начиная с сотен кГц.
В текущей прошивке частотота округляется до 10кГц. При определении диапазона с точностью 100кГц получается еще хуже, такой вариант был опробован. Устройство не всегда точно определяло диапазон в режиме непрерывной несущей, в SSB тем более. Поэтому мы зашли в тупик.

Владимир_К
29.04.2014, 17:40
Устройство не всегда точно определяло диапазон в режиме непрерывной несущей, в SSB тем более. Поэтому мы зашли в тупик.
Где ошибка? В определении частоты? Или частоту определяет, но не распознает диапазон?
Чтобы проверить, в чем дело, я бы сделал так... В программку добавил код, чтобы программа делала следующее. Частота 1000 - 2000 кгц (это условно) - программа выдает единицу на одном выходе порта, частота 2000-3000, единица на втором выводе и т.д Это для тестирования, чтобы выяснить - правильно ли считает частотомер. Потом эту часть кода можно удалить (закомментировать). Если частотомер считает нормально для непрерывной несущей, тогда идем дальше. Пытаемся подавать SSB сигнал. Не хочет считать, пробуем то, что я писал в предыдущем посте....
Добились безошибочной работы этой части, двигаемся дальше. Распознает диапазон (опять же выводя информацию о диапазоне на определенный пин порта)? Работает нормально - тогда дальше, проверяем запись в 595 регистры...

DeXter Holland
29.04.2014, 18:32
округляется до 10кГц да тут можно и с округлением до мегагерца делать, не должно промахиваться..
На 28 МГц тоже промахивается ? Случайно не спрашивал немца, какой у него алгоритм счета? Возможно, надо ввести частоты 2 или 3 гармоник для неотфильтрованного сигнала? тут скорей всего надо просить Евгения, чтоб для отладки сделал режим частометра с отображением первых трех цифр, и смотреть, что оно считает .
во, еще вопрос - когда коммутируются реле - подгорать не будут при переходе с диапазона на диапазон?

RA3YBW
29.04.2014, 19:08
Я не знаю как у Евгения сделан алгоритм.Посколько SSB сигнал постоянно изменяеться. Я бы сделал проверку частоты в течении нескольких циклов(опросить АЦП например 10 раз ) .Если частота в течении этого времени не изменилась - значит частота являеться истиной.Что то подобное делаю в курсовой сыну.Нужно из нескольких сигналов выделить сигнал нужной длительности.

Tolya
29.04.2014, 19:12
Интересно а какую мощность можно или нужно подавать?

RK4CI
29.04.2014, 19:36
В текущей прошивке частотота округляется до 10кГц. При определении диапазона с точностью 100кГц получается еще хуже,
По моему, вы просто не с того входа ломитесь. Вы считаете количество импульсов за какое то определённое время. При этом, ни начало отсчёта, ни окончание, не привязаны к времени действия самого сигнала. Который может пропасть или появиться в любой момент времени. Самое простое, это перейти на определение времени действия импульса. Входную последовательность импульсов делим на 10, что бы увеличить точность отсчёта. И смотрим, сколько импульсов опорного генератора уложатся в данный промежуток времени. Может это организовывается и несколько по другому. Но в этом случае, даже несколько десятков импульсов, пришедших на вход дешифратора, позволят определить диапазон. И совершенно не важно, в какой момент времени появятся эти импульсы, в какой пропадут...

RV3DLX
29.04.2014, 20:10
У меня входная мощность изменяется от 0,5 до 15 Ватт, все срабатывает четко. Волнения по поводу подгорания контактов реле напрасны, т.к. выход усилителя блокируется на время переключения, у меня например снимается смещение с транзисторов выходного каскада.
Юрий.

Владимир_К
29.04.2014, 20:23
По моему, вы просто не с того входа ломитесь. Вы считаете количество импульсов за какое то определённое время. При этом, ни начало отсчёта, ни окончание, не привязаны к времени действия самого сигнала. Который может пропасть или появиться в любой момент времени.
Вот и я об этом выше писал..



Самое простое, это перейти на определение времени действия импульса. Входную последовательность импульсов делим на 10, что бы увеличить точность отсчёта. И смотрим, сколько импульсов опорного генератора уложатся в данный промежуток времени. Может это организовывается и несколько по другому. Но в этом случае, даже несколько десятков импульсов, пришедших на вход дешифратора, позволят определить диапазон.
Даже если и поделить входную частоту на 10, длительность импульса, особенно для верхних диапазонов будет слишком мала, чтобы ее мог обработать контроллер. При тактовой частоте 20 мгц, учитывая что некоторые команды выполняются за 4 такта, длительность импульса соизмерима с длительностью команды, а тут одной командой не обойтись.

RK4CI
29.04.2014, 21:08
Даже если и поделить входную частоту на 10, длительность импульса, особенно для верхних диапазонов будет слишком мала,
Так надо определиться с минимальным временем действия этого сформированного импульса, для обеспечения необходимой точности определения диапазонов. Особенно на ВЧ. Главное, не считать частоту, а определять время сформированного импульса. Ведь опорная частота присутствует постоянно, а появление и время действия входного сигнала, непредсказуемо

UR4UDT
29.04.2014, 21:19
При CW время, в течение которого существует сигнал несущей, составляет десятки миллисекунд (для точки). Ваш алгоритм позволяет «попасть» в этот интервал для измерения. При SSB время существования сигнала может быть сотни микросекунд.
Уже высказывалась мысль о синхронизации начала измерения частоты.
Вижу два способа решения проблемы: аппаратный и программный.
1.Измерять частоту остатка несущей (он существует всё время пока нажата педаль). Ограничить входной сигнал и усилить раз в тысячу.
2.Программный способ наверное проще.
Я бы сделал следующим образом.
1. Порт В6 сначала конфигурируем на прерывание по изменению состояния.
2. По прерыванию переконфигурируем на таймер (лучше с прескалером) и запускаем другой таймер для формирования измерительного интервала.
3.Для отладки выводить значение частоты на индикатор.
По времени вроде получается.

rv6hg
29.04.2014, 21:21
А вы подумали еще с проблемой если частота прд точная допустим 3600 кгц. а т.к. частотомер не синхронизирован с входным сигналом то точность измерения будет плюс - минус последний знак. т.е. 3599 или 3600 и будут щелкать релюшки нужного поддиапазона. Однако надо будет вводить гистерезис.

Владимир_К
29.04.2014, 22:54
Главное, не считать частоту, а определять время сформированного импульса. Ведь опорная частота присутствует постоянно, а появление и время действия входного сигнала, непредсказуемо
Если появление и время действия входного сигнала непредсказуемо, то как Вы сможете сформировать стабильный импульс, длительность которого потом будете измерять? А если даже и сформируете, то измерить длительность его сложнее (программно) чем просто определить частоту. Кроме того, Вы предлагаете делить, то есть усложняем аппаратную часть. Но это не нужно... На "борту" процессора есть несколько таймеров - счетчиков, работающих независимо от тактовой частоты, и работают они вплоть до частот 50-60 мгц. Достаточно открыть "ворота" для прохождения входных импульсов частоты сигнала на вход таймера, на определенное время, и, потом, просто прочитать содержимое таймера. Так работают частотомеры на PICах. Так там сложнее, там задействуют несколько таймеров, и предделитель, который так просто не "читается". Но нам не надо считать частоту с точностью до герц, достаточно до 10 кгц, например, или того больше - до 100 кгц. Для этого длительность счета должна быть 100 или даже 10 мксек. И если мы поступим следующим образом:
- проверяем есть ли сигнал на входе какого нибудь вывода порта (для этого сигнал детектируем, фильтруем, подаем на вход компаратора, с выхода компаратора на вход порта);
- когда на выходе компаратора появился сигнал, формируем измерительный интервал;
- считываем состояние счетчика. Даже для точки при CW будет обеспечено надежное измерение. Потом уже математика.. Если число в счетчике находится в интервале, к примеру от 100 до 120 - это диапазон 80 и т.д.
Иначе, если без синхронизации, я не знаю как. Сигнала нет, а процессор считает частоту.... Что он насчитает?

RK4CI
29.04.2014, 23:23
При SSB время существования сигнала может быть сотни микросекунд.
Длительность импульса опорного генератора определяется сотнями наносекунд. Так что и десятка микросекунд хватит для идентификации диапазона с достаточной точностью.

как Вы сможете сформировать стабильный импульс, длительность которого потом будете измерять?
Минимальное время действия посылки SSB сигнала составляет сотни микросекунд. Оно определяется максимальными частотами модулирующего НЧ сигнала. Стало быть в худшем случае на входе мы будем иметь посылку из сотен импульсов рабочей частоты. Посчитайте, сколько потребуется импульсов что бы заполнить все разряды частотомера который эти разряды подсчитывает. Сформировать же из этой последовательности импульсов несколько, время действия которых затем измеряется, труда не составит. Появился сигнал на входе, начался процесс формирования измеряемого импульса...

Кроме того, Вы предлагаете делить, то есть усложняем аппаратную часть.
А вы видели структурную схему обычного частотомера? И что из всего этого находится снаружи? Только кварц, определяющий частоту опорного генератора. Думаю, что точно так же будет и при измерении времени действия импульса. Всё это производится программно, внутри самого процессора...

Владимир_К
29.04.2014, 23:53
Минимальное время действия посылки SSB сигнала составляет сотни микросекунд. Оно определяется максимальными частотами модулирующего НЧ сигнала. Стало быть в худшем случае на входе мы будем иметь посылку из сотен импульсов рабочей частоты. Посчитайте, сколько потребуется импульсов что бы заполнить все разряды частотомера который эти разряды подсчитывает. Сформировать же из этой последовательности импульсов несколько, время действия которых затем измеряется, труда не составит. Появился сигнал на входе, начался процесс формирования измеряемого импульса...

Не совсем понял. Длительность какого импульса Вы собираетесь измерять. Что в качестве заполняющих импульсов? В общем, не понятно.



А вы видели структурную схему обычного частотомера?
Не только видел....
http://www.cqham.ru/forum/showthread.php?t=229 93
Пост №8.

RK4CI
30.04.2014, 00:42
Длительность какого импульса Вы собираетесь измерять.
Импульса, сформированного из последовательности импульсов на входе...


Что в качестве заполняющих импульсов?
Частота опорного генератора 20 мгГц. Думаю, измерять частоту входного сигнала, или время действия импульса, В современном процессоре дело выбора прошивки. Ну может ещё входы чуть по другому скоммутировать...


Не только видел.
Это пример построения частотомера именно с использованием процессора. Лет так двадцать назад всё это выглядело чуть по другому. Куча делителей, счётчиков, дешифраторов. Именно того, что на вашей схеме полностью отсутствует...

ur3ilf
30.04.2014, 01:20
Периоды, длительности, частота и прочее. Как будто ни кто не видел поведения частотамера при ssb сигнале. Мой древний на "ивках" при алле в микрофон устойчиво показывает мегагерцы-сотни-десятки килогерц. Зачем измерять частоту с большой точностью если достаточно только мегагерцы определить чтоб включить нужный ФНЧ? Тут же измеряется частота огибающей при ssb или при cw. Задача формирователя импульсного сигнала ограничить и передать в контроллер последовательность импульсов и отсечь НЧ составляющую. А дальше сравнение чего там на вход пришло и от этого включается нужный выход и т.д.

UT0UM
30.04.2014, 01:56
Периоды, длительности, частота и прочее

хлопотно как-то все это
САТ декодер значительно проще в реализации
да и надежнее...

... чтобы просто послушать придется что-ли сначала аллекать в микрофон при переходе с бенда на бенд?

ur3ilf
30.04.2014, 02:29
хлопотно как-то все это
САТ декодер значительно проще в реализации
да и надежнее...А если нет сat? Да и как реализовать кучу разных поддерживаемых протоколов в одном усилителе? Или вы про банд-декодер? Опять лишние провода и универсальность ограничивается.


... чтобы просто послушать придется что-ли сначала аллекать в микрофон при переходе с бенда на бенд?Интересно зачем аллёкать для того чтоб послушать? Для чего во внешнем усилителе оставлять фнч в тракте приёма если существует обход? Или П-контур тоже оставляют в тракте приёма в усилителе?
Был у меня амплифаер HLA300 и там это всё реализовано и ещё есть ручная переключалка. Хочешь автоматом фнч включиться, надо в ручную клювиком- крути на нужный диапазон. И ни каких проблем с работой нет. Включил не тот диапазон и усилитель уйдёт в защиту при не соответствии.Да ещё и противным писком известит об этом.
Надо в составе усилителя это делать. Чтоб контакты реле не подгорали сделать задержку. Хотя бы подачу смещения не транзисторы и ограничив таким образом усиление. Потом уже проверять только установленный флаг что частота находится в нужном интервале частот и ни чего не делать пока она не изменится. Хотя смотря какая моща на выходе и какие реле. В принципе ни чего особо сложного нет за исключением свободного времени:ржач:

UT0UM
30.04.2014, 02:45
Интересно зачем аллёкать для того чтоб послушать?

А что антенны по бендам предлагается руками переключать?
Так зачем тогда весь этот огород?
Включил руками нужную антенну и заодно нужный ФНЧ включился на передачу

UN7GCE
30.04.2014, 05:22
Прежде всего прошу прощения, что затянул с ответами.
Вчера был Род. День, было не до писанины.

…хлопотно как-то все это, САТ декодер значительно проще в реализации, да и надежнее...
Это первое, что мне пришло в голову, когда Сергей UT0IS предложил мне написать программу для данного декодера.
Но раз такое ТЗ, то пишем под него.
Итак, что мы имеем. А имеем не синхронизированные импульсы с амплитудно-частотным заполнением.
Задача определить частоту заполнения с точность до 100 кГц.
Насколько я понимаю, амплитудную составляющую можно убрать добавочным усилением и отсечкой по уровню.
Остается частотная составляющая. При точности в 100 кГц и частотной девиации 6 кГц это не составляет труда.
В чем же тогда проблема? Телеграфный сигнал имеет передний и задний фронт. Считаем по переднему.
Вопрос – сколько времени занимают переходные процессы переднего фронта? На этот период ставим задержку счета.
Сколько времени занимает передний фронт SSB сигнала? На этот период ставим задержку счета.
Сам счет занимает 100 uSec. При времени машинного такта 500 nSec. Пока я остановился на подборе этой задержки, сколько это нужно ставить я не в курсе, в книгах не нашёл.
Это первый вариант алгоритма данного устройства.
Следующий я ещё не пробовал, но на праздники постараюсь сделать. Суть его такова. Делаем 4 (10) измерений и за правильное значение берем самое большое. Так как при тестовых испытаниях ни разу не было переключения на верхний бенд.
PS Я бы изменил схему формирования запирающего импульса для АРУ РА по прилагаемой схеме.
Заодно вопрос ко всем – сколько по времени должен длиться данный импульс? 200 mSec хватит? Или это много?

RV3DLX
30.04.2014, 07:42
Хочу рассказать мои наблюдения, как работает это устройство, может быть это помежет в разработке программы. Когда я получил готовую плату, естественным желанием было проверить ее работу на столе. Нет ничего проще, источник питания, генератор сигналов и несколько светодиодов на выходном разъеме для наблюдения за работой. Подключил питание, подал ВЧ сигнал на вход и увидел, что на плате загорелся красный светодиод, который говорит о том, что амплитуда на входе достаточная и идет измерение входной частоты. Начал изменять частоту генератора во всем диапазоне и не увидел никаких изменений на выходе, хотя красный светодиод всегда горит. Подумал, что устройство неисправно и уже хотел писать рекламацию производителям. Но потом случайно выключил генератор и снова его включил и диапазон переключился. Оказалось, что алгоритм работы такой, при появлении ВЧ сигнала на входе делается измерение (или несколько) частоты, переключается состояние выходного регистра, при этом кратковременно вспыхивает зеленый светодиод на плате. Этот сигнал можно использовать для блокировки усилителя на момент переключения. Если ВЧ сигнал пропадает, а потом появляется с этой же частотой, то уже зеленый светодиод не мигает. При работе в SSB видно, что красный светодиод гаснет в паузах, а выходное состояние регистра не изменяется и только стоит перейти на другой диапазон, сразу происходит изменение состояния регистра. Так что никакой остаток несущей там не измеряется (да этого остатка несущей в моем трансивере нет в принципе). Опасения, что при каждом переключении диапазона нужно как то специально "алекнуть" в микрофон совершенно напрасны, нужно просто начать передачу и все переключится. Были замечания, что нужно все равно вручную переключать антенны, а что мешает к этому устройству подключить реле переключающие антенны?
Юрий.
P.S. Для Евгения, не понятно, для чего у Вас на выходе сигнала блокировки поставлена интегрирующая емкость довольно большая? Она будет затягивать передний фронт этого сигнала, а этот сигнал как раз должен появится как можно быстрее, что бы заблокировать усилитель на время пока будут переключаться реле. Мне кажется, что на этой плате нужно сделать просто выход этого сигнала с процессора, а дальше пользователь сам доделает узел блокировки, ведь усилители у всех разные, и ламповые и транзисторные, поэтому будет изменяться и полярность сиггнала и время удержания этой блокировки, в зависимости от конкретного усилителя. Я конечно не знаю, Вы формируете длительнсть этого сигнала програмно, или просто выдаете короткий импульс. Если просто импульс короткий выходит, то имеет смысл добавить на плату одновибратор на простой логической микросхеме, у которого будут выходы обеих полярностей, а длительность выходного импульса легко изменить подбором одного конденсатора или резистора. Усложнение небольшое, но более универсальное. Ну это мое личное мнение.

Integral
30.04.2014, 08:02
Были замечания, что нужно все равно вручную переключать антенны, а что мешает к этому устройству подключить реле переключающие антенны?

Юра, совешенно с тобой согласен.


... чтобы просто послушать придется что-ли сначала аллекать в микрофон при переходе с бенда на бенд?

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

RA3YBW
30.04.2014, 08:06
Предложение для авторов этого устройства.Если применить индикацию не в метрах , а в мегагерцах (1.8)(3.5)(14.) и т.д. То отпадает необходимость в 3 разряде индикатора.А на освободившемся сдвиговом регистре сделать выход по протоколу BCD фирмы YAESU. И тогда этот декодер отлично состыкуеться с Блоком контроля и управления ламповым усилителем версии 4.0

UN7GCE
30.04.2014, 08:59
Для Евгения, не понятно, для чего у Вас на выходе сигнала блокировки поставлена интегрирующая емкость довольно большая?Верно, Юрий!
Я в 27 сообщении выложил измененную схему, где R3, C7 вообще можно ликвидировать. Они должны стоять в РА. Импульс формируется программно. Как закажете - так и будет.
Насчет алгоритма работы программы.
В принципе всё именно так и работает.
Если нет сигнала, то счетчик крутится сам в себе. Каждые 100 uSec делает измерения. Я ошибся выше, написав, что измерения идут до 100 кГц. Измеряется с точностью до 10 кГц. Если при измерении буфер счетчика пустой, то никаких других действий не производится. Просто крутится сам в себе.
Появился сигнал. Буфер заполнился (у DK4DDS загорается диод). В моей программе буфер частоты заполняется только десятым измерением и поднимается флаг заполнения буфера. Далее запускаются подпрограммы сравнения, дешифрации. Если код бенда не совпал с ранее записанным, запускается формирование импульса блокировки РА и меняется код на выходе. Уходим в начало.
Измерение частоты продолжается, буфер частоты не пустой, (горит диод у DK4DDS), но флаг стоит.
Никаких действий не производится. Уходим в начало.
Появилась пауза. Флаг буфера сбрасывается (гасится диод). Измерение частоты продолжаться, но буфер частоты пуст. Ничего нет делается. Возврат в начало. Кольцо.
Вот и весь алгоритм. Довольно простой и несложный.
Мне кажется, что тут нужно организовать задержку перед первым измерением. Теорию подогнать не могу – не знаю. Остаётся подобрать эмпирическим путём. Вот и маемся :-)

Владимир_К
30.04.2014, 09:21
Считаем по переднему.
Вопрос – сколько времени занимают переходные процессы переднего фронта? На этот период ставим задержку счета.
Сколько времени занимает передний фронт SSB сигнала? На этот период ставим задержку счета.
Сам счет занимает 100 uSec.
Мне кажется, было бы проще завести еще один сигнал на свободный порт процессора, тем более он у Вас есть на разъеме (RB7), не надо ковырять плату. Сигнал взять с датчика потребляемого тока УМ или с выхода КСВ-метра. Измерение надо начинать тогда, когда этот сигнал появился после паузы. Подробнее. Проверяем состояние порта RB7. Есть сигнал - уходим, проверяем снова и, так до тех пор пока не обнаружим паузу. После чего ждем появление сигнала и уже тогда начинаем измерение частоты. Выше RV3DLX, как раз и описал такой алгоритм.

UN7GCE
30.04.2014, 09:26
Есть сигнал - уходим, проверяем снова и, так до тех пор пока не обнаружим паузу.
Владимир, пауза определяется очень легко!
Если буфер частоты пуст, то флаг Z=1
movf Freq,F
btfss STATUS,Z
goto n1
goto n2

Владимир_К
30.04.2014, 09:28
Если нет сигнала, то счетчик крутится сам в себе. Каждые 100 uSec делает измерения. Я ошибся выше, написав, что измерения идут до 100 кГц. Измеряется с точностью до 10 кГц. Если при измерении буфер счетчика пустой, то никаких других действий не производится. Просто крутится сам в себе.
Появился сигнал. Буфер заполнился (у DK4DDS загорается диод). В моей программе буфер частоты заполняется только десятым измерением и поднимается флаг заполнения буфера. Далее запускаются подпрограммы сравнения, дешифрации. Если код бенда не совпал с ранее записанным, запускается формирование импульса блокировки РА и меняется код на выходе. Уходим в начало.
Измерение частоты продолжается, буфер частоты не пустой, (горит диод у DK4DDS), но флаг стоит.
Никаких действий не производится. Уходим в начало.
Появилась пауза. Флаг буфера сбрасывается (гасится диод).
Не нравится мне такой алгоритм... Почему? Допустим у Вас пауза - но счетчик крутится. Во время когда он крутится (например посредине цикла счета) появился сигнал. В буфере появится число. Но оно не соответствует истинному, так как начало счета наступило раньше чем появился сигнал. Поэтому все же обратите внимание, что я написал выше.

UN7GCE
30.04.2014, 09:50
Не нравится мне такой алгоритм... Почему? Допустим у Вас пауза - но счетчик крутится. Во время когда он крутится (например посредине цикла счета) появился сигнал. В буфере появится число. Но оно не соответствует истинному, так как начало счета наступило раньше чем появился сигнал.
Разбираем этот случай. Пауза, крутится счетчик. Флаг частоты = 0. Появился сигнал. Я в буфер частоты пишу четвертое , или десятое измерение. Что тут плохого? По времени десятое измерение это всего 1 mSec

RV3DLX
30.04.2014, 10:14
Владимир, ну зачем так усложнять, не нужно никакой обратной связи по току или по КСВ, все и без этого работает. Анализироваться должен только входной сигнал. Ну и мне кажется не нужен измеритель периода или длительности импульсов, нужен элементарный частотомер, когда известный временной интервал должен заполнятся входными импульсами, поскольку точность измерения здесь не нужна, время измерения может быть очень маленьким, поэтому если делать даже несколько измерений, то это время будет практически незаметно.
Юрий.

Владимир_К
30.04.2014, 10:40
Разбираем этот случай. Пауза, крутится счетчик. Флаг частоты = 0. Появился сигнал. Я в буфер частоты пишу четвертое , или десятое измерение. Что тут плохого? По времени десятое измерение это всего 1 mSec
Да, извините, не обратил внимание, что Вы не первый цикл берете во внимание... Вроде бы все правильно. Остается только предположить следующее. Не фиксирует ли девайс просто переходной процесс (например - щелчок при включении на передачу, когда "алекать" еще не начали). Но у Вас фактически есть задержка, так как Вы берете не первое измерение, так что пока тупик...
В общем не в качестве совета, а просто мысли... Я бы делал так, как писал выше, но после фиксации появления сигнала, ввести задержку (на время переходного процесса), еще раз проверить наличие сигнала путем опроса 8 пина порта, и потом начать измерение. Это я не к тому, что так лучше, просто мне так кажется удобней (возможно просто дело вкуса).
Основной цикл программы это постоянная проверка наличия перехода от паузы к сигналу и потом переход на подпрограмму измерения. Потом опять возврат к основному циклу. Счетчик постоянно не работает. Но, опять же, просто мне так кажется проще.

Integral
30.04.2014, 10:46
Следующий я ещё не пробовал, но на праздники постараюсь сделать. Суть его такова. Делаем 4 (10) измерений и за правильное значение берем самое большое.
Этот вариант действительно нужно опробовать. Ложные срабатывания в SSB происходят только ниже включенного диапазона. Это видно по видео, которое мы выложили в начале темы. Здесь нужно практически определить оптимальное количество выборок (измерений).

Добавлено через 6 минут(ы):


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

UN7GCE
30.04.2014, 11:03
Этот вариант действительно нужно опробовать. Ложные срабатывания в SSB происходят только ниже включенного диапазона. Это видно по видео, которое мы выложили в начале темы. Здесь нужно практически определить оптимальное количество выборок (измерений).
Мне ещё не приходилось заниматься сортировкой на ПИКе, начнем с двух значений, затем на четыре... Может поймаем мышку.

Действительно, при кратковременном нажатии кнопки тангенты происходит правильное включение нужного диапазона. Причем это происходит на всех диапазонах.Вот этот момент мне, честно говоря, до сих пор не понятен. Что значит при нажатии на тангенту? Срабатывает на остаток несущей? Или это фон с микрофона? В чисто телеграфном режиме тоже так?

Integral
30.04.2014, 11:15
Что значит при нажатии на тангенту? Срабатывает на остаток несущей? Или это фон с микрофона? В чисто телеграфном режиме тоже так?
Если перещелкнуть тангентой в SSB на любом диапазоне или просто перейти на передачу, но ничего в микрофон не говорить, дешифратор правильно определяет диапазон. Дальнейший разговор в тангенту приводит к случайному определению диапазона, находящегося ниже рабочего.
А вот правильное определение диапазона происходит по остатку несущей или по короткому всплеску пока не ясно, мы еще не выясняли. Да и наврядли узнаем, слишком быстро это происходит. Замерить нечем, разве что С1-94.

UN7GCE
30.04.2014, 11:33
Я вот этот момент просто не понимаю. По идее тут должен быть всплеск, не остаток несущей. Хотя...
Сергей, попробуй все таки посмотреть осциллографом на форму выходного сигнала.
Если в С1-94 есть ждущий режим, то можно увидеть форму этого всплеска при переходе с бенда на бенд.
Если всплеск есть, то можно замерить его длительность. Ну и наличия (отсутствия несущей).
PS Глянул на характеристики С1-94. Всё ОК, всё можно померить.

UR4UDT
30.04.2014, 11:39
Динамический диапазон речи около 40 дБ. При пиковой выходной мощности 1 Вт амплитуда огибающей меняется от 0,1 до 10 В. На вход контроллера нужно подавать 4 В пик-пик. Значит - при разговоре может возникнуть ситуация, когда достаточная для измерений амплитуда сигнала существует в течение 100...150 мкс. Поскольку измерение частоты проходит асинхронно, то часть активных импульсов может попасть в разные интервалы счета. При этом значение частоты будет искажено.
При телеграфной посылке (щелчке тангенты) амплитуда огибающей всегда максимальна и время для измерения составляет десятки миллисекунд.
Я уже писал об этом. Я думаю, что поможет только синхронизация начала измерения и правильный выбор усилителя-формирователя.

Владимир_К
30.04.2014, 12:03
Предлагаю еще один вариант. Точнее он не другой, а тот же, что я все время предлагал раньше, с не большим усовершенствованием. В процессе счета необходимо постоянно контролировать наличие сигнала на выводе порта RB7. Если в процессе контроля проц. не фиксировал провалы в сигнале, результаты подсчета в данном цикле принимаем за истинные. Если были провалы - обнуляем, опять контролируем сигнал. Если он есть - включаем счетчик и продолжаем контролировать наличие сигнала. То есть, в даном алгоритме не нужно синхронизировать начало счета с фронтом. Достаточно проверить наличие сигнала, включить счетчик и перейти на подпрограмму контроля наличия сигнала. Причем, тут одна тонкость - сама эта подпрограмма(точнее ее продолжительность) должна выполняться в течение 100 мксек. Если она выполнена до конца (сигнал все время был стабильным) значит можно быть уверенным, что записанное число в счетчик истинное.
Итак подробнее. В какой нибудь регистр записываем константу времени счета. Переходим на подпрограмму проверки наличия сигнала. Сигнал есть, декрементируем константу, сравниваем с нулем, если не ноль, опять проверяем наличие сигнала, опять декремент и т.д. Если сигнала нет, опять в начало и т.д.
Тут тоже есть нюанс... Мы имеем дело с кратковременными процессами. При пропадании сигнала на выходе УМ, на входе процессора он вполне может быть (сохраниться на емкостях монтажа). Поэтому, возможно, перед каждой проверкой его наличия, желательно записать в порт ноль (разрядить емкость) или к порту подключить резистор малого номинала, чтобы постоянная времени цепи была достаточно малой.

RV3DLX
30.04.2014, 12:10
Когда нажимаешь на кнопку тангенты, естественно появляется всплеск выходного сигнала, это можно слышать в эфире. У меня используется педаль, поэтому щелчка нет, остатка несущей тоже нет, поэтому если я после смены диапазона нажимаю на педаль, в комнате тихо и я молчу, то никакого переключения не происходит, стоит начать говорить в микрофон, как тут же включается нужный диапазон, и уже ничего не сбивается, хотя и есть паузы в речи, это видно по вспышкам красного светодиода на плате. В процессе проведения QSO естественно переходишь на прием, пауза получается длинной и при следующем переходе на передачу включенный диапазон сохраняется, причем нового поиска частоты не происходит, это видно по тому, что не вспыхивает зеленый светодиод, который вспыхивает при переходе в другой частотный сегмент. Может быть нужно обратится к автору прототипа этого устройства и попросить текст программы, если он без проблем дает файл прошивки, может быть и в этом не откажет.
Юрий.

Владимир_К
30.04.2014, 12:26
В процессе проведения QSO естественно переходишь на прием, пауза получается длинной и при следующем переходе на передачу включенный диапазон сохраняется, причем нового поиска частоты не происходит, это видно по тому, что не вспыхивает зеленый светодиод, который вспыхивает при переходе в другой частотный сегмент.
Ну вот так примерно и будет, если сделать так как я написал выше. Во время паузы ничего измерять не будет. Включим на передачу, произойдет цикл измерения. Если число в буфере не изменилось, никакого переключения не надо. Единственное, что я хочу задействовать еще одну линию, на второй вывод порта. У Вас ее нет. Но особого усложнения нет. Резистор в цепи питания и ключ на одном транзисторе. На плате в первом посту разъем второго вывода порта имеется.

UR4UDT
30.04.2014, 12:36
Владимир_К
Это будет самый надежный вариант, но нужен пиковый детектор с ФНЧ на частоту среза 0,5-1 МГц.

Integral
30.04.2014, 12:42
Может быть нужно обратится к автору прототипа этого устройства и попросить текст программы...
Было бы не плохо, т.к. алгоритм определения диапазонов у него работает безупречно.

Владимир_К
30.04.2014, 12:51
Владимир_К
Это будет самый надежный вариант, но нужен пиковый детектор с ФНЧ на частоту среза 0,5-1 МГц.
Ну я это так примерно представляю - ключ на транзисторе, без смещения на базе, сигнал с измерительного резистора на базу. Транзистор он же детектор. На выходе фильтр, так как Вы и предлагаете.
Тут же что хорошо... Во время измерения мы все время контролируем сигнал. И если он пропадает хоть на время, прерываем измерение и ждем более благоприятных условий.

Integral
30.04.2014, 12:58
Владимир_К
Ваш вариант понятен. Но у Марка никаких аналоговых детекторов нет и все работает. По сути вход процессора одновременно является и детектором и счетным входом.

Кукин Николай Николаевич
30.04.2014, 13:05
Евгений, так, как пиковский асм я читаю с трудом, то немного переписал логику Вашего текста на си. Логика главного цикла получилась следующая:

(имена переменных и точки оставил в Вашей транскрибции)
PP1()
{
if ((flag ==0)&&(Freq==0)) Cycle_ON();}
}
PP_2()
{
if (flag != 0)
{
//F_2:
Cycle_ON();
if (Freq==0) {flag=0;}
}
else
{
if(Freq!=0)
{
//F_2a:
for(i=4;i!=0;i--){Cycle_ON();}
flag++;
CMP_10();
Compare();
}
}//else
}

Видно, что с момента появления значения счетчика частоты , отличного от 0, дешифруется пятый(одинадцатый), а не четвертый (десятый) отсчет. И по этому значению уже там дальше включаются нужные реле.
Предлагаю несколько изменить алгоритм работы устройства, что позволит снять, допустим такую проблему, как переключение фильтров под полным вч напряжением.
В главном цикле ничего не считается, а только проверяется наличие лог.1 на входе счетчика(RB6).
После появления 1 на RB6 включается счетчик, который через интервалы времени, допустим 1 мсек, считает частоту, а полученные значения записываются последовательно в кольцевой буфер, например на 16 отсчетов, что займет 32 байта оперативки, там еще есть место. И пусть это происходит непрерывно, пока на RB6 есть логическая 1, то есть сигнал. Думаю, что 100 пф входного делителя хватит для создания нужного потенциала. Если нет, то можно организовать детектирование сигнала на любую ногу, а там либо проверка, либо по прерыванию по изменению уровня, непринципиально. Хотя должно работать и так, потому, что у автора задействована только одна нога, и усё работает.
Поиск максимального значения частоты из кольцевого буфера и выявление необходимости переключения реле производить только после пропадания сигнала, то есть в паузе.
Что при этом избегаем?
- Переключение реле под вч.
- Частота измеряется на заднем фронте в промежутке порядка 16-30 мсек, в зависимости от того, какя будет пауза между взятием отсчетов.
- Уходим от переходного процесса на переднем фронте.
- Длительность тлг фронтов для колокола порядка 6-8мсек., а ССБ - порядка тоже несколько мсек, то есть неверный результат будет отброшен автоматом после выявления максимума в кольцевом буфере.
- Для переключения фильтров достаточно одной тлг точки или один раз крякнуть в микрофон.

И еще раз, по даташиту таймер1 гарантированно способен считать импульсы с периодом не менее 60 нсек, что соответствует максимальной измеряемой частоте15 мГц. Включайте предделитель, хотя бы на 4.

С уважением, Николай.

UR4UDT
30.04.2014, 14:43
Поскольку в прототипе использован только один вход А4, то все же думаю, что использована синхронизация начала счета.
Алгоритм мог быть таким. После включения питания регистрам MEMO1:=0 и MEMO2:=0. Переходим к п.1.
1. В TMR0 записываем 0xFFFF (можно подобрать другое число), прескалер 256.
2. Когда входной сигнал начинает расти, то при достижении определенного уровня начинается счет. Через 256 импульсов входной частоты возникает прерывание по переполнению таймера. Предполагаем, что это фронт огибающей сигнала.
3. Включаем измерение частоты на 100 мкс. Запоминаем значение частоты в регистрах MEMO2.
4. Продолжаем счет по кольцу до нескольких пустых значений частоты - выявление паузы.
5. Если MEMO1 и МЕМО2 не равны (частота изменилась), то блокируем передатчик на 30-70 мс для переключения реле и вывода на индикаторы. МЕМО1:=МЕМО2 (запоминаем текущую частоту).
6. Задержка 0,5-1,0 с. Чаще диапазоны переключатся не будут.
7. Продолжаем счет по кольцу до нескольких пустых значений частоты - выявление паузы. Если пауза возвращаемся к п.1.
Таким образом, частота измеряется только на фронтах огибающей после паузы.
Уровень входного сигнала нужно установить таким, чтобы переключение диапазонов происходило при самых тихих звуках.

UN7GCE
01.05.2014, 06:49
2. Когда входной сигнал начинает расти, то при достижении определенного уровня начинается счет.Такое построение сразу предполагает наличие порогового устройства (компаратор, триггер Шмидта), чего нет в наличии.

… Предлагаю несколько изменить алгоритм работы устройства, что позволит снять, допустим такую проблему, как переключение фильтров под полным вч напряжением.Николай, на ноге RA4 формируется запирающий импульс для РА, так что эта проблема уже решена.

…по даташиту таймер1 гарантированно способен считать импульсы с периодом не менее 60 нсек, что соответствует максимальной измеряемой частоте15 мГц. Включайте предделитель, хотя бы на 4.Верно написано в даташите. Но когда то советские МС 155 серии вместо 10 МГц по паспорту работали до 20 МГц. Так и у ПИК’а может в тактовом генераторе работать кварц на 25 МГц и таймер TMR1 по входу RB6 считать до 70 МГц без всяких пределителей. Проверено опытом и не только мной.
Я попытался дизассемблировать прошивку DK4DDS. Сразу видно, что исходник был написан на С. Очень много метаний по коду и есть пустые закольцовки. Трудно читать, это не дизассемблер прошивки написанной на асме. Там как на ладони все лежит. Счет начинается с пределителя на 255, затем работает TMR0. Время счёта TMR0 - 150 uSec. Результат вычитается из 0х11. Если есть заём, то буфер очищается. Если нет, то далее идет обработка. Более тонко я разобрать не смог, как уже писал там много метаний. Но это не суть.
При разборе этого кода у меня появился такой вопрос. При отсутствия сигнала на ноге RB6 высокий потенциал. А при сигнале он ведь должен упасть? Если это так, то в паузе можно опрашивать эту ногу и взять этот момент за стартовый для таймера.

UR4UDT
01.05.2014, 09:51
Такое построение сразу предполагает наличие порогового устройства (компаратор, триггер Шмидта), чего нет в наличии.
Ошибаетесь. Когда вход контроллера сконфигурирован как вход таймера, то включен вариант триггера Шмитта.
См. даташит PIC16F628A: FIGURE 5-14: BLOCK DIAGRAM OF RB6/T1OSO/T1CKI PIN и TABLE 5-3: PORTB FUNCTIONS.

UN7GCE
01.05.2014, 10:01
Речь идёт о пороговом устройстве, а не о счетном триггере, где первый каскад ТШ.

UR4UDT
01.05.2014, 10:03
Триггер Шмитта и есть пороговое устройство.

UN7GCE
01.05.2014, 10:12
Мне это известно.

UR4UDT
01.05.2014, 10:32
Возможно в режиме SSB просто не хватает уровня сигнала при слабых звуках перед микрофоном.
Согласно таблицы 17.4 даташит уровни на входе ТШ должны быть меньше 0,5 В (переключение в "0") и 4,5 В (переключение в "1").
Если это не обеспечивается, то будут пропуски импульсов и хаотическое переключение диапазонов.
В CW ведь срабатывает надежно.

D0ITC
01.05.2014, 10:33
При отсутствия сигнала на ноге RB6 высокий потенциал. А при сигнале он ведь должен упасть?
Нет, так не получается, без сигнала на RB6 1,8в, а при сигнале 2,2в.

Integral
01.05.2014, 10:38
О триггерах. Вот картинки по портам RA4 PIC16F84 и RB6 PIC16F628

171849 171850

В даташитах еще и уровни расписаны. На PIC16F84 вход очень чувствительный, через емкость 15р приходилось очень маленький уровень давать. Но в итоге ПИК здох, по всей видимости дали большой уровень. В 628-м имеется внутренний ограничитель на диодах.

Возможно в режиме SSB просто не хватает уровня
Еще и как хватает, сигнал ограничивается диодами, смотрели осциллографом.

UR4UDT
01.05.2014, 10:52
Если случайное переключение диапазонов происходит только вниз - точно пропускает импульсы. Осциллографом это увидеть не возможно.
Попробуйте щелкать пальцем по микрофону. Все должно быть нормально.

D0ITC
01.05.2014, 11:16
Попробуйте щелкать пальцем по микрофону. Все должно быть нормально.
Нет, теже переключения диапазонов.

RA1AGB
01.05.2014, 11:43
Смотрим как это сделано в BLA-350 http://www.rmitaly.com/download/manuals/Manuale%20tecnico%20 BLA350%20rel%201.11. pdf
Задействовано 2 вывода PIC. Подозреваю, что используется гейтование.
Павел

UR4UDT
01.05.2014, 13:37
Провел лаб.работу с вашим кодом.
1. CW - работает отлично.
2. SSB - вместо микрофона сигнал пилообразной формы (нарастает передний фронт и резкий спад заднего). Работает отлично.
3. SSB - вместо микрофона сигнал треугольной формы. Случайные броски диапазона вниз.
4. Максимальная определяемая частота без прескалера 17 МГц.
Результат предсказуемый.
Выводы делайте сами.
Свой вариант я предлагал.

UN7GCE
01.05.2014, 15:57
Провел лаб.работу с вашим кодом...Валерий, большое спасибо! Честно говоря, просто не ожидал, что появится помощник на форуме.Тогда с Вами поведу разговор серьезней. По поводу ТШ. Я имел ввиду, что регистр таймера TMR1 имеет бит включения и выключения под названием TMR1ON (TMR1OFF). И что он включается программно, а не молотит постоянно, как это делает таймер TMR0. Поэтому из вне таймер просто не включишь.
Теперь по поводу Вашей лаб работы. Ещё раз спасибо! И есть у меня такое замечание. Дело в том, что пределитель у TMR1 включен всегда постоянно. Но имеет разные коэффициенты деления. Чтобы выявить истину, я сейчас переделал коэффициент деления на 1:2 и изменил время счета. Т.е. осталось все по старому.
Сейчас Александр US2IT проверит мою прошивку и скажет результат. Если бы счет был бы только до 17 МГц, то как работает CW?

UR4UDT
01.05.2014, 16:59
Без предделителя имелось ввиду - 1:1. Хотя фактически внутри ИМС включен обход трех триггеров.
До каких частот тестировали в CW?
Я использовал для лаб.работы PIC16F819. В сущности то же самое, но больше периферийных модулей.

Integral
01.05.2014, 17:04
До каких частот тестировали в CW?
До 30МГц, точнее 29.6

D0ITC
01.05.2014, 17:24
Сейчас с Евгением занимались выяснением оптимальных значений количества измерений и задержки счёта. Количество измерений оптимально 10-12, а задержки проверили различные, в том числе и максимально возможную- в телеграфе всё работает стабильно, без сбоев. А вот в SSB заметил, что с повышением входного уровня работа становится стабильнее. А на 20-ти метрах на максимальной мощности(примерно 45Вт)так и вовсе работает идеально. На других диапазонах что выше, что ниже 20-ти метров проявляются сбои(переключения на нижние диапазоны).

UN7GCE
01.05.2014, 17:27
Александр забыл указать, что работа таймера с прескалером 1:1 или 1:2 абсолютно одинакова.

UR4UDT
01.05.2014, 18:09
А на 20-ти метрах на максимальной мощности(примерно 45Вт)так и вовсе работает идеально.
Может быть нужно пристальнее посмотреть на формирователь перед RB6?
Или остаток несущей больше на этом диапазоне.

Integral
01.05.2014, 21:12
Демонстрация работы дешифратора в SSB, версия прошивки 10.00


http://youtu.be/w7NPTq0LxN4

Виден прогресс работы дешифратора, ложных срабатываний уже меньше. Нужно двигаться в этом направлении дальше. Какие изменения были произведены в прошивке мне не известно, Евгений UN7GCE расскажет детально.

Integral
12.05.2014, 13:57
Проведена большая работа по доработке управляющей программы дешифратора, Евгением UN7GCE внедрен свой алгоритм определения частоты и диапазона. Большая благодарность Кукину Николаю за помощь. Устройству можно дать статус бета версии, продолжаем тестировать.


https://www.youtube.com/watch?v=icGOMBGjKCQ

Кроме этого сделали версию дешифратора на 9 диапазонов, но практически еще не проверяли. Схема и плата устройства в приложении.

172514

D0ITC
12.05.2014, 15:21
Во вложении биты конфигурации.

Integral
09.06.2014, 10:56
Сегодня протестировали версию прошивки 12_02w универсального дешифратора диапазонов в реальной конструкции усилителя мощности, собранного на транзисторах RD100. ФНЧ в усилителе мощности применен готовый от "Аверс". Ошибок в определении диапазонов дешифратором не увидели. Поэтому версию прошивки можно считать финальной и проект завершенным. Осталось доделать версию прошивки для 9-ти диапазонного варианта на 74LS145.


http://youtu.be/lRBbI8V-rgQ

UN7GCE
09.06.2014, 17:57
На видео видно, и слышно, что дешифратор успевает сработать не от звуков голоса, а от звука (щелчка) тангенты.
А вообще, красивая техника работает у US2IT.
Для любознательных выкладываю исходник этого девайса (ассемблер).
Коменты постарался расставить по более.

D0ITC
09.06.2014, 18:32
Евгений UN7GCE сделал прошивку и для версии дешифратора на 9 диапазонов, выкладываю всё в одном архиве.

D0ITC
10.06.2014, 21:44
Промахнулся с прошивкой и в архив поместил не самую последнюю, вот выкладываю

RN3ZOB
12.11.2014, 14:11
186508186509US2IT,Чт о за биты конфигурации? Нет у меня такого в WinPic. Сегодня прошил, практически готов, нет только 74LS145, да и красный индикатор нет желания ставить, а другого пока нет.

RT1O
12.11.2014, 15:40
Немного вставлю свои пять копеек. Также сталкнулся с проблемой определения частоты в SSB режиме, чуть руки не опустились. И пробовал детектор уровня и формирователь на компараторе и всякие программные извраты. Чуть дырку не протер взглядом на осциллографе. А ларчик открылся просто(ну почти). Нужен качественный формирователь на дифференциальном усилителе с хорошим усилением. Вот и все. После сбора схемы на дифф. усилителе с усилением около 100 проблема решилась. Время измерения 10мкс.

UN7GCE
12.11.2014, 15:41
Что за биты конфигурации? Нет у меня такого в WinPic.Геннадий, в отличие от AVR'ов, в прошивке для ПИКов биты уже сидят внутри. Поэтому нет никакой необходимости думать об этих битах конфигурации.

RN3ZOB
12.11.2014, 15:54
Да Евгений я в курсе, просто выше они были выложены. Работал только WinPic-ом, подумал, что другие программы их корректируют.

Integral
12.11.2014, 16:08
Что за биты конфигурации?
В последнем архиве US2IT скриншот:

186521
RN3ZOB Дешифратор на 9 диапазонов нами в железе не проверялся. Ждем ваших результатов.

Добавлено через 10 минут(ы):


Также сталкнулся с проблемой определения частоты в SSB режиме, чуть руки не опустились... Нужен качественный формирователь на дифференциальном усилителе с хорошим усилением. Вот и все.
PIC16F628A имеет внутри свой формирователь. Наша практика показала, что внешний формирователь оказался лишним.

RT1O
12.11.2014, 16:12
Я за PIC не скажу, делал на AVR с отдельными счетчиками, только выборку по времени делаю. Но попробуйте поговорить шепотом в гарнитуру и без явного громкого щелчка гарнитуры, как эксперимент.

Вот Валерий UR4UDT мне кажется правильно высказал мысль "Динамический диапазон речи около 40 дБ." и далее по сообщению.

UN7GCE
12.11.2014, 16:23
Но попробуйте поговорить шепотом в гарнитуру...Да ещё замотать микрофон полотенцем... Вы когда нибудь говорили в микрофон шепотом?

RT1O
12.11.2014, 16:43
Да ещё замотать микрофон полотенцем... Вы когда нибудь говорили в микрофон шепотом?
Я вроде нормально написал - КАК ЭКСПЕРИМЕНТ-
Свою точку зрения никому не навязываю, высказал как я победил проблему. Дальше Вам решать.
Из темы удаляюсь.

RN3ZOB
12.11.2014, 17:31
Integral,Тестировани е произведу не раньшше двух недель. Как писал еще не все в наличии, хотя уже можно пробывать, но хочется отработать по факту. А тут нужно еще покинуть QTH на недельку.

Integral
12.11.2014, 21:27
Но попробуйте поговорить шепотом в гарнитуру и без явного громкого щелчка гарнитуры, как эксперимент.
Пробовали, как только происходит переход некоторого порога и дешифратор тут же переключается. Для этого на плате есть светодиод, который и фиксирует пороговый уровень срабатывания дешифратора. С номиналами конденсаторов по входу схемы устойчивое переключение получается уже от 5Вт.

D0ITC
13.11.2014, 11:09
Не было интернета со вчерашнего дня, блокировали за неуплату, сегодня зашел сюда, а уже ответили на все вопросы.

RN3ZOB
24.11.2014, 17:48
Мужики, на 9 диапазонов заработал, но не сразу. Без собственных косяков не обошлось, на входе вместо 100р припаял 100п. Всем Спасибо.

Integral
24.11.2014, 20:38
Мужики, на 9 диапазонов заработал, но не сразу. Без собственных косяков не обошлось
Это хорошо, потому что прошивка на все диапазоны не проверялась.

на входе вместо 100р припаял 100п
Не совсем понял какой номинал, 100n т.е. 0.1uF? Как то многовато получилось. В делителе на входе необходимо подобрать емкость для четкого определения диапазона 28МГц при минимальной мощности.

187650

RN3ZOB
25.11.2014, 08:25
Совершенно верно, по невнимательности припаял 100п т.е. 0,1uF. С ним детектор ни чего не видел. Хотя частотомер показывал наличее частоты в этой точке, но светодиод не отрабатывал. Думал прошивка сырая, но по факту входная часть, что у 6-ти, что у 9-ти одинаковая. После детального осмотра была обнаружена бяка. Просадил вход по ВЧ, частотомеру хватало оставшего уровня, а дешифратор отказался работать с таким конденсатором.

ZUBR
03.01.2016, 13:31
Integral,С Новым годом. У меня есть индикатор с общим катодом а в схеме с общим анодом. В селе где я живу проблема купить , можно подправить прошивку под индикатор с общим катодом?

ZUBR
03.01.2016, 16:10
UN7GCE, С Новым годом! А существует прошивка для индикатора с общим катодом?

Integral
03.01.2016, 19:54
Integral,С Новым годом. У меня есть индикатор с общим катодом а в схеме с общим анодом. В селе где я живу проблема купить , можно подправить прошивку под индикатор с общим катодом?
Других прошивок под индикатор с ОК Евгений не делал. Дешифратор можно использоваться и без индикации, три микросхемы 74HC595 и индикатор не запаиваются. При этом индикацию включенного диапазона можно контролировать по светодиодам.

ZUBR
03.01.2016, 23:41
Integral, С Новым годом! да я понимаю что можно и без индикатора, но просто платку вытравил да и вид лучше с индикатором.

UN7GCE
04.01.2016, 06:31
UN7GCE, С Новым годом! А существует прошивка для индикатора с общим катодом?С Новым годом! Нет, такой прошивки пока не существует. Давайте сделаем так, - Вы заканчиваете платку, выкладываете её фото и свою разводку в LayOut'e, и через день я выложу прошивку.
Это чтобы мне не работать впустую.

ZUBR
04.01.2016, 14:14
Добрый день Евгений! Сейчас сброшу фото печатки в LayOut'e, плата у меня на 6 диапазонов.Заранее спасибо.221302221303

UN7GCE
04.01.2016, 16:21
...плата у меня на 6 диапазонов...Зря выложили в архиве прошивки. Они раннего типа и работают неважно. У Вас сделаны платы с СА и я переделал прошивку на СС, но с тем же расположением сегментов. Почему и просил разведенную плату на СС. Катоды в схеме посадить на землю.

RV9CQQ
04.01.2016, 17:15
Извиняюсь, что не совсем по теме, но есть вопрос знатокам PIC. Можно ли заменить PIC16F84-10 I\P на PIC16F84A- 04/P ? Если не получается, то на что можно?

Integral
04.01.2016, 19:43
Можно ли заменить PIC16F84-10 I\P на PIC16F84A- 04/P ?
Если в устройстве используется кварц на 4МГц, то проблем не будет. До 8МГц возможно еще будет работать, но тут как повезет.

RV9CQQ
04.01.2016, 20:30
Понятно. А каким можно заменить (именно из PICов чтоб прогу не переделывать) , чтоб структура внутренняя была одинаковой? Кварец на 10 мгц.