Просмотр полной версии : Трансивер прямого преобразования по порядку на пальцах
Здравствуйте!
Делаю первую свою SSB самоделку. Вот допустим по приему, синусоидальный сигнал КВ диапазона с сигналами смещенными на 90 гр. DDS синтезатора смешал и получил квадратуру (сигналы синфазной и квадратурной составляющих) I и Q. Сделал это по традиционной схеме. Раздельно оцифровал эти сигналы и получаю как поток данных в микроконтроллере с частотой дискретизации 96 кГц. Уже готов программный фильтр основной селекции, пока что FIR 8-го порядка и выход на DAC на динамик.
Застрял на программном выделении боковой полосы из принимаемого сигнала. Как сложить сигналы I Q так чтоб выделить требуемую боковую полосу и подать на фильтр основной селекции? Надо ли предварительно как-то обработать эти сигналы по отдельности?
Добавлено через 15 минут(ы):
Подскажите литературку по моему вопросу? Хочется так чтоб на пальцах было рассказано. Пока что попалось только "Лайонс Р_Цифровая обработка сигналов", вроде как описано доступно, но с пониманием формул проблемы.
Советую почитать статьи на dsplib.ru, а так же цикл статей Джеральда Янгблуда в журнале QEX. Кстати, FIR 8 порядка это очень мало, хуже чем RC фильтр.
Ну я пока загрузил бесплатную версию dsPICFDLite в качестве генератора фильтров, когда заработает конечно же можно будет перейти на полную версию.
Я конечно иду читать по вашим ссылкам, не а как дважды два по поводу работы с квадратурой разве нет ответа?
Как дважды два ответа нет. Точнее есть, но ответ будет охватывать очень большую сферу других вопросов.
Вариант 1 - делаем преобразование Гильберта в временной области и в зависимости от нужной боковой полосы результаты надо сложить или вычесть.
Вариант 2 - делать обработку в частотной области. Для этого нам потребуется быстрое преобразование Фурье. Обработка ведется над буферами данных, которые по мере накопления перекрывают друг друга. Берем буфер, делаем БПФ, обнуляем в полученном спектре отрицательные частоты, делаем обратное бпф, получаем на выходе верхнюю боковую полосу. Берем следующий буфер, который содержит 50% старых данных и 50%новых. Делаем бпф и т.д. Чем больше степень перекрытия, тем лучше. На практике 50% хватает.
Понятно. Спасибо. Пошел пробовать...
Просто в большинстве статей все объясняется формулами, а у меня с этим туго, всю жизнь приходилось считать не сложнее чем деньги и делать устройства не сложнее чем автоматы.
А с какой целью делаете свою самоделку? Если для себя приемник, то вы уже все сделали. Включайте любую программу, из набора радиолюбительских по обработке SDR, и наслаждайтесь приемом.
Или изучаете сам принцип и хотите все "пощупать" своими руками?
И я так понял, вы не программист. Правильно? Я уже все "пощупал", как программист, но не совсем понимаю, как вам правильно подсказать.
Добавлено через 49 минут(ы):
Вчитался в первый пост повнимательней... Сразу не заметил, что обработка будет на микроконтроллере. А как будет происходить отображение всего диапазона? Это же одна из ценнейших фичей в SDR. На компьютере это все просто делается...
Что за программу? Разве существуют универсальные программы? Я самостоятельно развел ПП не согласовывая с существующими схемами, использовал микросхемы которые были под рукой, использую сигнальный процессор который в радио еще никто не использовал, просто более менее подходящий по характеристикам для обработки потокового аудио, по этому для управления чипами и дисплеем написал свои обработчики, получаю данные от ADC специальным модулем проца DCI, теперь надо написать обработчик для обработки этих данных, выделения требуемой боковой полосы и фильтрации до требуемой полосы пропускания сигналов.
Разве уже есть готовый код под dsPIC30H6012А, у меня именно такой проц. Разве только взять как пример отдельные части кода SDR-Cube, но я не уверен что тот автор все сделал максимально правильно, по крайней мере как звучит SDR-Cube мне не нравится. Надо понять все принципы и написать свой код. Что-то надо взять из примеров кода Микрочип, думаю под свой же проц они написали максимально качественный DSP код.
Добавлено через 13 минут(ы):
А как будет происходить отображение всего диапазона? Это же одна из ценнейших фичей в SDR. На компьютере это все просто делается...
У меня считайте что карманный трансивер, по этому дисплей у меня WH1602A.
187893
с поддержкой графического режима. Скромную панораму предполагается разместить в нижней части этого дисплея на разрешении 80 x 8 пикселей.
Да они все универсальные, которые со звуковухами работают. Какие I/Q дадите - такие и декодируют, можно даже из файла.
Такая панорама - это как осциллограф в пинцете - измерителе smd, с одной стороны формально есть, а с другой... хотя для тех диапазонов, где используют FM в стандартной сетке частот, пойдет. В любом случае лучше чтобы была.
А у микроконтроллера есть операции с числами с плавающей запятой? Я работал только с такими фильтрами. Фильтр, что использовал двойной. Одновременно обрабатывает каналы I и Q. В зависимости от того какая боковая нужна выставляем Гильберта или для канала Q или для канала Q. Потом складываем результат фильтрации. Остается только нужная боковая.
Да они все универсальные, которые со звуковухами работают. Какие I/Q дадите - такие и декодируют, можно даже из файла.
Такая панорама - это как осциллограф в пинцете - измерителе smd, с одной стороны формально есть, а с другой... хотя для тех диапазонов, где используют FM в стандартной сетке частот, пойдет. В любом случае лучше чтобы была.
Но у меня нет звуковух, в привычном для пользователя компьютеров понимании, у меня 32-битные ADC и DAC. Так же у меня нет файлов.
У меня нормальная панорама для самоделки, если проц будет способен охватить полосу сигналов в 80 кГц, я смогу вывести на каждый столбик индикатора уровни сигналов в полосе 1 кГц, то есть один условный канал приема SSB сигналов расположится на двух-трех столбиках изображения моего индикатора. Думаю этого будет достаточно для визуальной оценки в каких участках с каким уровнем присутствуют сигналы.
Добавлено через 5 минут(ы):
А у микроконтроллера есть операции с числами с плавающей запятой?
DSP Features:
• Dual data fetch
• Modulo and Bit-Reversed modes
• Two 40-bit wide accumulators with optional
saturation logic
• 17-bit x 17-bit single-cycle hardware fractional/
integer multiplier
• All DSP instructions are single cycle:
- Multiply-Accumulate (MAC) operation
• Single-cycle ±16 shift
Аппаратно наверное нет....
Наверное только так:
MPLAB Assembler
• Support for the entire device instruction set
• Support for fixed-point and floating-point data
... dsPIC30H6012А, у меня именно такой проц...
может быть dsPIC30F/6012A (http://ww1.microchip.com/downloads/en/DeviceDoc/70143E.pdf) ?, что-то я не нахожу в этом семействе "dsPIC30H":shock:
Но у меня нет звуковух, в привычном для пользователя компьютеров понимании, у меня 32-битные ADC и DAC. Так же у меня нет файлов.
я про "универсальные программы"
У меня нормальная панорама для самоделки, если проц будет способен охватить полосу сигналов в 80 кГц, я смогу вывести на каждый столбик индикатора уровни сигналов в полосе 1 кГц, то есть один условный канал приема SSB сигналов расположится на двух-трех столбиках изображения моего индикатора. Думаю этого будет достаточно для визуальной оценки в каких участках с каким уровнем присутствуют сигналы.
у вас нормальная программа для индикатора 1602 :-P какие могут быть панорамы в самоделках вы, я думаю, уже видели и так - ничем не уступают компутерным, в принципе сильный сигнал как то можно оценить и на 1602, а не очень сильный (относительно шума) ssb на такой панораме (спектроскопе) видно плохо - его вообще на водопаде только нормально видно
Не надо схватывать полосу сигналов в 80 кГц, это роскошь :) Достаточно выхватить из потока любую последовательность разрядов равную количеству пикселов на экране(конечно же кратных возведению двойки в нужную, ближайшую степень) и сделать преобразование Фурье. Отобразить это с масштабированием от ближайшего возведения двойки к количеству пикселов. Когда процессор будет готов, повторить. Но весь поток гнать через преобразование Фурье не нужно. Подписать водопад в центре частотой на которой работают гетеродины, а по краям от этой частоты минус 48 килогерц и плюс 48 килогерц. Ну и если есть место то подписать промежуточные частоты.
Не. Ничего не понятно.
Ну а можно сделать так как я всегда делал в простых автоматах, в данном случае есть у меня данные о времени между двумя отсчетами синусоидального сигнала и есть данные о потенциале сигнала одного и другого отсчета. Просто вычислять моментальное значение частоты сигнала по этим данным двух отсчетов? Так как амплитуда сигнала не постоянна, потребуется конечно же дополнительные отсчеты или сопоставление с данными квадратурного сигнала?
В общем, как понимаю, мне надо придти к тому чтоб за период двух отсчетов вычислять моментальное значение частоты и амплитуды сигналов, а потом в этот же период отсеивать если моментальное значение частоты не попадает в параметры фильтра, отсеивать.
Возможна ли такая схема работы?
В общем, как понимаю, мне надо придти к тому чтоб за период двух отсчетов вычислять моментальное значение частоты и амплитуды сигналов, а потом в этот же период отсеивать если моментальное значение частоты не попадает в параметры фильтра, отсеивать.
Возможна ли такая схема работы?
Не, это тупик :smile:. Попробуйте нарисовать схему обработки в виде аналоговых блоков (генератор, смеситель, фазовращатель, фильтр), а уже потом думайте о их цифровой реализации. Сама по себе цифра ничего не дает :-(
У меня уже спаяна схема где аналоговые сигналы превращаются в данные о моментальном значении потенциала, теперь стоит вопрос из этих данных выделить интересующую полосу частот. Аналоговая реализация этого меня не интересует, потому как в будущем и настоящем она становится бесполезной. Это все-равно что я буду к своей СМА приделывать спидометр для контроля за частотой вращения, когда уже научился вычислять скорость по нескольким отсчетам сигнала датчика угла поворота вала электродвигателя. Помимо этого по нескольким отсчетам научился измерять моментальные значения ускорения частоты вращения для контроля за дисбалансом, что в аналоге было бы реализовать очень сложно и даже невозможно.
теперь стоит вопрос из этих данных выделить интересующую полосу частот.
Ищем в интернете "IIR Filter". Потом ищем программы, которые их рассчитывают. Воспользовался WinFilter (http://www.winfilter.20m.co m), она конечно простая и старая, но мне ее возможностей более чем хватило :-P.
Аналоговая реализация этого меня не интересует, потому как в будущем и настоящем она становится бесполезной
А реализация в аналоге и не нужна, нужна только функциональность, реализация этой функции будет в цифре
когда уже научился вычислять скорость по нескольким отсчетам сигнала датчика угла поворота вала электродвигателя
Это совсем простая задача, с датчика Вы имеете фазу (угол), амплитуда остается за кадром (она константа), а в случае оцифрованного в широкой полосе сигнала такой простоты, увы, не будет. Все ЦОС алгоритмы так или иначе повторяют известные в аналоговой технике узлы
Так надо самому понять, написать, а не приделывать готовое. У меня уже есть Микрочип ФильтрДизайнер для генерации кода фильтра.
Это совсем простая задача, с датчика Вы имеете фазу (угол), амплитуда остается за кадром (она константа), а в случае оцифрованного в широкой полосе сигнала такой простоты, увы, не будет. Все ЦОС алгоритмы так или иначе повторяют известные в аналоговой технике узлы
Понимаю, по этому и спрашиваю с чего начать при обработке широкополосного сигнала. Как понимаю, для сигналов с непостоянной амплитудной составляющей, надо сопоставлять отсчеты по сигналам I с отсчетами по сигналу Q, чтоб не ошибиться с вычислением моментально значения частоты по двум отсчетам.
надо сопоставлять отсчеты по сигналам I с отсчетами по сигналу Q
А вы книгу Полякова "Приемники Прямого Преобразования" читали? Там очень просто вся теория дается.
надо сопоставлять отсчеты по сигналам I с отсчетами по сигналу Q, чтоб не ошибиться с вычислением моментально значения частоты по двум отсчетам
Ничего Вы не вычислите по двум соседним отсчетам, даже простой фильтр для вычисления одного выходного отсчета требует, чтобы через него прошло количество отсчетов, равное длине его импульсного отклика. Начните с архитектуры, разрисуйте квадратики, а потом думайте о реализации, утилита для фильтров у Вас уже есть :smile:
А вы книгу Полякова "Приемники Прямого Преобразования" читали? Там очень просто вся теория дается.
Эту книгу?
http://mirknig.com/uploads/posts/2008-08/1218698727_121735726 1_th_20041_poliakov. jpg
1981 год?
Да. Читал. Намек там есть, но пока еще не открылось как переложить работы этого автора на вычислительные возможности процессора.
Смеситель - это умножение сигнала на синусоидальный (либо прямоугольный) сигнал. В зависимости от работы смесителя.
Фильтр из конденсаторов/катушек/резисторов преобразуем в IIR фильтр. Кстати выже описался, конечноже в IIR, а не в FIR фильтр надо преобразовывать.
Собственно вот основные сложные элементы. А уж как сложить/вычесть/усилить сигналы - это прямо и перекладывается на соответствующие математические операции.
Собственно вот основные сложные элементы. А уж как сложить/вычесть/усилить сигналы - это прямо и перекладывается на соответствующие математические операции.
Трудности в том, что мне надо уместить математические операции в свойства работы процессора, например данные от АЦП я получаю в обработчике прерывания по заполнению буфера данных 2 x 32 бит, сразу от двух каналов АЦП, и в этом же обработчике идет отправка данных на ЦАП динамика. То есть всю математику по цифровой обработке мне надо выполнить за время в промежутке между двумя отсчетами АЦП и результат передать на ЦАП на динамик. Пока еще так и не проникся какая математика тут лучше подходит?
То есть всю математику по цифровой обработке мне надо выполнить за время в промежутке между двумя отсчетами АЦП и результат передать на ЦАП на динамик
Так оно никогда не заработает :smile:. Отдельно делайте приемщик в буфер по прерываниям или DMA, по заполнении буфера передавайте его обработчику приемника, аналогично и в части выдачи на динамик, она получает буфер и выдает его в ЦАП. От размера буфера зависит задержка, но от нее никуда не деться, размер буфера во многом определяется длиной FIR фильтров
Понятно. Но у меня один последовательный интерфейс для АЦП и ЦАП кодака, а это означает что последовательно принимая данные от АЦП мне надо последовательно отправлять данные для ЦАП, причем управляет процессом обмена данными не проц, а кодак.
а это означает что последовательно принимая данные от АЦП мне надо последовательно отправлять данные для ЦАП, причем управляет процессом обмена данными не проц, а кодак.
Так и получится, только между потоками вклинится задержка. Собственно утилита ввода-вывода о задержке ничего знать не обязана, она занимается простым перекладыванием данных
То есть, программную обработку сигналов надо производить в отдельном потоке, не в обработчике прерывания по поступлению новых данных от АЦП ? в обработчике прерывания только заполнять буфер, пока еще неизвестно какой длины. Какая обычно приемлема задержка сигналов на буферизацию в миллисекундах?
Обычно несколько десяток милисекунд (для такой частоты дискретизации). Желательно конечно меньше, но из за обработки буферами (блоками) по математическим причинам ( для фурья требуется блок) и техническим (возможности контроллера, АЦП, ЦАП).
Для спектрограммы по любому потребуется Фурьё (иначе придется делать отдельные фильтры для каждой полосы во временной области, что накладно для ресурса).
Я к примеру для экономии ресурса на Фурье для спектрографа выделяю раз в несколько сот милисекунд буфер для него и обрабатываю, все равно большая динамика для визуализация не нужна. А весь поток обработки идет во временной области. Кстати если у вас DDS то нет необходимости "бегать" по полосе DSP. Я к примеру вместо гильберта приненяю еще одно перемножение IQ со сдвигом 90 гр., что позволяет ввести коррекцию по фазе. Затем сложение и обработка.
Так оно никогда не заработает .
Так оно заработает. Сам делал. Вот для цап надо иметь буфер, чтобы не было накладок при выдаче информации в ЦАП и исполнением кода в самом ЦАП.
Так делал в первом варианте пиона. Слесарь, советую посмотреть тему пиона, там я первоначальную версию исходников где-то выкладывал, для вас будет самое то.
Крайне не рационально. Надо делать блочную обработку. Еще рациональнее использовать фильтрацию в частотной области, но на это нужна доп. память в виде ОЗУ.
Так оно заработает.
Крайне не рационально.
Об этом и пытался сказать. Если каждый функциональный блок обработки хранит в себе внутреннее состояние (линия задержки фильтра), то можно двигать по одному отсчету конвейером по блокам, но лучше так не делать :smile:
Ладно. Начну с простого. Сейчас слушаю только сигнал I, поставил несущую генератором, слышу обе боковые полосы, попытаюсь для начала подобрать метод нейтрализации одной из боковых полос. Преобразование Гильберта, попробую написать код или содрать у кого-нить для начала и приладить.
Попробую таки для начала частично содрать код SDR-Cube, там в принципе почти все понятно, калькуляция фильтра на ассемблере, если конечно тот ассембрер код сразу заработает на моем проце.
ассемблер код SDR-Cube у меня не работает, то ли неправильно данные скармливаю этому коду, то ли производительности проца у меня не хватает (разгонял проц на полную до 120 МГц, что даже грелся как печка), зацикливается на одной из операций. Проникаться в чужой ассемблер код трудно и долго, по этому вопрос пока еще остается открытым.
Добавлено через 32 минут(ы):
Нет. Все заработало.
Просто не полностью заинициализировал чужой код DSP. Морзянки уже принимаю на 7.011 на кусочек проволоки 50 см. Хоть боковая полоса и фильтруется, еще пока не понял какая у меня сейчас включена, верхняя или нижняя, сигналы I Q я мог и перепутать при скармливании чужому DSP коду. Тактовую частоту пришлось разогнать до 120 МГц, потому как 60 МГц звук заикается.
Да. Собственно и с боковой полосой все понятно, с фазировкой I Q для 40м вроде все не ошибся. Телеграф орет аш режет слух, телефон тож принимается, только слегонца визжит. фильтр 2.4 кГц.
Попробую таки для начала частично содрать код SDR-Cube, там в принципе почти все понятно, калькуляция фильтра на ассемблере, если конечно тот ассембрер код сразу заработает на моем проце.
Вообще-то SDR Cube (V301 от 2010 г.) написан на Си. Если, конечно, мы имеем ввиду один аппарат. Я про тот, который на dsPIC33FJ256GP710.
Если не затруднит, дайте ссылку на ассемблерные исходники.
Ну там типа на сайте sdr-cube.com выложены исходники на С, а вот единственный модуль который я использую в файле calc_oh2nlt_filters. s написан на ассемблере.
Кста, как обсуждалось ранее, DSP обработка происходит в промежутке времени между семплами АЦП, без буферизации. Если конечно я правильно понимаю чужой код и вижу его работу в отладчике.
Да, такой файл действительно присутствует.
Остается пожелать дальнейших успехов.
Не знаю, можно ли назвать это успехами, сейчас принимаю на 80м диапазоне, диапазонный фильтр еще не паял по этому сигнал с двухметрового проводника типа антенный попадает сразу на квадратурный детектор, шумит невыносимо сильно, все работающие станции идут на уровне этого шума. Хотя вроде как достаточно разборчиво если какая-то станция начинает выделяться на уровне шумов. Если закоротить антенный проводник, шум исчезает практически полностью.
Поздравляю! Даже такой прием - уже прорыв. База есть, а далее будете ее расширять.
Сейчас попробую спаять диапазонный фильтр, не знаю можно ли доверять в расчетах емкостей и индуктивностей Filter Solutions 2009 ?
Добавлено через 5 минут(ы):
потребляемый ток в режиме приема оказался очень большим, 400 мА, мне думалось что смогу на базе этой схемы делать карманные КВ приемнички, но с таким потреблением никакая батарейка не потянет.
Тактовую частоту пришлось разогнать до 120 МГц, потому как 60 МГц звук заикается.
Если не секрет - какой dsPIC использовали? Мне больше, чем на 15-20 % свой не удалось разогнать. Есть версия, что внутрисхемная PLL чипа дальше не пускает. Может быть какое-то ноу-хау? Или я делаю не правильно?
Интересен тип 32-разрядного АЦП, который Вы использовали.
Как писал ранее:
dsPIC30F6012А до 120 МГц (30MIPS) кварц 7.372 МГц, PLL x16
TLV320AIC23B до 32 бит.
Собственно, идея использования TLV320AIC23B для игрушечного радио была взята из проекта SDR-Cube.
Однако я в недоумении: для dsPIC30F6012А 30MIPS это стандарт без разгона (• Up to 30 MIPS operation:).
TLV320AIC23B до 32 бит
Всё же этот кодек 24-разрядный. Протоколы передачи данных разные -да.
!?!?!?
Ну так а что с процем не понятно? я разогнал проц до 120 МГц, хотя такой режим работы не особо приветствую.
Ну пусть будет 24-разрядный, данные с кодека принимаю за раз два 16-разрядных слова для каждого канала.. Все равно даже 24-разрядные шумят на несколько младших разрядов. Даже низкочастотные 24-разрядные АЦП для прецизионных весов шумят на несколько младших разрядов, некоторые разработчики весов младшие 8 разрядов даже не обрабатывают. А тут специально эфирная шумелка делается.
Добавлено через 7 минут(ы):
Кста это идея, надо подумать о переделке математики DSP чтоб пользователь мог выбрать режим работы 16 или 32 бит, возможно при работе в 16-битном режиме нагрузка на проц будет меньше и энергопотребление соответственно... Хотя на качество приема 16-битный режим может не отразится.
Спасибо.
Моё любопытство удовлетворено.
По поводу весов: достаточно и 10 значащих разрядов. Где Вы встречали килограммовую упаковку сахара с точностью веса до 1 г ? (Я в этой теме).
Я специально делал дозатор с точностью дозирования +-1 гр. на 1 кг, за 3.5 сек. чтоб всегда дозировать по минимуму не нарушая при этом допуски по дозировке. Могу уже ошибаться, давно это было, допускается погрешность -15 гр. продукта. При цене продукта 40 руб за 1 кг, дозатор точным дозированием приносил дополнительные 60 коп. прибыли за одну дозу. За час работы одного дозатора это примерно 600 руб. дополнительной прибыли.
Не. Аналоговый диапазонный фильтр это утопия. Чтоб еще раз такой делать, да не в жизнь, только Digital Down Converters (http://www.analog.com/en/analog-to-digital-converters/digital-updown-converters/products/index.html) чиповые решения. Замучился уже подбирать SMD деталюхи для диапазонного фильтра.
..чтоб всегда дозировать по минимуму не нарушая при этом допуски по дозировке.. При любой проверке жадность ваша (вашего начальника) видна будет (и будет наказана). Гордость по этому поводу, а тем более прилюдно, означает отсутствие совести.
Многие компании ставят на свою фасованную продукцию ставят знак "е", означающий, что в фасовке с вероятностью 0,999999 НЕ МЕНЕЕ указанного количества -- вот этим можно гордиться.
При любой проверке жадность ваша (вашего начальника) видна будет (и будет наказана).
На каком основании?, если вес продукта не нарушает требований по точности дозировки.
Genadi Zawidowski
01.12.2014, 12:19
Вообще-то, TLV320AIC23B типичный 16-bit кодек (гляньте на С/Ш). Интерфейс позволяет вариации.
Многие компании ставят на свою фасованную продукцию ставят знак "е", означающий, что в фасовке с вероятностью 0,999999 НЕ МЕНЕЕ указанного количества -- вот этим можно гордиться.
Покупайте продукцию у этих компаний, рынок сейчас большой, кто вам мешает. У нас продукция без этого знака, значит дозировка согласно ГОСТ.
Вообще-то, TLV320AIC23B типичный 16-bit кодек (гляньте на С/Ш). Интерфейс позволяет вариации.
Да. Эфир жесть как шумит, не попадая в сравнение с шумом кодека.
..без этого знака, значит дозировка согласно ГОСТ.. Согласно ГОСТ дозировку считают не по отдельной пачке, но по достоверной выборке из партии, в в которой ваша хитрожопость жадность видна, как на ладони, именно поэтому
..При любой проверке жадность ваша (вашего начальника) видна будет.. Но кроме проверки вам и персионерка приснится, которая заплатила за коммуналку и считает в кошельке мелочь, прежде чем купить вашу упаковку с недовесом.
Вы с какой планеты вообще прибыли? Ту фирма которая будет взвешивать не хуже 0.9999, в стоимость продукта включит стоимость издержек такого взвешивания, процентов так +10 и за поддержание статуса фирмы печатающих на этикетке букву "е" еще +10%, думаю конечная стоимость такого продукта будет значительно выше стоимости продукта взвешенного по ГОСТ с ухищрениями по стабильному получению дополнительных +1.5%. Так какой же продукт выберет приведенная вами в пример пенсионерка?
И почитайте о чем писалось ранее. Было сказано что никто не взвешивает с точностью до грамм один килограмм, мною было сказано, что мы взвешивавшем... Все весы которые я делал, в том числе и автомобильные, поддерживали точность измерений не хуже 1/5000, 24-битным АЦП AD7730, но младшие 8 бит даже не обрабатывались.
..взвешивать не хуже 0.9999.. Эта цифра не точность взвешивания, это ВЕРОЯТНОСТЬ, а ваши
..ухищрениями по стабильному получению дополнительных +1.5%.. ничто иное, как мошейничество и обман, что я вам пытаюсь донести, но бесполезно, психология "урвать здесь и сейчас и свалить" слишком крепко сидит в вас :-(
А по теме прямого преобразования есть информация?
Слесарь, расхотелось вам помогать :ржач: Вот, может заинтересует: http://www.cqham.ru/forum/showthread.php?5883-Цифровая-коррекция-амплитудно-фазовых-ошибок-в-ФФ-приемнике&p=1037076&viewfull=1#post10370 76
Подскажите такой вопрос, для коммутации диапазонного фильтра вместо релюшек применил TS5A3159 analog switch, а сами фильтры расчитал на ВЧ 1 кОм, не совершил ли я зло, что коммутирую этими ключами такую высокоомную нагрузку?
ON-state resistance (ron) 1.1 Ω
ON-state resistance match (Δron) 0.1 Ω
ON-state resistance flatness (ron(flat)) 0.15 Ω
Turn on/turn off time (tON/tOFF) 20 ns/15 ns
Break-before-make time (tBBM) 12 ns
Charge injection (QC) 36 pC
Bandwidth (BW) 100 MHz
OFF isolation (OISO) −65 dB at 1 MHz
Crosstalk (XTALK) −65 dB at 1 MHz
Total harmonic distortion (THD) 0.01%
Leakage current (INO(OFF)/INC(OFF)) ±20 nA
Приветствую всех!
Подскажите такой вопрос, для коммутации диапазонного фильтра вместо релюшек применил TS5A3159 analog switch, а сами фильтры расчитал на ВЧ 1 кОм, не совершил ли я зло, что коммутирую этими ключами такую высокоомную нагрузку?
Нет, конечно! Хуже другое:
OFF isolation (OISO) −65 dB at 1 MHz
Это не так много, как надо бы. Хотя, при межконтактной ёмкости релюшек 1пФ (а бывает и хуже!) имеем Хс на частоте 7 МГц всего 22 КОм;-).
Crosstalk (XTALK) −65 dB at 1 MHz
Так, стало быть, ключи многоканальные?
Да. Спасибо! Перерасчитал и перепаял на 50 Ом. Странно только, дважды рассчитывал Filter Solutions 2009, и дважды получалось на 200 кГц смещенный вверх диапазонный фильтр.
Ключи, одна группа контактов на переключение (нормально замкнутый и нормально разомкнутый). Два ключа для каждого диапазон фильтра. Неиспользуемый фильтр закорачивается на землю.
Делаю бандскоп, попробую разместить на площади 80 х 8 пикселей. По мотивам того же SDR-Cube.
Жесть. Я намучился, примененный мной дисплей WEH001602AGPP5N00001 не поддерживает комбинированное использование символьного и графического режимов, приходится использовать только графический режим чтоб нарисовать бандскоп. Приходится ручками рисовать все необходимые цифры и буквы. Хотя и в этом тяжком труде есть свои плюсы, например точка разделитель групп цифр индикации рабочей частоты раньше занимала одно целое знак-место, а теперь точка будет занимать меньше места. Разрыв между группами цифр будет меньше.
Надо было как у меня дисплей (http://balmerdx.livejournal .com/79669.html) брать. Стоит 5$, зато 320x240 и яркий. Водопад получается неплохой. К томуже внутри есь аппаратный Scroll, так что не надо зазря данные гонять по шине.
Для больших дисплеев и рисовать ручками придется больше. Начну с малого дисплея, чтоб самоделка хоть как-то заработала, а не лежала мертвым грузом за недостатком времени.
Тут сейчас другая проблема, для бандскопа разработчик SDR-Cube использовал прилагаемую к компилятору готовую DSP библиотеку, но у меня при заходе в некоторые функции этой библиотеки, например FFTComplexIP, проц зависает. И пока еще непонятно в чем причина, вроде все инициализировал. Надо учиться пользоваться этой библиотекой.
Добавлено через 5 минут(ы):
Ну а так вообще у меня много Нокиа дисплеев, с более-менее описанным интерфейсом если захочется делать большой дисплей. Но примененный мной OLED дисплей по некоторым свойствам может выигрывать у LCD дисплеев.
Так. Ну математика бандскопа вроде заработала. По незнанке принципов работы новых для меня библиотек скармливал функции библиотеки неправильный размер массива вводных данных, вот и подвисала, почитал руководство и все прояснилось.
Теперь рисую удобный для глаз внешний вид бандскопа.
Кто бы мог подумать, а примененный мной дисплей в графическом режиме с программной генерацией символов, почему-то заработал быстрее при быстром прокручивании валкодера по диапазону и индикации рабочей частоты.
Так. Ну более-менее настроил показометр эфира. Да. Теперь и я ощутил, что сейчас делать трансиверы без показометра бандскопа это жесткий упертый анахронизм.
Эх, так как высота моего бандскопа всего 8 пикселей, надо будет еще подумать о более качественной логарифмической функции при передаче данных спектрометра на дисплей. Пока наблюдаю...
Особенно радует и веселит когда кто то на диапазоне ставит несущую и крутит ручку настройки а у меня на дисплее при этом бежит вертикальная палка отображающая его несущюю частоту.
Сейчас пока что быстродействие бандскопа максимальное, прорисовывается каждые 128 семплов ADC. Возможно надо подумать о снижении быстродействия, введением таймера на перерисовку бандскопа.
Genadi Zawidowski
04.12.2014, 18:33
WEH001602AGPP5N00001
Всё работает. WEH2002A. Надо перед выдачей графических символов (из диапазона 0..1F) проверять готовность (или ждать побольше после последней выдачи).
Хочу предупредить о крайне шумном встроенном преобразователе напряжения, что не даёт применять эти дисплеи в нашей области.
Есть одна небольшая радость - легко переделываются на SPI интерфейс.
188540
Kia2700d
04.12.2014, 19:14
Я к примеру вместо гильберта приненяю еще одно перемножение IQ со сдвигом 90 гр., что позволяет ввести коррекцию по фазе. Затем сложение и обработка.
недавно нашел классный способ получить I/Q сигнал из реальных семплов с помощью FFT. одновременно происходит преобразование гильберта, понижение частоты дискретизации в 2 раза, и сдвиг спектра на Fs/4 ! :crazy: без умножений на комплексные синусоиды.
Всё работает. WEH2002A. Надо перед выдачей графических символов (из диапазона 0..1F) проверять готовность (или ждать побольше после последней выдачи).
Хочу предупредить о крайне шумном встроенном преобразователе напряжения, что не даёт применять эти дисплеи в нашей области.
1. Приму к сведению. Да, когда работал в символьном режиме наверное быстро посылал новые символы по этому иногда смазывалось при быстрой прокрутке.
2. Да. Есть немного шума, так как принимаю сигналы на кусочек провода припаянный непосредственно в ПП. Собственно даже так шум незначительный, может будет больше на более высокочастотный диапазонах.
Но в завершенном варианте конструкции, как запланировал, радио будет находиться в герметичном металлическом корпусе, а дисплей расположится вне этого корпуса как внешняя надстройка, думаю, шум дисплея не будет слышен в таком варианте.
Пытаюсь разместить видео первоначальной работы устройства.
Пробую как работает мой будущий цифровой трансивер на прием.
АРУ еще не сделано, по этому если слышно возрастающий звук, это АРУ в фотоаппарате, не пробовал, можно ли отключить.
В середине экрана точка, это индикация участка приема на спектрометре.
Антенной является 3 метра проволока растянутая внутри помещения.
http://youtu.be/TTsfXvdJfy8
Пробую как работает мой будущий цифровой трансивер на прием
А вертикальная шкала логарифмическая?
Антенной является 3 метра проволока растянутая внутри помещения.
Приёмник звучит весьма достойно:пиво:, а такой прыти от двухстрочника я никак не ожидал. Они ведь бывают сильно тормознутые - при перестройке частоты последние три разряда кажут блёклые восьмёрки, будто отмороженные... И у Вас очень благополучная помеховая обстановка, с чем можно Вас поздравить:smile:!
Интересно, на сколько давится нерабочая боковая? И вот ещё что, покрутите настройку в телеграфном участке, особенно там, где работают на большой скорости - что-то мне кажется, что спектроскоп всё же не успевает за быстрыми сигналами.
То vadim_d
Вадим, Ваше сообщение было в 04:51 (!), Вы совсем не спите;-)?!
Поздравляю! База есть.
Пожелания:
1) надо в бэндскоп ввести усреднение, чтобы спектр не так сильно мельтишил.
2) надо увеличивать порядок фильтров, на видео слышно, как принимаются станции, расположенные сбоку.
Какая частота дискретизации?
Вадим, Ваше сообщение было в 04:51 (!)
:offtop:После перехода на зимнее время и при отсутствии поддержки Win XP приходится скручивать в нем часовой пояс, чтобы синхронизация с сервером давала нормальный результат, поэтому оно со стороны может выглядеть криво :smile:. Я вижу сейчас с другого компа (но тоже Win XP) время своего сообщения 02:51 и уже ничему не удивляюсь :smile:
А вертикальная шкала логарифмическая?
Да. Есть там логарифмическая функция перед выводом на индикатор, но с этим еще надо разбираться.
И у Вас очень благополучная помеховая обстановка, с чем можно Вас поздравить:smile:!
Интересно, на сколько давится нерабочая боковая? И вот ещё что, покрутите настройку в телеграфном участке, особенно там, где работают на большой скорости - что-то мне кажется, что спектроскоп всё же не успевает за быстрыми сигналами.
Помеховая обстановка обычкая, генераторы помех, такие как маршрутизатор, компьютер, выносной электронный модуль газового котла я не отключал. Возможно усилинее у меня небольшое, я применил всего один операционный усилитель и усиление сделал не более х10. Антенна, кусок проводника 3 метра. Сейчас сильно шумит (низкочастотно) выходной УМЗЧ TDA2003, но с этим пока не разбирался, возможно надо просто ООС загрубить его чувствительность.
Боковая полоса вроде давится, но слегонца пока еще прослушивается. Я еще не делал симетрирования и балансировки усиления сигналов I Q, еще займусть этим...
Спектроскоп сейчас не успевает за сигналами при быстрой прокрутке, потому как код еще не оптимизировал, при прокрутке сейчас каждый прокрученный шаг энкодера вызывает функцию обновления индикатора (цифр) и на это уходит процессорное время (плюс еще не оптимизировал задержки проца при передаче данных по шине к индикатору), на математику спектрометра нехватает процессорного времени. Но это разрешится ближайшие дни.
Звук при этом не прерывается, так как у математики обработки данных кодека и математики цифрового фильтра более высокий приоритет.
Что-то цитирование не сработало...
Сообщение от rx9cim:
2) надо увеличивать порядок фильтров, на видео слышно, как принимаются станции, расположенные сбоку.
А возможно просто полоса шире трёх КГц.
С полосой еще буду разбираться, но я думал это нормально когда свиристит станция находящаяся слева на условном соседнем канале, как бы сильно основному приему не мешает, но и с этим буду еще экспериментировать.
Усреднение уровней спектроскопа сделал, точнее не усреднение, а просто создал искусственно инертность, вроде получилось красивей.
Приделал я программные регуляторы уровня по входу АЦП (-33 ... +6 дБ) и по выходу на динамик (-75 ... +6 дБ), покрутил тот и другой, с уровнем по входу вроде все понятно, антенны разные, шумы разные, надо подстраиваться, а вот с громкостью на динамик пока непонятно, не разобрал еще сакрального смысла, регулировать громкость можно и той и другой ручкой, может и не делать не столь важную крутилку?
Или это ради спектрометра? Ну чтоб крутилкой по входу правильно выставить отсчет спектрометра и не перегруз уровня по спектру, а другой крутилкой по выходу если что для покоя близких громкость убавить?
Добавлено через 17 минут(ы):
Дисплейчик не долго исправно поработал, не научились Вислеи органические светодиоды наверное еще качественно делать, хотя в смартфонах Нокия более сложный органик дисплей вроде хорошо работает.
Один вертикальный столбец пошла засветка, сначала редко появлялась, а теперь постоянно, в вчера и ложная горизонтальная линия стала проясняться. А обещали 10 т. часов работы.
Походу придется продумывать корпус на более дорогой VFD дисплей.
189066
Добавлено через 14 минут(ы):
Да. Дисплей будет шире, на 100 точек по горизонтали, так и спектрограмма более качественно разместится, для спектрограммы требуется в идеале поле шириной 128 точек. Но теперь не поместится классический энкодер, который раньше планировалось разместить справа от дисплея, все-таки придется наверное пилить емкостной тачпад от смартфона и размещать поверх спектрометра, чтоб вместо энкодера для прокрутки по частоте, пальцем тыкать или двигать спектрограмму.
В индикаторе M202MD15AJ, hd44780 совместимом, нет графического режима, могу ли я для отображения спектрометра использовать в таком случае вариант - в реальном времени записывать в CGRAM фрагмент спектрограммы 5х8 точек, далее этот фрагмент как символ определенный пользователем выводить на индикатор задав код адрес DDRAM ?
Всех приветствую!
а вот с громкостью на динамик пока непонятно, не разобрал еще сакрального смысла, регулировать громкость можно и той и другой ручкой, может и не делать не столь важную крутилку?
Ну, первая-то крутилка очень важна будет, когда к полноразмерным антеннам на НЧ диапазонах подключитесь ;-), а вот вторую, возможно, делать программно не очень-то и нужно - проще аппаратно. Всё зависит от того, что позволяет "машинный ресурс". А вот мне интересно - чем физически осуществляется регулировка уровня на входе АЦП? Если это не резистивный АТТ, то эффект от такой регулировки невелик - IMD появятся на самих элементах регулировки. Я вовсе не склонен "учить Вас жить", но эти вещи лучше учесть на стадии проектирования - чтобы не пришлось возвращаться к ним впоследствии.
И вот ещё что, Вы бы представились - не хочется обращаться к Вам по нику, типа, "здравствуйте, Слесарь" :-)... Есть же такая штука, как подпись!
Добавлено через 7 минут(ы):
Усреднение уровней спектроскопа сделал, точнее не усреднение, а просто создал искусственно инертность, вроде получилось красивей.
Очень полезная вещь. Если обратили внимание, то во всех SDR прогах такая фича имеется.
Спасибо за пояснения.
Вот, тут показаны регулировки по входу и по выходу.
189102
Динамик подключен к выходу на наушники усиленный TDA2003, прием ведется по LINEIN, передача по OUT, микрофон MIC.
Вот, что может быть? Что за засветка появилась? Наверное выходные ключи микрухи дисплея вышли из строя? И недели индикатор не отработал.
http://electronix.ru/forum/index.php?act=attach&type=post&id=88678
Наверное выходные ключи микрухи дисплея вышли из строя?
Или в софте какой баг завелся? :smile: Засветка возникает сразу после подачи питания или после инициализации? Для перестраховки можно попробовать чисто статическую картинку, чтобы исключить проблемы с таймингом при обращении к контроллеру дисплея
Засветка появляется после поступления команды lcd_write( 0x0C ); // вкл.дисплей
Добавлено через 34 минут(ы):
Жесть. Вертикальная блеклая полоса, яркость постоянна, это не матричное свечение, там нет целевых пикселей. Это промежуток между знак-местами.
Горизонтальная блеклая полоса, это целевые пиксели знак-мест, яркость не постоянна, чем больше заполнен светящимися пикселями нижний ряд знак-мест, тем светит ярче.
На неделе хочу заняться калибровкой квадратурных сигналов для еще лучшего подавления боковой полосы. Надо ли делать коррекцию нуля уже оцифрованной магнитуды сигналов I Q ? Достаточно ли будет балансировки усиления сигналов I Q с шагом в 1.5 дБ ?
Вот как работает сейчас. По прежнему антенной является кусок провода 4 м. под потолком в помещении. Динамик находится сзади радио. Прием ведется в середине спектрограммы, под точкой разделяющей кГц и Гц показометра частоты приема. Спектрограмма в полосе приема искажена, вырезано пару кГц полосы, ну типа тесно на дисплее, пока что получилось как-то так. За дисплеем две крутилки, левая -чувствительность по входу, а правая это громкость динамика.
http://youtu.be/UVnFY9k2_TU
http://youtu.be/RVO6DTFA9k0
Genadi Zawidowski
11.12.2014, 02:50
заняться калибровкой квадратурных сигналов для еще лучшего подавления боковой полосы
Чисто размышления... И охота Вам вслед за всеми по многократно уже пройденной дорожке идти? Замахнуться на DDC/DUC и забыть о проблемах калибровки (и всех других, специфических для аналоговых квадратурных трактов)? Вот на habarhabar есть даже проекты пиёмников - с 12-ти битным АЦП, но оно РАБОТАЕТ. Оставите обработку как сейчас, в dsPIC.
Геннадий, а можно прямую ссылку?
Замахнуться на DDC/DUC и забыть о проблемах калибровки (и всех других, специфических для аналоговых квадратурных трактов)
Да. Следующий проект будет без аналоговых трактов. Если конечно к тому времени не надоест этим заниматься.
Ну а сегодня надо сделать программную компенсацию издержек балансировки аналоговой части схемы.
Genadi Zawidowski
11.12.2014, 03:15
Прошу: Простой SDR приёмник на ПЛИС (http://habrahabr.ru/post/204310/)
Автономный SDR приёмник на ПЛИС (http://habrahabr.ru/post/237859/)
Вот как работает сейчас.
Круууто! Замечательный результат получился.
Там станции ниже по частоте свиристят, а те которые выше по частоте практически не слышно, помогает аналоговое противофазное подавление верхней боковой полосы. Думаю причина, почему станции за пределами пропускной способности цифрового фильтра проникают, как будь-то внутри кодека проникают со входа на выход в обход АЦП и ЦАП, попробую нажать паузу DSP и послушать останутся ли свиристящие станции.
Отвечая на вопрос автора темы скажу, что подстройка по фазе должна быть хотя бы 0.05 градуса, по амплитуде 0.01.
Делаю 16-битные регуляторы для коррекции сигналов I Q.
Надо учитывать, что коррекция от частоты зависит. На одном диапазоне будет одно, на другом - другое.
Ладно. С фильтрами SDR-cube понятно. Там фильтрация не лучше -40 дБ (если конечно я все правильно сделал. Надо делать другой фильтр. Digital Filter Design for dsPIC только Lite версия, по Чебушеву обещает мне такой фильтр на 2400 Гц.
189328
если так оно и будет, как думаете, это нормально для радио?
Понемногу вчитываюсь в "Лайонс Р. Цифровая обработка сигналов", для начала попробую подключать типовые решения полосового фильтра, а со временем может откроется как создать свой код фильтра.
Kia2700d
13.12.2014, 03:22
"Лайонс Р. Цифровая обработка сигналов"
зе бест бук! особенно раздел в конце с 'трюками'. например, как оценить абсолютное значение комплексного сигнала а+bi, sqrt(a^2+b^2) без извлечения кв. корня. у пифагора сейчас вот такие глаза: :shock:
понял я свою ошибку, почему при отстройке от станции на 3 кГц, станция подавляется полосовым фильтром не полностью. Частоту семплирования АЦП я применил 48 кГц, а цифровой полосовой фильтр рассчитан на частоту семплирования 8 кГц. Надо пересчитывать....
У меня как у человека начинающего в радио и DSP обработке есть пару вопросов.
С частотой дискретизации, коэффициентах фильтра и панорамой вроде разобрался. Хоть частота семплирования фильтра стала 48 кГц, после подстановки более правильных коэффициентов для этой частоты шума стало значительно меньше, станции при отстройке на 3 кГц уже не сверистят как раньше, с меньшей частотой дискретизации звучит совсем не кошерно, как СВ ДВ радио, 48 кГц, звучит на 80м. почти как FM радио, а 96 кГц проц. уже не тянет, затыкается, хотя возможно можно будет дополнительно оптимизировать код.
1. сигналы I Q еще не балансировал, еще не закончил с органами управления, разбалансировка довольно большая, боковая полоса давится всего на -24 дБ, может ли из-за этого просматриваться на спектрограмме когда идут сильные станции их зеркальное отражение со значительно низким уровнем на противоположной стороне панорамы, относительно середины где ведется прием?
2. Обычно все станции на спектрограмме отображаются правильно, особенно телеграфные, одним...тремя столбиками, в зависимости от занимаемой полосы, но бывает внезапно появляются какие-то станции вроде SSB которые на панораме идут двумя равными зеркальными столбиками, когда кручу настройку в одно или другую стороны, столбики сдвигаются или раздвигаются относительно середины, прием начинается кода столбики сойдутся вместе в середине панорамы где ведется прием, что это за станции? , не пролазят ли это станции с более высокого диапазона? и на панораме отображаются гармоники.
189521
Powered by vBulletin® Version 4.1.12 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot