Автор |
Сообщение |
|
Дата: 30 Янв 2021 11:54:08 · Поправил: studentkra (30 Янв 2021 11:57:46)
#
Это было замечено в пределах отдельно взятого поддиапазона VCO или замечается только при переходе с одного поддиапазона на другой?
Это по всему диапазону. Вот график зависимости ppm от частоты.
Я вдувал в R820T2 частоты с генератора NANOVNA и подстраивал ppm. Несоответствие составляло примерно 30-40 кГц.
Я вот про этот параметр в Вашем коде.
unsigned Set_Freq_R820T(unsigned long f_pr, signed long ppm ) |
|
Дата: 30 Янв 2021 15:11:00
#
Для информации к размышлению над этим багом неплохо бы посмотреть ещё один график.
Если у Вас есть возможность, на одной какой-нибудь частоте, ну например, 200 мГц , подстройте ppm до максимального совпадения реальной частоты приема с заданной частотой и затем постройте в обе стороны от этой частоты график расхождений истинной частоты приёма от заданной, в килогерцах , для достаточно большого количества частот. Может, увидим какую-нибудь закономерность и это как-то поможет.
Если мы не сможем найти , где в алгоритме причина, то придётся наверное, искать формулу для вычисления поправок в зависимости от частоты.
Интересно, с изменением задаваемой частоты упомянутое расхождение в килогерцах растёт (или падает) монотонно, или же периодически колеблется от отрицательных значений до положительных и обратно, на некоторых частотах проходя через ноль?
|
Реклама Google
|
|
|
Дата: 30 Янв 2021 16:22:59 · Поправил: studentkra (30 Янв 2021 16:30:55)
#
Если у Вас есть возможность, на одной какой-нибудь частоте, ну например, 200 мГц
Принимаемая частота, МГц. Частота на ПЧ, МГц
50 3.5515
75 3.5429
100 3.5340
125 3.5256
150 3.5168
175 3.5079
200 5.5000
225 3.4912
250 3.4826
275 3.4742
300 3.4606
325 3.4563
350 3.4477
375 3.4393
400 3.4306
Если мы не сможем найти , где в алгоритме причина
Я переделал библиотеку R820T2 Breakout https://github.com/emeb/r820t2 , заменив под себя процедуры работы с шиной I2C.
Калибровка частоты теперь просто задается частотой кварца.
У меня так получилось:
#define XTAL_FREQ 28804261 |
|
Дата: 30 Янв 2021 18:18:30 · Поправил: killer258 (30 Янв 2021 20:40:32)
#
то есть,как я понял, если просто напрямую ввести в качестве частоты кварца поправленную вручную (а не через ppm) частоту кварца f_ref, и задать ppm равным нулю, то всё начинает работать правильно на любых частотах?
Если так, то да, тогда получается, что ppm необходимо было в той процедуре учитывать каким-то другим способом, видимо я в конце поспешил и не совсем правильно понял этот момент.. В моей версии частота кварца корректируется следующим образом:
f_ref:=f_ref+ppm*29; // учёт поправки ppm (28.8 гц на один ppm для 28.8-мегагерцового кварца)
то есть опытным путём я в то время выяснил, что если к заявленной частоте кварца прибавлять ppm, помноженный на 28.8 , то вроде бы, как мне показалось, всё становится норм. Причем поскольку операции целочисленные, то пришлось умножать на ближайшее целое значение, то есть не на 28.8, как следовало бы, а на 29, что в общем-то конечно не совсем гуд, но ничего лучшего я не придумал.
А если для одного и того же конкретного используемого экземпляра свистка, то наверное проще действительно выкинуть этот учёт ppм, и вместо этого просто один раз найти подправленное значение кварца и использовать его как константу. У меня вначале так оно и было, я просто вводил "уточненную" частоту кварца, но потом решил усовершенствовать, чтобы это было бы, как в HDSDR (узнать бы, как ppm учитывает при вычислениях сама HDSDR, было бы интересно узнать правильный ответ, но такой возможности нет, так как исходников HDSDR у меня нет).
|
|
Дата: 30 Янв 2021 20:36:27
#
killer258, да. Мне умножение на 29 тоже сомнииельным показалось.
Изначально я пробовал использовать готовую библиотеку по ссылке выше. Но она не скомпилировалась под STM32F103.
Потом попытался сам во всём разобраться. Но мне нехватило упёртости. Не люблю математику.
Ваш код с шестой страницы инициализировал тюнер и настроил его на нужную частоту, за это Вам огромное СПАСИБО и Уважение!
Но скоро выяснилась проблема с точностью настройки. Я вывел формулу корректировки. ppm = A + B/частота
Но погрешность составляла 5%. Это неправильно. И я переписал библиотеку по ссылке выше.
Библиотека собралась. Корректировка частоты путём изменением частоты кварца. Работает до 300 МГц. Выше не проверял.
Температурный дрейф моего кварца примерно пара тройка килогерц на частоте 300 МГц.
В библиотеке можно коммандами задавать все усиления и т. п. не дёргая вручную регистры. Удобно.
|
|
Дата: 30 Янв 2021 21:55:16 · Поправил: killer258 (30 Янв 2021 22:53:40)
#
я начинаю вспоминать, как было дело. Чтобы произвести без округления целочисленное умножение ppm на 28.8, необходимо было вообще все переменные во всей этой вычислительной процедуре одновременно увеличить в 10 раз, чтоб запятая везде сдвинулась вправо и 28.8 превратилось бы в целое 288. И всё бы получилось, но я наткнулся на ограничения того компилятора микропаскаль для AVR, которым я пользовался. В отличие от стандартного языка паскаля для компов, он позволял обьявлять максимум только четырёхбайтовый тип DWORD. Частота нашего опорного кварца, даже выраженная в герцах и даже умноженная на 10, в эти 4 байта в общем-то помещается, но вот другие переменные, например задаваемая частота приёма, они побольше, а если их умножить еще на 10, да ещё и операции перемножения там присутствуют в формулах, то какой-то из промежуточных результатов должен был вылететь за пределы разрядной сетки 4-байтового числа. Если писать на Си, там вроде бы есть и больше разрядность для целочисленных переменных, чем 4 байтные, и я думаю, переполнения бы не происходило , а вот этот компилятор не позволил. Вот и пришлось смириться с умножением на 29. Ну, еще как вариант, можно было вычисление на ассемблере сделать, "сцепив" там из отдельных байтов слова длиной в 6 или даже 8 байтов, но как только я подумал о том, что надо будет следить за всеми этими переносами из байта в байт в каждом таком слове при каждой операции с ними, во время процедур умножения и сложения, писать на ассемблере расхотелось из-за этой математики, слишком геморно это для меня.
Так что пожалуй, наверное и правда проще будет корректировка частоты путём изменения частоты кварца
|
|
Дата: 30 Янв 2021 23:05:11 · Поправил: studentkra (30 Янв 2021 23:06:30)
#
killer258, я в программировании полный ноль почти. Особенно субботним вечером ))
И особенно, что касается математики. Физику и химию люблю. Геометрию тоже. Но математика, блин... ))
|
|
Дата: 31 Янв 2021 18:39:37 · Поправил: killer258 (31 Янв 2021 20:04:28)
#
ну, здесь-то математика всё-таки была не особо сложной для понимания. Вот для сравнения скажем, по быстрому преобразованию Фурье , вот там да, мне в целом понятен смысл преобразования , но остаётся достаточно не совсем понятных "мелочей", без хотя бы одной из которых не получается написать рабочую процедуру самому, а поиграться в эти игры со спектрами хочется.
|
|
Дата: 31 Янв 2021 20:18:29 · Поправил: studentkra (31 Янв 2021 20:19:06)
#
killer258, я тоже сталкивался с быстрым преобразованием Фурье, когда рисовал "водопад" на аналоговом приёмнике. Но даже вникать в математику не стал. Использоват готовые библиотеки FFT))
Кстати по R820T2. Регулировать усиление по выходу ПЧ можно как через регистры, так и напряжением. Не знал. Через регистры правда ощущается довольно большая задержка.
|
|
Дата: 31 Янв 2021 21:39:17
#
Да. Поэтому в органах управления HDSDR есть "tuner AGC" и есть "RTL AGC"
|
|
Дата: 04 Фев 2021 10:58:11 · Поправил: studentkra (04 Фев 2021 10:59:40)
#
Проверил скорость сканирования чипа R820T2. Получилось максимум 150 частот в секунду. Это очень здорово!
Методика измерения такая:
С генератора подаётся постоянный сигнал с частотой 131.200 МГц.
1) R820T2 настраивается на эту частоту и проверяется его наличие на выходе аналоговым С-метром. Если наличие есть, то плюсуем счётчик успешного захвата. Если сигнала нет, плюсуем счётчик ошибок отсутствия захвата.
2) R820T2 настраивается на случайную частоту в диапазоне 117.000 МГц ~ 136.000 МГц с шагом 25 кГц. За исключением частоты сигнала 131.200 МГц. Если сигнал обнаружен, то плюсуем счётчик ошибочных захватов.
Повторяем пункты. При скорости выше 150 частот в секунду начинают появляться ошибки.
|
|
Дата: 04 Фев 2021 11:55:59 · Поправил: killer258 (04 Фев 2021 12:33:38)
#
R820T2 настраивается на эту частоту и проверяется его наличие на выходе
тут надо учесть, что этот выход там имеет полосу несколько мегагерц, то есть широкие ворота, и имхо, при шаге сетки 25 кгц для чистоты эксперимента , раз уж напряжение фиксируется непосредственно на этом выходе, а не в конце приёмного тракта после последней ПЧ 455 кгц, то наверное, надо это делать либо через узкополосный полосовой фильтр на центральную частоту 3.58 мгц с полосой 25 кгц , чтобы сузить ворота, либо я бы проверял наличие сигнала не здесь, а в самом конце тракта, на выходе последней , самой узкополосной ПЧ.
Ну, то есть, я хочу сказать, если просто мерить на выходе чипа, то ваш С-метр будет фиксировать наличие сигнала , даже если он будет не на центральной частоте 3.58 , а просто окажется попадающим в эту полосу шириной несколько мгц
И ещё думаю, что на практике может оказаться так, что реальная скорость сканирования может ограничиться ещё и таким фактором, как небесконечная скорость нарастания напряжения на выходе приёмника. Даже если фапч при быстром сканировании будет успевать входить в захват, но эта ваша тестовая несущая будет проскакивать через "ворота" шириной 25 кгц слишком быстро, то может случится так, что напряжение на выходе просто не успеет сколько-нибудь заметно подскочить за такое время до уровня, способного открыть шумоподавитель .
И тогда результирующая реально реализуемая скорость сканирования всего приёмника может оказаться более скромной, чем 150 частот в сек
Помню, когда-то давно я делал сканирующий приёмник из ВЧ блочка от радиотелефона SanyoCLT-55KM и мкроконтроллера PIC16F73, и у меня тоже была необходимость выяснить максимальную скорость сканирования по диапазону, я поступал аналогичным образом : я вначале ставил заведомо низкую скорость сканирования, убеждался, что сканирование останавливается на несущих , затем понемногу увеличивал скорость сканирования до тех пор, пока не стали начинаться пропуски несущих, то есть девайс при сканировании уже переставал на них останавливаться. Таким образом былы выяснены реальные возможности этого девайса, это была цифра порядка десятков, но не сотен частот в сек.
|
|
Дата: 04 Фев 2021 12:32:22
#
killer258, я выставил минимальную ширину ПЧ выхода тюнера. Получилось примерно в районе 2 МГц. Кстати, ширина ПЧ изменяется вправо от нуля. Для себя выбрал значение ПЧ 1.300 МГц. Далее ПЧ поступает на смеситель и преобразуется в 10.690 кГц.
Проходит через широкий (~180 кГц) фильтр на 10.7 МГц. Далее усиливается немного транзистором и поступает на узкий (7.5 кГц) фильтр 10.7 МГц (На самом деле у китайского фильтра центральная частота оказалась сдвинута. По измерениям 10.690 МГц). Далее, после узкого фильтра уровень измеряется логарифмическим ОУ AD8307. Если не врубать усиления на 100%, то С-метр не видит сигнала на соседней частоте с шагом 25 кГц.
|
|
Дата: 04 Фев 2021 12:36:46 · Поправил: studentkra (04 Фев 2021 12:37:26)
#
о может случится так, что напряжение на выходе просто не успеет сколько-нибудь заметно подскочить
Именно по этому алгоритм измерения скорости сканирования переключается с частоты с сигналом на случайную частоту, где сигнала точно нет. Если С-метр покажет его отсутствие, то все окей. Далее опять на частоту с сигналом. И смотрим уровень. Если есть, то окей.
Если предложите другой алгоритм проверки скорости сканирования, то с удовольствием попробую!
|
|
Дата: 04 Фев 2021 12:37:17 · Поправил: killer258 (04 Фев 2021 12:43:39)
#
Если измерялось после узкого фильтра, то да, в таком случае результат эксперимента действительно воодушевляет.
Это получается, что с шагом 12.5 кГц сканер за секунду пробежит два мегагерца.
Вопрос лишь в том, будет ли при такой скорости в польностью собранном приёмнике успевать открываться шумодав. Ведь именно по сигналу открытого состояния шумодава микроконтроллер останавливает бег по диапазону. Это придётся выяснять опытным путём
|
|
Дата: 04 Фев 2021 12:40:28
#
Да, именно после узкого фильтра, который и был задуман только для измерения уровня сигнала. Можно конечно и снять показания сигнала с приёмника Si4735, но для этого нужно будет постоянно дёргать шину I2C, что будет есть ресурсы микроконтроллера и гнать дополнительные помехи.
|
|
Дата: 04 Фев 2021 12:50:39
#
Вопрос лишь в том, будет ли при такой скорости в польностью собранном приёмнике успевать открываться шумодав.
В чём проблема? Мой микроконтроллер фиксирует же сигнал. Значит и шумодав откроет.
|
|
Дата: 04 Фев 2021 12:51:20 · Поправил: killer258 (04 Фев 2021 12:59:36)
#
Если предложите другой алгоритм проверки скорости сканирования, то с удовольствием попробую!
я могу предложить только тот, который уже был описан мной выше. Но его можно будет применить только когда уже будет полностью готов весь приёмный тракт и микроконтроллер с написанной программой управления сканированием. Тогда ставите несущую в пределах диапазона сканирования , запускаете сканировние, если сканер уверенно останавливается на несущей, увеличиваете скорость сканирования и снова запускаете, пока он не перестанет останавливаться даже на мощной несущей.
Фактически то же самое, что и у Вас.
|
|
Дата: 04 Фев 2021 12:59:28 · Поправил: studentkra (04 Фев 2021 13:01:21)
#
Но его можно будет применить только когда уже будет полностью готов весь приёмный тракт и микроконтроллер с написанной
программой управления сканированием.
Всё уже готово и написано.
Тогда ставите несущую в пределах диапазона сканирования , запускаете сканировние, если сканер уверенно останавливается на несущей
Это долго! Надо же ошибки считать. Остановится - не остановится. Да и в таком случае частота гетеродина будет плавно! ползти с изменением частоты. Мой алгоритм прыгает со случайной частоты на частоту сигнала. Первый проход ---> фиксируем наличие сигнала на выставленной частоте. Второй проход ---> прыгаем на рандомную частоту и фиксируем отсутствие сигнала. Далее опять на частоту и так далее. Ошибки пишем в журнал. Смотрим, сколько их наберётся за минуту/час.
Вопрос правда, не сдохнет ли R820T2 от таких дёрганий? )))
|
|
Дата: 04 Фев 2021 13:00:55 · Поправил: killer258 (04 Фев 2021 13:03:45)
#
думаю, что не сдохнет :-)
Да и в таком случае частота гетеродина будет плавно! ползти
Это да. Просто я забыл, что в том моём проекте требовалось лишь сканирование по диапазону, а сканирование по банку частот не предполагалось.
|
|
Дата: 04 Фев 2021 13:07:37 · Поправил: studentkra (04 Фев 2021 13:09:38)
#
думаю, что не сдохнет :-)
Греется градусов до 80! Надо было снизу с обратной стороны платы медный полигон больше делать. И медный экран сверху приклеить.
Попробовать, что-ли попрыгать по всему диапазону частот от 24 МГц до 1700 МГц , а не в полосе 30 МГц?
|
|
Дата: 04 Фев 2021 13:21:27 · Поправил: killer258 (04 Фев 2021 13:28:12)
#
надо бы. чтоб знать все возможности.
Чтобы например, использовать этот приёмник в связке с портативным частотомером, который значение обнаруженной частоты направляет в приёмник, и тот почти мгновенно встаёт на неё и мы слышим передачу почти в тот же самый момент, как она началась. Так сказать, альтернатива сканеру , если работа на небольших расстояниях
|
|
Дата: 06 Фев 2021 19:39:18
#
|
|
Дата: 06 Фев 2021 20:14:12 · Поправил: ivanovgoga (06 Фев 2021 20:22:00)
#
Сканирование авиа диапазона )))
Здорово!
|
|
Дата: 06 Фев 2021 20:28:29
#
|
|
Дата: 06 Фев 2021 21:03:49
#
Спасибо! Перечитаю, давно сюда не заходил.
|
|
Дата: 15 Фев 2021 20:56:33
#
Пора разводить плату управления. Встал вопрос о выборе микроконтроллера. Думаю поставить STM32F103VET6.
Хочу NAND FLASH для записи звука. Подключу по аппаратному FSMC. Потом буду скидывать на SD карту по аппаратному SDIO.
Шина I2C рулит всем приёмником. Дисплей быстрый не нужен. Тач скрин тоже лишний. По этому подключаем по SPI.
На второй SPI повешу FLASH типа W25QXX.
Клавиатура 16 кнопок. Энкодер. Может пара аналоговых крутилок для громкости и SQL.
Если есть какие мысли по этому поводу, с удовольствием выслушаю)))
|
|
Дата: 27 Фев 2021 18:26:18
#
Развел цифру )))
|
|
Дата: 11 Мар 2021 17:14:00
#
Плохая новость. Не удалось запустить микросхему si4735 с патчем в режиме NBFM. Похоже, это невозможно. Есть только патч под SSB.
Хорошая новость. Микросхема si4735 может принимать NBFM в режиме WFM. Правда тихо. Но ничего не мешает автоматом добавлять громкости при наличии сигнала. Вот что получилось. Единственный источник NBFM сигнала у меня старый радиотелефон на 40 МГц.
https://disk.yandex.ru/d/H4pw-ndNczFcHA |
|
Дата: 17 Мар 2021 12:23:08
#
А что если вместо двух смесителей на SA612 использовать одну MC3362 по классической схеме. На входе ПЧ с R820T2. Ну например 4.5 МГц. На первый смеситель подаём частоту гетеродина 6.2 МГц. На выходе получаем 10.7 МГц. Через фильтр подаём её на второй смеситель. Частота гетеродина второго смесителя 10.245 МГц. На выходе имеем ПЧ 455 кГц. Через фильтр подаем её на встроенный в MC3362 NFM детектор. А так же на AM детектор на Si4735 настроенный на 455 кГц.
А при приёме WFM частоту гетеродина второго смесителя ставим например 69.3 МГц. Тогда на выходе получаем 80 МГц, которую подаём на WFM детектор на Si4735.
|
Реклама Google |
|