Наверное, Вы правы.
Вообще, я полагаю, SDR это «оцифровка эфира», а далее работа с массивом данных — это демодуляция. То, что демодуляция — любая, а еще и одновременно их может быть несколько, безусловно отлично!
По поводу терминологии, я полагаю, что если есть всего одно преобразование (квадратурное), и далее сразу оцифровка обоих каналов, то это SDR. Как я писал ранее, такой приемник неплох для приема какого-то сигнала, но динамический диапозон — мал, и по блокированию и SFDR и ENOB. Причем чем шире полоса, тем хуже характеристики.
Там где 2 и более преобразований, я считаю такой приемник уже гибридным, здесь SDR есть всего-лишь демодулятор. Кстати если отсутствует квадратурный модулятор, а низкая ПЧ оцифровывается, то уже неплохой приемник получается.
Ну, а если еще есть преселекторы диапозонов, синхронные ветки трактов, переключаемые фильтры в ПЧ, но тем не менее АЦП на выходе — не знаю, является и это SDRом. Наверное нет.
З.Ы. Был такой замечательный комплекс радиомониторинга REI OSCOR. Но несколько лет назад вышел OSCOR green. Мы взяли такой на «попробовать». По началу все было красиво. И диапозон, и скорострельность, и красивый дисплей с отличной графикой. Но, когда за окном строители нажимали на тангенту LPD радиостанции, OSCOR затыкался… Всего 500 мВт, и такой эффект.
1. сканирования и прослушки эфира
2. отладки устройств IoT и прочих
3. попытки взлома устройств IoT и прочих (например с limesdr можно свою базовую станцию создать)
4. для всяких разных экспериментов с радиосвязью
и т.д…
Абсолютно верно!
Примерно это я и имел ввиду, когда утверждал, что SDR — игрушка для любителя.
:)
Описание подобных «лазеек» достойно отдельной статьи на Хабре, тем более вы умеете объяснить понятным языком.
Спасибо на добром слове!
По поводу статьи, сейчас на другую тему коплю материал (для дебюта). Но, об этой теме тоже подумаю, тем более, накоплено много подобных «лазеек».
Получается что-то вроде ШИМ-а этим самым 1-битным «сигналом» который сглаживается в аналоговый сигнал.
В принципе, я Вас понимаю. И выглядит неплохо, но на практике, ИМХО все может оказаться иначе. Доведем, ко крайнего (абсурдного) случая. :)
Что, если мы возьмем компаратор (сверхвысокоскоростной), подключим к отрицательному входу некий опорный источник, и через резистор 75 ом, подключим положительный вход туда-же. Через емкость подключим к положительному входу антенну. На выходе компаратора будет шум, цифровой однобитный. Предположим, делаем выборки с частотой 100 МГц.
Вопрос! Какие сигналы и с какими характеристиками можно вытянуть из такого приемника?
Полагаю, это будет работать как частотомер. На выходе будет меандр с частотой самого мощного сигнала в полосе. И все. Скорее всего, да, скорее всего, удастся вытащить частотную модуляцию этого сигнала. Полагаю, что остальные сигналы пропадут.
Но это ИМХО.
Нет, не удалось «просто достичь сложного». Было ТЗ, и мы делали ВЧ часть, потом АЦП в ПЧ. И в общем-то все было нормально. Но как только появлялись «менеджерские» идеи упростить и удешевить конструкцию, а также «добавить современных плюшек», так сразу проект превращался в затяжную жевачку.
Я не против SDR, совсем нет. Просто я отношусь к этой технологии как (я уже писал) к ардуине.
Каждый приемник для чего-то создан. Например, ФМ (УКВ) приемник создан (и разработан), для приема радиовещательных станций. А приемник сотового телефона, для приема сигналов базовой станции. И каждый приемник можно сравнивать с другими такими-же в своем круге назначения.
это значит что м.р. этого АЦП будет иметь вес 300мкВ — порядок чувствительности обычных КВ приемников, а на ДВ и СВ это даже излишняя чувствительность
Да, только это чувствительность «однобитного сигнала», то есть если Вы примете такой сигнал, то в плане АМ можете сказать только есть он или нет. Оценить его амплитуду Вы не сможете.
Кроме того МЗР всех АЦПов прилично шумят. Есть такая характеристика ENOB — Effective Numbers Of Bits. Это один из ограничивающих факторов. И считать, что 12 бит, это ДД в 96 дБ, из-за этого ограничения не очень верно. :)
Если помеха сильнее чем ДД приемника, не справятся ни SDR, ни аналоговый супергетеродин. Ведь для нейтрализации помехи вводим антенный аттенюатор, который устранит перегрузку от помехи, но вместе с тем задавит полезный сигнал, если он слабый.
Абсолютно верно!
Но есть лазейка — технология. Как называется не помню, но не раз применял, и да работает.
Суть в том, что в качестве гетеродина используется не синус, а шпс. То есть при первом преобразовании гетеродин сначала модулируется неким шумом, по некоторой самонекоррелирующей ПСП. Сигнал гетеродина теперь имеет не конкретную частоту, а полосу частот с центром в прежнем месте, но с полосой (например 1 МГц). Умножая полосу принимаемых частот на такой гетеродин, в ПЧ мы получаем не набор «палок» как в оригинальном эфире, а набор «холмиков». После всех преобразований, в последней ПЧ, перед демодулятором — умножаем ПЧ снова на эту-же ПСП синхронно. И происходит сужающая корреляция, все «палки» снова восстанавливаются как в оригинальном эфире.
Смысл? Два смысла :)
Во первых динамика по перегрузке, если есть мешающий мощный сигнал, то в первом смесителе он будет размыт в широкую полосу, как и все остальные сигналы, но потеряет амплитуду. Теперь сигналы проходят во всех трактах, как-бы поперек.
И во вторых, тут говорили про фильтры (аналоговые) и их прямоугольность. Вот как раз, описанная технология позволяет не прогонять сигнал, через необходимо-узкий фильтр, а наоборот, расширить сигнал под ширину фильтра.
Что дает, фактичетки, весьма узкополосное выделение сигнала, широкополосным фильтром.
И еще, весь шум, который привнесут тракты усиления в сигнал, на последнем этапе, в последней ПЧ будут размыты. Что еще один плюс.
Вот вам парочка «игрушек» в которых используют технологию SDR
В приведенных Вами изделиях от SDR только АЦП, установленная после серьезного RF Frontend.
Вы батенька отстали от жизни.
Почти все верно :) Только не «отстал от жизни», а «съел собаку». Серьезно, попробовал всевозможные решения SDR, и участвовал не в одном и не в двух НИРах, по СВЧ системам приема и обработки сигналов. Как только начиналось введение в SDR, вся разработка шла по бороде, как по характеристикам изделия, так и по геморрою в коллективе, когда программисты и «радисты» не понимают друг друга.
Ключевым преимуществом SDR является взаимодействие между средствами радиосвязи предыдущих поколений и современными системами.
Ключевые преимущества — да. Может ключевые недостатки приведете? И что — чего перевесит?
Серьезно, SDR это как ардуина — имеет низкий порог вхождения в тему, но реально является лишь, как я и писал, игрушкой для начинающих. SDR — прост в разработке, и это его единственное преимущество.
Каждый раз когда Вы пытаетесь улучшить какой-то из параметров, Вы отдаляетесь на шаг от SDR и приближаетесь на шаг к классическому приему (добавляя RF Frontend).
Характеристики «чистого» SDR — никакие. Как и (готов спорить) квадратурный демодулятор плохо годится для анализа спектра. Для приема сигнала — Да, хорошее решение (простое). Для анализа спектра — нет. Почему? Разбаланс фаз и амплитуд в каналах I/Q не дает разделить левую часть спектра от правой на уровне выше 60 дБ, вот Вам и динамический диапозон. Про ширину полосы, преселекторы, коэффициенты шума, АРУ, и прочее надо говорить? Если что, я готов. :)
З.Ы. Еще раз, приведенные Вами примеры во-первых не чистый SDR, а лишь ЦОС в тракте ПЧ, ЕВПОЧЯ. И во-вторых даже такие приемники (гибридные) обладают рядом детских болезней SDR, но зато их разработка была дешевле и проще.
Для включения камеры надо подать 12в на определенный провод приходящий к магнитоле (ну, там было так). Этот провод шел от селектора АКПП, режим «R». Порезал я этот провод, и вставил диод туда, другой диод тоже в эту точку, чтобы при активации монитора моей системой задний ход не включался. Коммутатор камер — также на мини реле. Остальное на ATTINY2313, один провод еще на селектор, который к паркингу. Один на определение скорости — он тоже шел на магнитолу (там есть функция увеличения громкости от скорости). Все функции программно.
Сделал в 2014м году, 5 лет работает без проблем.
А совсем по простому, потому что, мне не потребовалось разбираться с CAN, и дело свелось к подключению нескольких проводов. Пришлось только посчитать отношение частоты импульсов к скорости движения, и сделать прерывание по пересечению границы в 12 км/ч. Такая скорость тоже там сама собой получилась, я не стал там подгонять (изначально 10 км/ч хотел). Но, при имеющимся кварце там так совпало, что счетчик переполняется при скорости ниже 12, а при выше не переполняется…
Я, когда в машине жены такое делал, то передняя камера выключается если рычаг переводится в паркинг, или скорость машины становится больше 12 км/ч. или проходит 20 сек после последнего переключения.
Правда, я никак не использовал CAN. Все совсем по простому сделал.
Я ассемблерщик, люблю выжать из процессора максимум, иногда перестановка местами двух команд, может дать заметный прирост в производительности.
Кроме того, на борту STM32 имеется аппаратный SDIO интерфейс, что позволяет писать на карту очень быстро.
А как вы думаете, что более энергозатратно: кодировать этим кодеком или писать сырой поток на флеш-карту?
Как раз я полагаю, что сжимать надо, и не для объема носителя, а для более редкого обращения к носителю. То есть, оцифровываем, сжимаем, копим в ОЗУ, а карту, «будим» раз в минуту «к примеру» и перегоняем накопленное. Флеш память весьма прожорлива по питанию, особенно при записи, чем реже мы к ней обращаемся и чем быстрее пишем, тем меньше она успеет сожрать за это время.
Вот тут не понял. Это чтобы динамический диапазон так повысить?
Не совсем, от динамического диапозона никуда не уйти, сколько есть бит, столько и останется. Есть, правда ухищрения с компараторами и ОУ, но, вряд ли это здесь подойдет. АРУ помогает использовать динамический диапозон наиболее полно, дает качество, ослабляет шумы. Но, по определению, выделить слабые звуки на фоне сильных не помогает.
В stm32 — 12 бит, есть на борту два АЦП, а в некоторых 3 штуки.
Наверно про ослабления речь шла в контексте банальных резисторов. Да? Типа после операционника усиленный сигнал раздваивается и через разные резисторы поступает наразные каналы АЦП, а мы потом выбираем тот канал, который сильнее всего скачет?
Да, примерно так. Смотрим какой канал зашкаливает от сильного усиления, и выбираем канал с меньшим усилением, на лету. Можно, также управлять усилением ОУ, через отдельные ноги процессора. Переключая их (ноги) из состояния ввода (hi-z) в состояние выхода с нулем на выходе, то есть подтягивая к земле, что дает изменение характеристик сопротивления в обратной связи в ОУ. Это, как бы, цифровой способ управления аналоговым ОУ. Позже распишу по подробнее.
Для прототипа можно сделать битрейт… хм… какой получится. Надо попробовать. Нету у меня опыта в таких вещах. Не знаю как звучать будет, как распознаваться потом такое будет…
Тут важна одна деталь. Если говорить прямо в микрофон (ну как в телефоне, например), то особо, ничего не требуется. А вот если предполагается, что нужно захватывать посторонние звуки, речь собеседника, музыку в дали, шум ветра, и т. д., то для дальнейшей отчистки нужен большой объем данных. Например, если записать и оцифровать речь на фоне музыки с частотой дискретизации 10кГц, а музыка имеет частоты вплоть до 15-20кГц, тогда все частоты, что выше 5 кГц, завернуться, перемешаются и попадут в сигнал в качестве шума. Значит, или потребуется хороший аналоговый фильтр в микрофонном усилителе, или нужно оцифровывать с большей частотой дискретизации и фильтровать программно. КИХ, например. Иначе потом не разделить.
Чем меньше кода, тем меньше ошибок и неожиданных побочных эффектов. Я за аппаратный вариант. Мне кажется и схематически это даже будет попроще, чем мерять напряжение через АЦП и как-то всем этим жонглировать.
Согласен, однако в современных аккумуляторах, особенно, в которых литий, проблема в кривой заряда разряда. Она не такая, как например, в конденсаторах.
Именно поэтому, ноутбуки, телефоны, планшеты, и прочая современная техника так странно расчитывает время оставшегося заряда. Там, буквально, меряется ток, и исходя из него и емкости расчитывается время.
То есть, при заряде счетчик считает в плюс, при разряде в минус, а к напряжению и емкости это подвязывается с помощью алгоритмов, подобных фильтру Калмана. Хоть и сумбурно, но так.
Я почему-то думал всё сильно сложнее и вообще, кодек обязательно нужен аппаратный… не приходило как-то в голову писать сырой поток
Ну, любое аппаратное решение/функция, это как минимум один корпус микросхемы, а значит потребление. И не только, эту микросхему надо закупать, припаивать, обвязывать. Выход из строя тоже не последнюю роль играет.
Буду искать кто прям на пальцах покажет что куда в макетку втыкать, чтобы звук писался=)
Макеток очень много, и не дорогие. спаяв к ним микрофонный усилитель на маленькой (а может для начала и не очень) платке, уже сразу можно баловаться кодом, посылая его в комп по USARTу. И отлаживать кодек. :)
В дальнейшем еще напишу по теме.
Здесь, действительно надо прикинуть габариты изделия, и примерный внешний вид. Тогда я бы придумал бы конструкцию поподробнее. Может даже схемку нарисую.
Ну, во первых все, что Вам написали по поводу «камуфляжа» и внешнего вида изделия — не пустой звук. Это просто к тому, что не нужно от этого отмахиваться и легко попасть в беду. Я когда этим занимался, делал не личную задумку, а работал в некоей конторе, которая имела лицензию на разработку и производство СТС. Но, грубой теорией поделюсь.
Сейчас, я бы присмотрелся к STM32. Во первых, они весьма миниатюрны, у них большой обьем ОЗУ, ПЗУ. Есть на борту часы реального времени, если поставить миникварц на 32768 гц. В одном из моих проектов на таком контроллере успешно применяется кодек АДИКМ.
Вам нужно определиться с динамическим диапозоном, то есть решить сколько бит на отчет требуется. Микрофонный усилитель штука простая, для обычного подключения к АЦП контроллера, достаточно задать смещение в «полисточника», это означает, что при отключенном усилителе на ноге должно быть полпитания (ну, например, 1.5 в). Через емкость 0.33 мкф, в эту точку подаете сигнал.
Если есть ЦАП на борту, то очень удобно использовать его в качестве такого смещения, которое можно еще и программно корректировать. Для управления усилением, можно использовать несколько входов АЦП. То есть сигнал усиливается, потом проходит несколько ступеней ослабления, и каждая ступень заводится на свой вывод АЦП. А контроллер смотрит с какого брать сигнал, и тем самым подбирает уровень. Частоту дискретизации, конечно же, лучше выбрать повыше, а потом сделать децимацию, под нужный поток — уменьшит уровень гранулярного шума.
Теперь про аккумулятор. А зачем Вам эффективная стабилизация питания? Если Вы возьмете одну банку LI-PO аккумулятора, то его диапозона питающих напряжений хватит на все. Заряженный 4.2в, разряженный 3в. И микроконтроллер и sd карта и микрофонный усилитель будут нормально работать. Ну может sd карте потребуется небольшое ограничение (но это скорее «для порядка»).
Плавания частоты при работе от кварца — тоже не будет.
Цепь заряда, можно заморочиться с специализированной микросхемой, там много плюшек в виде контроля заряда, разряда, измерений токов и напряжений, и все это по какому нибудь SPI интерфейсу может общаться с контроллером. Но, при минимализме, можно поставить классический стабилизатор тока на одном транзисторе, а остальное написать программно в контроллере.
В общем, как-то так.
Лет 10 назад, делал такое. И даже удалось сделать перстень с диктофоном внутри. Делалось все на атмеге8, в самом миниатюрном mlf корпусе. И sc70 операционный усилитель, в качестве микрофонного. То есть все состояло из Атмеги, опера, и microSD.
Остались наработки.
Когда меня просят «на пальцах» рассказать про БПФ и ДПФ, особенно часто об этом просят люди, которые «понимают в технике», то обычно я начинаю рассказывать примерно так: Фурье — это тот же самый радиоприемник, только математический. В обычном приемнике входной сигнал умножается (смесителем) на гетеродин. Гетеродин — это синусоидальный сигнал выработанный локально (в приемнике), если после такого умножения выделить постоянную составляющую, то она будет пропорциональна амплитуде сигнала на частоте гетеродина.
На самом деле все немного сложнее, гетеродин должен быть двойной (синусоида и косинусоида), если умножить анализируемый сигнал на синусоиду и косинусоиду, а потом усреднить все полученные значения, то мы получим вектор, где длинна вектора есть амплитуда, а арктангенс составляющих есть разность фаз, между сигналом и гетеродином.
Так вот если постоянно менять частоту гетеродина, то мы просканируем все частоты и получим спектр. Так работают (работали) аналоговые спектроанализаторы.
ДПФ делает то-же самое, абсолютно. Только не в реальном времени и не с живым сигналом, а с готовым — оцифрованным массивом данных.
БПФ модифицированный и оптимизированный алгоритм, который работает быстрее засчет уменьшения количества умножений. В ДПФ каждая выборка сигнала умножается на синус и косинус «гетеродина», но выборки синусов и косинусов разных частот совпадают во времени, и чтобы не использовати их повторно, они используются оптимально, засчет сортировок и перестановок.
Ну, а дальше уже формулы.
Статья отличная, прочитал с огромным удовольствием, автору спасибо!
Ну, например, установкой квадратурного модулятора в тракте каждого антенного элемента. С помощью КМ, можно вращать фазу на все 360 градусов, а еще и амплитудой управлять. Это если передатчик, а если антенная система работает на прием, то тоже самое ставится в систему первого преобразования, между смесителями и гетеродином, потом первые ПЧ объединяются.
Автору, большое спасибо, очень интересная статья!
Вообще, я полагаю, SDR это «оцифровка эфира», а далее работа с массивом данных — это демодуляция. То, что демодуляция — любая, а еще и одновременно их может быть несколько, безусловно отлично!
По поводу терминологии, я полагаю, что если есть всего одно преобразование (квадратурное), и далее сразу оцифровка обоих каналов, то это SDR. Как я писал ранее, такой приемник неплох для приема какого-то сигнала, но динамический диапозон — мал, и по блокированию и SFDR и ENOB. Причем чем шире полоса, тем хуже характеристики.
Там где 2 и более преобразований, я считаю такой приемник уже гибридным, здесь SDR есть всего-лишь демодулятор. Кстати если отсутствует квадратурный модулятор, а низкая ПЧ оцифровывается, то уже неплохой приемник получается.
Ну, а если еще есть преселекторы диапозонов, синхронные ветки трактов, переключаемые фильтры в ПЧ, но тем не менее АЦП на выходе — не знаю, является и это SDRом. Наверное нет.
З.Ы. Был такой замечательный комплекс радиомониторинга REI OSCOR. Но несколько лет назад вышел OSCOR green. Мы взяли такой на «попробовать». По началу все было красиво. И диапозон, и скорострельность, и красивый дисплей с отличной графикой. Но, когда за окном строители нажимали на тангенту LPD радиостанции, OSCOR затыкался… Всего 500 мВт, и такой эффект.
Абсолютно верно!
Примерно это я и имел ввиду, когда утверждал, что SDR — игрушка для любителя.
:)
Хорошо, давайте не будем.
Давайте, тогда определимся, что мы называем SDR?
Спасибо на добром слове!
По поводу статьи, сейчас на другую тему коплю материал (для дебюта). Но, об этой теме тоже подумаю, тем более, накоплено много подобных «лазеек».
В принципе, я Вас понимаю. И выглядит неплохо, но на практике, ИМХО все может оказаться иначе. Доведем, ко крайнего (абсурдного) случая. :)
Что, если мы возьмем компаратор (сверхвысокоскоростной), подключим к отрицательному входу некий опорный источник, и через резистор 75 ом, подключим положительный вход туда-же. Через емкость подключим к положительному входу антенну. На выходе компаратора будет шум, цифровой однобитный. Предположим, делаем выборки с частотой 100 МГц.
Вопрос! Какие сигналы и с какими характеристиками можно вытянуть из такого приемника?
Полагаю, это будет работать как частотомер. На выходе будет меандр с частотой самого мощного сигнала в полосе. И все. Скорее всего, да, скорее всего, удастся вытащить частотную модуляцию этого сигнала. Полагаю, что остальные сигналы пропадут.
Но это ИМХО.
Я не против SDR, совсем нет. Просто я отношусь к этой технологии как (я уже писал) к ардуине.
Каждый приемник для чего-то создан. Например, ФМ (УКВ) приемник создан (и разработан), для приема радиовещательных станций. А приемник сотового телефона, для приема сигналов базовой станции. И каждый приемник можно сравнивать с другими такими-же в своем круге назначения.
Для чего создан(ы) SDR приемник(и), из статьи?
Да, только это чувствительность «однобитного сигнала», то есть если Вы примете такой сигнал, то в плане АМ можете сказать только есть он или нет. Оценить его амплитуду Вы не сможете.
Кроме того МЗР всех АЦПов прилично шумят. Есть такая характеристика ENOB — Effective Numbers Of Bits. Это один из ограничивающих факторов. И считать, что 12 бит, это ДД в 96 дБ, из-за этого ограничения не очень верно. :)
Абсолютно верно!
Но есть лазейка — технология. Как называется не помню, но не раз применял, и да работает.
Суть в том, что в качестве гетеродина используется не синус, а шпс. То есть при первом преобразовании гетеродин сначала модулируется неким шумом, по некоторой самонекоррелирующей ПСП. Сигнал гетеродина теперь имеет не конкретную частоту, а полосу частот с центром в прежнем месте, но с полосой (например 1 МГц). Умножая полосу принимаемых частот на такой гетеродин, в ПЧ мы получаем не набор «палок» как в оригинальном эфире, а набор «холмиков». После всех преобразований, в последней ПЧ, перед демодулятором — умножаем ПЧ снова на эту-же ПСП синхронно. И происходит сужающая корреляция, все «палки» снова восстанавливаются как в оригинальном эфире.
Смысл? Два смысла :)
Во первых динамика по перегрузке, если есть мешающий мощный сигнал, то в первом смесителе он будет размыт в широкую полосу, как и все остальные сигналы, но потеряет амплитуду. Теперь сигналы проходят во всех трактах, как-бы поперек.
И во вторых, тут говорили про фильтры (аналоговые) и их прямоугольность. Вот как раз, описанная технология позволяет не прогонять сигнал, через необходимо-узкий фильтр, а наоборот, расширить сигнал под ширину фильтра.
Что дает, фактичетки, весьма узкополосное выделение сигнала, широкополосным фильтром.
И еще, весь шум, который привнесут тракты усиления в сигнал, на последнем этапе, в последней ПЧ будут размыты. Что еще один плюс.
Абсолютно.
В приведенных Вами изделиях от SDR только АЦП, установленная после серьезного RF Frontend.
Почти все верно :) Только не «отстал от жизни», а «съел собаку». Серьезно, попробовал всевозможные решения SDR, и участвовал не в одном и не в двух НИРах, по СВЧ системам приема и обработки сигналов. Как только начиналось введение в SDR, вся разработка шла по бороде, как по характеристикам изделия, так и по геморрою в коллективе, когда программисты и «радисты» не понимают друг друга.
Ключевые преимущества — да. Может ключевые недостатки приведете? И что — чего перевесит?
Серьезно, SDR это как ардуина — имеет низкий порог вхождения в тему, но реально является лишь, как я и писал, игрушкой для начинающих. SDR — прост в разработке, и это его единственное преимущество.
Каждый раз когда Вы пытаетесь улучшить какой-то из параметров, Вы отдаляетесь на шаг от SDR и приближаетесь на шаг к классическому приему (добавляя RF Frontend).
Характеристики «чистого» SDR — никакие. Как и (готов спорить) квадратурный демодулятор плохо годится для анализа спектра. Для приема сигнала — Да, хорошее решение (простое). Для анализа спектра — нет. Почему? Разбаланс фаз и амплитуд в каналах I/Q не дает разделить левую часть спектра от правой на уровне выше 60 дБ, вот Вам и динамический диапозон. Про ширину полосы, преселекторы, коэффициенты шума, АРУ, и прочее надо говорить? Если что, я готов. :)
З.Ы. Еще раз, приведенные Вами примеры во-первых не чистый SDR, а лишь ЦОС в тракте ПЧ, ЕВПОЧЯ. И во-вторых даже такие приемники (гибридные) обладают рядом детских болезней SDR, но зато их разработка была дешевле и проще.
Сделал в 2014м году, 5 лет работает без проблем.
А совсем по простому, потому что, мне не потребовалось разбираться с CAN, и дело свелось к подключению нескольких проводов. Пришлось только посчитать отношение частоты импульсов к скорости движения, и сделать прерывание по пересечению границы в 12 км/ч. Такая скорость тоже там сама собой получилась, я не стал там подгонять (изначально 10 км/ч хотел). Но, при имеющимся кварце там так совпало, что счетчик переполняется при скорости ниже 12, а при выше не переполняется…
Правда, я никак не использовал CAN. Все совсем по простому сделал.
Я ассемблерщик, люблю выжать из процессора максимум, иногда перестановка местами двух команд, может дать заметный прирост в производительности.
Кроме того, на борту STM32 имеется аппаратный SDIO интерфейс, что позволяет писать на карту очень быстро.
Как раз я полагаю, что сжимать надо, и не для объема носителя, а для более редкого обращения к носителю. То есть, оцифровываем, сжимаем, копим в ОЗУ, а карту, «будим» раз в минуту «к примеру» и перегоняем накопленное. Флеш память весьма прожорлива по питанию, особенно при записи, чем реже мы к ней обращаемся и чем быстрее пишем, тем меньше она успеет сожрать за это время.
Не совсем, от динамического диапозона никуда не уйти, сколько есть бит, столько и останется. Есть, правда ухищрения с компараторами и ОУ, но, вряд ли это здесь подойдет. АРУ помогает использовать динамический диапозон наиболее полно, дает качество, ослабляет шумы. Но, по определению, выделить слабые звуки на фоне сильных не помогает.
В stm32 — 12 бит, есть на борту два АЦП, а в некоторых 3 штуки.
Да, примерно так. Смотрим какой канал зашкаливает от сильного усиления, и выбираем канал с меньшим усилением, на лету. Можно, также управлять усилением ОУ, через отдельные ноги процессора. Переключая их (ноги) из состояния ввода (hi-z) в состояние выхода с нулем на выходе, то есть подтягивая к земле, что дает изменение характеристик сопротивления в обратной связи в ОУ. Это, как бы, цифровой способ управления аналоговым ОУ. Позже распишу по подробнее.
Тут важна одна деталь. Если говорить прямо в микрофон (ну как в телефоне, например), то особо, ничего не требуется. А вот если предполагается, что нужно захватывать посторонние звуки, речь собеседника, музыку в дали, шум ветра, и т. д., то для дальнейшей отчистки нужен большой объем данных. Например, если записать и оцифровать речь на фоне музыки с частотой дискретизации 10кГц, а музыка имеет частоты вплоть до 15-20кГц, тогда все частоты, что выше 5 кГц, завернуться, перемешаются и попадут в сигнал в качестве шума. Значит, или потребуется хороший аналоговый фильтр в микрофонном усилителе, или нужно оцифровывать с большей частотой дискретизации и фильтровать программно. КИХ, например. Иначе потом не разделить.
Согласен, однако в современных аккумуляторах, особенно, в которых литий, проблема в кривой заряда разряда. Она не такая, как например, в конденсаторах.
Именно поэтому, ноутбуки, телефоны, планшеты, и прочая современная техника так странно расчитывает время оставшегося заряда. Там, буквально, меряется ток, и исходя из него и емкости расчитывается время.
То есть, при заряде счетчик считает в плюс, при разряде в минус, а к напряжению и емкости это подвязывается с помощью алгоритмов, подобных фильтру Калмана. Хоть и сумбурно, но так.
Ну, любое аппаратное решение/функция, это как минимум один корпус микросхемы, а значит потребление. И не только, эту микросхему надо закупать, припаивать, обвязывать. Выход из строя тоже не последнюю роль играет.
Макеток очень много, и не дорогие. спаяв к ним микрофонный усилитель на маленькой (а может для начала и не очень) платке, уже сразу можно баловаться кодом, посылая его в комп по USARTу. И отлаживать кодек. :)
В дальнейшем еще напишу по теме.
Сейчас, я бы присмотрелся к STM32. Во первых, они весьма миниатюрны, у них большой обьем ОЗУ, ПЗУ. Есть на борту часы реального времени, если поставить миникварц на 32768 гц. В одном из моих проектов на таком контроллере успешно применяется кодек АДИКМ.
Вам нужно определиться с динамическим диапозоном, то есть решить сколько бит на отчет требуется. Микрофонный усилитель штука простая, для обычного подключения к АЦП контроллера, достаточно задать смещение в «полисточника», это означает, что при отключенном усилителе на ноге должно быть полпитания (ну, например, 1.5 в). Через емкость 0.33 мкф, в эту точку подаете сигнал.
Если есть ЦАП на борту, то очень удобно использовать его в качестве такого смещения, которое можно еще и программно корректировать. Для управления усилением, можно использовать несколько входов АЦП. То есть сигнал усиливается, потом проходит несколько ступеней ослабления, и каждая ступень заводится на свой вывод АЦП. А контроллер смотрит с какого брать сигнал, и тем самым подбирает уровень. Частоту дискретизации, конечно же, лучше выбрать повыше, а потом сделать децимацию, под нужный поток — уменьшит уровень гранулярного шума.
Теперь про аккумулятор. А зачем Вам эффективная стабилизация питания? Если Вы возьмете одну банку LI-PO аккумулятора, то его диапозона питающих напряжений хватит на все. Заряженный 4.2в, разряженный 3в. И микроконтроллер и sd карта и микрофонный усилитель будут нормально работать. Ну может sd карте потребуется небольшое ограничение (но это скорее «для порядка»).
Плавания частоты при работе от кварца — тоже не будет.
Цепь заряда, можно заморочиться с специализированной микросхемой, там много плюшек в виде контроля заряда, разряда, измерений токов и напряжений, и все это по какому нибудь SPI интерфейсу может общаться с контроллером. Но, при минимализме, можно поставить классический стабилизатор тока на одном транзисторе, а остальное написать программно в контроллере.
В общем, как-то так.
Остались наработки.
На самом деле все немного сложнее, гетеродин должен быть двойной (синусоида и косинусоида), если умножить анализируемый сигнал на синусоиду и косинусоиду, а потом усреднить все полученные значения, то мы получим вектор, где длинна вектора есть амплитуда, а арктангенс составляющих есть разность фаз, между сигналом и гетеродином.
Так вот если постоянно менять частоту гетеродина, то мы просканируем все частоты и получим спектр. Так работают (работали) аналоговые спектроанализаторы.
ДПФ делает то-же самое, абсолютно. Только не в реальном времени и не с живым сигналом, а с готовым — оцифрованным массивом данных.
БПФ модифицированный и оптимизированный алгоритм, который работает быстрее засчет уменьшения количества умножений. В ДПФ каждая выборка сигнала умножается на синус и косинус «гетеродина», но выборки синусов и косинусов разных частот совпадают во времени, и чтобы не использовати их повторно, они используются оптимально, засчет сортировок и перестановок.
Ну, а дальше уже формулы.
Статья отличная, прочитал с огромным удовольствием, автору спасибо!
Автору, большое спасибо, очень интересная статья!