Ссылочку которую Вы кинули к сожалению ютуб не пропустил и я не могу восстановить то сообщение, но я посмотрел предложенный курс по ЦОС, автор Сергиенко и я собственно о его книге на 22:03 и говорю, вроде есть и 3-е издание и думаю на 700 страницах содержится даже больше чем в курсе, хотя для тех кому нужны задания то можно и курс пройти, тем более бесплатный. ps прикреплю здесь, мне ютуб позволяет) openedu.ru/course/eltech/DSP/
@@TDMLab я когда присматривался к ЦОС, сколько книжки не открывал, все бестолку. Книжек много, информации много, а ничего не откладывается в голове. А вот курс реально хорош, т.к. помимо просто инфы даются ещё тестовые задания и лабы. Плюс можно с самим автором курса пообщаться, вопросы позадавать.
@@DirectionToTheTopникуда. у вас задача другая. Ваш сигнал дискретное значение амплитудой допустим 3,3 Вольта. Поэтому и шумы у вас должны быть тех же порядков. Я же подразумевал оцифровку сигнала (например звука) где шаг сигнала может быть 1/65536 Вольт и шумы тех же порядков.
@@Paltus667 такая же херня пишут так, что ничего не понять проще ролик посмотреть изучал сдр, там фильтры тоже были и я даже понял малость, только практикой не занимался а началось все с того, что я захотел узнать, как генерится звук компутером и как из матана получить этот код для генерации звука
После ДиХалта думал уже не будет таких крутых авторов в рунете по теме электроники, но у вас помимо высокого профессионального уровня еще есть талант делать замечательные обучающие и объясняющие материалы. Круто! Продолжайте, уверен это будет оценено растущей аудиторией
Фильтр Калмана был в квадрокоптерах, там, как раз, мат.модель нужна. Только сигналы шли из многих датчиков, по степени доверия и корреляции между датчиками как-то оценивали состояние объекта. Потом стали появляться статьи о новых алгоритмах для квадриков, там совсем тяжко понять. А до всего этого делали "сумматор" состояния, после фильтрации данных с медленного (но стабильного во времени) датчика подмешивали данные с быстродействующего (но шумного и нестабильного по времени) датчика. Объект оперативно реагирует на резкие воздействия и плавно стремится к нужному состоянию.
Спасибо! Каждый раз когда смотрю такие видео убеждаюсь, что нас в универе 6 лет учили чему-то не тому, чему надо было. Факультет элеткроники, телекоммуникации.
Область применения настолько огромна, что не знаешь, за что хвататься: частоты сигналов в живых тканях лежат в диапазоне 20 порядков величины. А все нужны. Например, этап формирования кардиогенной пластинки и первых сосудов - какая-то умопомрачительная голограммы, а ее разбор, пока еще не проведенный, очень многое даст в управлении ростом и дифференцировкой тканей. Лень писать - наиболее общих приложений в биологии о медицине навскидку с десяток.
@@ЯкСорок я не спорю, для специалистов огромная, для обычных обывателей, на кого по большей части рассчитан канал, не так и много кто будет этим заниматься. Но материал подан превосходно.
Книга Сергиенко хороша для начинающих, особенно применительно в связке с MatLab. По сути это расширенное изложение его курса лекций по DSP, читаемых в СПБ Электротехническом Университете. Для практических применений более интересна книга Ричарда Лайонса "Цифровая обработка сигналов" (Lyons "Understanding Digital Signal Processing" ), она издавалась у нас в печатном виде в середине 2000-х, но и в сети можно найти. Особенно рекомендую обратить внимание на то, что описано в приложениях.
Обычно делаю фильтр скользящего среднего из 5-7 значений, исключая самое большое и самое маленькое значение, чтобы отбросить единичные ошибки считывания. И после этого на БИХ-фильтр 1го порядка. Расчеты очень простые и работает достаточно хорошо. Кстати, подобными программными ФНЧ довольно эффективно гасится дребезг кнопок.
Может кому пригодится Я такие алгоритмы использую НЧ фильтр: temp = out + (in-out) / fsrez; out = temp; In, out - вход, выход, fsrez - число, определяющее глубину среза частот (от 2 до 1000 можете поэкспериментировать), temp - вспомогательная переменная, Частотный фильтр: fk = (2 * p i* (ff / fd) - коэффициент частоты, рассчитывается до основного цикла in = d * in + out * fk out = d * out - in * fk d - добротность (от 0 до 0.99, при 1 схема становится генератором), ff - частота настройки фильтра в герцах, fd - частота дискретизации.
15:50 1. Есть важный прием, когда при создании фильтров высокого порядка их дробят на фильтры второго порядка. Это связано с тем, что в исходном фильтре все коэффициенты приобретают очень большой разброс и начинают упираться в вычислительные ограничения. При преобразовании к каскаду фильтров второго порядка коэффициент внутри легче контролировать 2. Если соединить подряд два ФНЧ то итоговая полоса пропускания у них будет меньше, чем у каждого в отдельности.
Круть. На одном дыхании(правда с паузами, что бы успеть размотать в голове) смотрел. Лично у меня, с представлением аналоговых фильтров проблем нет (советское образование), а у автора ещё и программная реализация. Вот это я понимаю стык дисциплин. P.S. Кто все эти люди, что влепили дизлайки? :)
@@TDMLab Раньше вроде были слухи что дизлайки повышают шанс видоса зайти в рекомендации и тренды - типа горячая тема. И якобы выстреливали видосы у которых лайков и дизов было примерно поровну. Но потом мир изменился. А всем нравится - не реально, кому-то будет слишком просто и банально/обыденно, кому-то слишком сложно и непонятно. Лично мне очень зашло (весьма смотрябельно, и кода хороша в наухах особенно), ибо например так или иначе мечтаю воткнуть паяльник в ламповую Волна-К (хотяб синтезаторы AD9910 или AD9959 прикалхозить и смесители поменять, а как максимум сваять дистанционно управляемый реверсивный ламповый каскад нагруженный и расположенный около магнитной антенны с механической перестройкой вакумным КПЕ раза в 4 по частоте ), а тема ЦОС вообще и цифровых фильтров в частности так или иначе в программно-определяемом радио касается.
@@pswru Сейчас есть параметр "вовлеченность аудитории" и типа лайки и дизлайки поровну оцениваются главное чтобы было взаимодействие с видео. Но там куча алгоритмов и это лишь малая часть уравнения. Если бы DA9910 не стоил бы 4к я бы его уже давно поковырял.
@@TDMLab Ну просто генерить синус AD9910 скучновато (полагаю что написать код на асме для буратины у лично меня займёт меньше месяца)- надо именно в контексте радиоприёма как ГПД без особой фильтрации опробовать и сравнить с более грубыми собратьями в плане уменьшения гармоник/характерных призвуков, слышимых на приёме при перестройке частоты гетеродина.
@@TDMLab Кстати, про сигма-дэльта АЦП (и чисто морфологически - почему именно сигма и именно дэльта) - лично я несколько раз пытался понять как именно он работает читая доки например на 20-24 бита АЦП (например AD7710-AD7714, которые я выпросил у внедренцев промышленных весов) для мостовых преобразователей (например тензорезисторных) физических величин, но взаимосвязанная с другими знаниями в моей голове мозаика не сложилась.
@@pswru Ну типа мы дробим аналоговый сигнал на однобитный поток маленьких дельт, а потом складываем их сигмой:) th-cam.com/video/NrkFd7h6R2Y/w-d-xo.html
Медианный фильтр хорошо подходит для фильтрации широкополосного сигнала. Да, основная цель убирать выбросы, но вместе с каким нибудь другим фильтром, возрастает точность получаемых в итоге данных.
Как-то игрался на stm32F7 (216МГЦ) с отрисовкой линий алгоритмами Вуу. Сначала пользовался плавающей точкой, потом фиксированной. Так вот, несмотря на имеющийся аппаратный вычислитель float, с фиксированной точкой отрисовка была раза в 1,5 быстрее.
@@TDMLab На q15 быстрее, за счет 16бит DSP инструкций Arm Cortex M, но проблемы с танцами с масштабом и переполнением. А вот если q31 - то уже или вровень или быстрее float. Плюс - гемор геморройный с объявлением констант, особенно если массив констант надо объявить в коде и потом понять а что там собственно за коэффициенты. Придется писать отдельные вспомогательные генераторы для компа которые будут генерировать исходники с массивами неких волшебных чисел и возить их с собой с исходами и скриптами через весь проект. Так что целочисленный аппаратный умножитель никого не побеждает - даже по даташиту у FPU и ALU инструкций одинаковая скорость.
Думал, что ни к чему не смогу придраться, а всё же смог: 13:21: "тут никак не оптимизировать": если не ошибаюсь, то при большом размере фильтра становится выгоднее применить преобразование Фурье. Дважды. Сам, правда, так делать не пробовал.
Да есть такое, фильтры на БПФ. Но это уже отдельная ветка фильтров которая в мой рассказ уже не вмещалась. Современные фильтры для связи типа OFDM вроде все в частотной области работают.
Что лучше пользовать из фильтров для подавления сетевой помехи, чтоб с минимальными задержками? Крутиться должно на кортексе м3, дальше сигнал запихивается в модбас, поэтому данные нужны не чаще 7мс...
Частный случай полосно-заграждающего фильтра его еще иногда называют фильтр-пробка, в англоязычной терминологии "notch filter", а по реализации скорее всего БИХ. Порядок исходя из ТЗ.
Матлаб это замечательно, конечно, но в инженерной практике удобнее программа Filter Solutions , она позволяет проектировать и цифровые фильтры (в виде кусков кода на Си), так и схемотехнические решения активных/пассивных фильтров. Программа, конечно, денег стоит, но очень экономит время на изобретение велосипеда (есть, конечно и таблетка от жадности, но лучше в этом случае запускать в виртуальной машине без доступа к интернету, - программа собирает информацию и отправляет создателям, а те рассылают предупреждения и угрозы подать в суд).
Возможно. Никогда не пользовался этой программой и что-то мне подсказывает, что и не буду) Сейчас для каждой микропроцессорной или ПЛИС архитектуры созданы библиотеки генерации фильтров с оптимизацией и открытыми лицензиями. То что я проделал в видео было лишь примером, дающим представление о самом примитивном способе создания фильтров.
У G4 серии ядро Cortex M4, такое же как и большинства современных МК общего назначения. Преимущества при работе на ядре будут только в сравнении с F1 например которые на Cortex M3 или другими без DSP инструкций. Единственная особенность что есть у серии G4 это наличие аппаратного фильтра (FMAC), о нем я уже на этом канале рассказывал.
Коммент для продвижения канала) есть небольшая просьба, расскажи про свой 5 канальный осциллограф, задумался о покупке, и очень меня подкупают 5 каналов, есть ли в нем какие то фатальные (и не очень) недоработки? буду благодарен)
Спасибо! Он 4-х канальный с TRG OUT, из недостатков только то что ленивые разрабы перестали прошивки новые делать:) Немного подробнее есть здесь th-cam.com/video/rPNzHZdpr3M/w-d-xo.html
@@TDMLab 0_о..а я думал, что все твои видосы смотрел...блин, изначально рассчитывал на DSO4102С (20 т.р.)..а потом на твой канал наткнулся..прийдется еще копить :D..спасибо за инфу и в целом за твое творчество)
Главное не забывать что фильтрация дискретная и вся благостная картинка соответствует полосе в половину частоты дискретизации. А все что выше в исходном сигнале из-за дискретизации сворачивается и накладывается на исходный низкочастотный сигнал. Т.е. прежде чем принимать сигнал в контроллер надо аналоговым фильтром отрезать все что выше половины частоты дискретизации.
@@TDMLab Нужно такое видео. Потому как очень многие не понимают, что там не просто "забор" из АЧХ, но и преобразование спектра. Причем, эта проблема замечено даже у Fnirsi.
@@mslq Программно это сделать невозможно. Преобразование спектра происходит в момент дискретизации и что потом с полученным сигналом не делай, отделить сигнал от свернутого вниз ВЧ-шума уже нельзя.
@@mslq А вообще - многие строители роботов банальные любители которые познают наугад то, что преподавалось в ВУЗах на лекциях по автоматике или обработке сигналов. Очень многие алгоритмы они не используют только потому, что они имеют положительные обратные связи которые без изначального расчета неустойчивы и наугад трудно настраиваемые. Зачастую останавливаются максимум на ПИД.
Привет! Я правильно понял, что static переменные в примерах кода (на 14:32 например) после выхода из функции не "забываются" а продолжают висеть в памяти и при новом обращении к функции берется их значение с прошлого прохода?
Привет, а можешь разобрать проблемы которые могут возникать при переделки преобразователей-источников напряжения в источники тока? Например такие как потеря устойчивости
Я хочу переделать старый промышленный аналоговый металлдетектор для конфет под цыфровое управление, какой фильтр выбрать, с чем разбираться, я не такой умный как Вы, и буду благодарен даже за маленькую подсказку в этом вопросе, спасибо... ПС...Я посмотрел Ваш пример, так вроде бы понятно
Начать можно с осциллограммы или графика оцифровки сигнала, насколько там все плохо и какие проблемы есть. По фильтрации и не только, всегда начинают с простого, а потом как пойдет.
Ну вот, возвращаясь к нашему предыдущему разговору - так теперь раз уж вы начали разбирать цифровые фильтры то вам больше не придётся делать антидребезг аппаратно как в том известном случае, а я тогда сказал что сделал это намного красивей программно на AtTiny 10, и та шабашка имела успех у заказчика, сделано не мало экземпляров, блоки конкурента выпадали по мере эксплуатации и заменялись на мои.
Я начал разбирать цифровые фильтры лет 12 назад когда делал адаптивный эквалайзер к системе связи специальногоj назначения:) И вот до сих пор считаю, что если позволяет место лучше поставить триггеры Шмитта и уделить большее внимание действительно серьезным вещам в проекте чем борьба с каким-то там дребезгом:)
@@TDMLab А с дребезгом я больше не борюсь, я просто нужные параметры ввожу в макро, даже возможно динамически, каждый раз новые. Это намного удобней чем каждый раз триггер шмитта перед RC, потом после триггер шмитта, сами знаете, без такой цепочки не работает.
@@mslq Я не сколько не против программной реализации, и даже поддерживаю это. Можете тут оставить код или описание вашего алгоритма думаю это будет точно в тему для тех кто смотрит такие видео.
@@TDMLab Вот самый простой и очень эффективный метод: каждую миллисекунду читается вход и только например 20 раз одинаковый с предыдущими имеет какое то значение, это и будет событием 0 или 1, дальше больше - в макросе есть параметр удержание например 200, это значит что один и тот же вход повторился 200 раз это появляется событие "удержание", и так далее, удержание тоже может быть 0 или 1, и прочие, как клики, двойное нажатие и ещё всего можно напридумывать. В итоге каждый вход даёт поток событий, кому нужно какое тот его и использует, живёт событие только 1 миллисекунду - операционная система тут, по этому такая конфигурация очень удобна.
Доброго времени суток, интересует вопрос реализации рассчитанного в матлабе фильтра, на микроконтроллере STM32. В filterDesigner есть пункт Targets>Generate C header... при этом он создает файл .h, но не совсем понятно как дальше использовать. По умолчанию с плавающей точкой двойной точности, имеется возможность перейти к целочисленной математике. Данную тему только начинаю осваивать, может быть я смотрю изначально в неправильном направлении подскажите что и как. Буду крайне благодарен.
Направление точно правильное, но лично я не использовал матлаб как кодогенератор, хотя это интересно. Вообще должно быть по идеи 2 файла хедер и си-шный файл и мы их просто к проекту прикрепить должны и вызвать фильтр как функцию. А что в этом хедере?
@@TDMLab могу ошибаться в терминах, но вроде две структуры в виде матрицы 3 столбца и строк равных порядку фильтра (могу ошибаться). При выборе плавающей точки двойной точности, тип real 64, а целочисленная int 32. Прошу прощения если очевидное сказал. Только вхожу в мир программирования, до этого только Siemens PLC программировал там графический язык lad, fbd. P.s. забыл добавить, в структуре записаны коэффициенты.
@@КириллЧупов-п4й Ну да, верно в хедер файле и должны быть коэффициенты, значит ещё должнен быть си-шный файл где сам алгоритм фильтра будет, и там должно быть обращение к хедер-файлу для инициализации. Точнее рассказать не смогу така как сам через матлаб код не генерировал, может потом попробую. Вы можете пока попробовать те методы, что я описал в видео то есть вручную перетащить коэффициенты в код, если не всё понятно по этой системе в матлабе.
А как оно на самом деле - видно лишь из небесной канцелярии, согласен. Так что на самом деле - это не просто слово-паразит, это гораздо глубжее, на лично мой взгляд.
@@alexandersedunov9117 Понятно, фильтры на переключаемых конденсаторах это все-таки аналоговое устройство. Да и в целом достаточно тупиковая, как по мне, ветка т.к. их вытеснили цифровые фильтры.
@@TDMLab , тем не менее, нет ни одного видео про SC-фильтры на русском языке. Классические учебники гласят, что у цифровых фильтров периодическая АЧХ, поэтому перед ними нужно ставить аналоговые.
Это заблуждение, аналоговый фильтр должен быть обязательно. Как минимум для снижения алиас-эффекта или другими словами переноса спектра. Например если частота оцифровки будет 100кГц, а помеха будет на частоте 90кГц, то после оцифровки помеха будет перенесена на частоту 10кГц, что весьма вероятно попадёт в полосу полезного сигнала.
Скользящее среднее это нерекурсивный фильтр в отличии от БИХ. Есть спец. случай CIC-фильтров, это отдельная ветка линейно-фазовых БИХ которые могут быть синтезированы с АФЧХ которая идентична скользящему среднему. Как я говорил в видео я затронул тут лишь малу часть веток фильтров. Но БИХ первого порядка это не скользящее среднее.
@@TDMLab Формула одинаковая, хотя название разное. :)) В википедии "Экспоненциально взвешенное скользящее среднее". Очень часто используемый фильтр. Странно, что Вы его не знаете.
@@sergeyrink3003 Эм, я вроде пояснил в чем отличие. Скользящее среднее это нерекурсивный фильтр, БИХ рекурсивный. Дело не в формуле, хотя она конечно разная, а в их свойствах. Простое скользящее среднее это линейно фазовый фильтр по определению, БИХ - нет. Хотя я и говорю на 14:58 что БИХ первого порядка по АЧХ близок к Простому скользящему среднему, но это не значит что это касается и ФЧХ.
Вот, уже цифровые фильтры пошли в ход. Это хорошо. А то всё то у нас любят, как в каменном веке, на ногу микроконтроллера лепить RC цепочки или, даже, целый лишний корпус ОУ или триггера шмидта накидывать.
Да, перед цифровой обработкой не нужны никакие RC на входе, они не решают проблему, только переводят её в более низкочастотную область где её ещё трудней решить и довольно медленней.
Так совсем без RC все равно никак, алиасинг мать его:) Если будет шумовая гармоника на частоте близкой к частоте взятия выборок то её будет цифрой просто не победить. Да и у Шмитта задачи другие.
@@TDMLab Согласен только с тем что самые верхние частоты срезать которые всё равно не будут иметь значение при оцифровке, они ведь всё равно не видны, их амплитуда меньше. А например есть такой приём что нужно добавить в сигнал шума тогда точность ADC даже поднимается, на разряд, два, я не раз демонстрировал это с 10 битовым ADC, а точность намного выше, показывались даже цифры после запятой, которых нет в ADC.
@@TDMLab, без RC никак если рядом радиопередатчик работает с мощностью такой, что наводки на провода до кнопок после детектирования на внутренних диодах микроконтроллера аж напряжение питания ему задирает.
О. Автор получил что то похожее на давно воплощенное в железо (примерно в 96 году в массовом производстве) передачу сигнала в белых шумах. хотя нет. досмотрел - ему еще далеко до этого...
В начале говорю, что не могу физически рассмотреть все возможные ветки частотно-избирательных фильтров поэтому беру только одну. Для случаев синтеза КИХ/БИХ с помощью программных средств разницы ФНЧ/ФВЧ нет.
@@TDMLab Спасибо, я уже понял, что реализация одинаковая. На практике можно обойтись более простыми критериями скорости изменения сигнала и плавающим порогом на скользящем среднем. Получается адаптивный программный ФВЧ.
Если я ещё раз прочитаю в коментах, что при оцифровке сигналов на входе не нужен аналоговый фильтр, у меня точно бомбанёт.
Ссылочку которую Вы кинули к сожалению ютуб не пропустил и я не могу восстановить то сообщение, но я посмотрел предложенный курс по ЦОС, автор Сергиенко и я собственно о его книге на 22:03 и говорю, вроде есть и 3-е издание и думаю на 700 страницах содержится даже больше чем в курсе, хотя для тех кому нужны задания то можно и курс пройти, тем более бесплатный.
ps прикреплю здесь, мне ютуб позволяет) openedu.ru/course/eltech/DSP/
Ну и куда мне прилепить анологовый фильтр, если у меня на входе временные интервалы.
@@TDMLab я когда присматривался к ЦОС, сколько книжки не открывал, все бестолку. Книжек много, информации много, а ничего не откладывается в голове. А вот курс реально хорош, т.к. помимо просто инфы даются ещё тестовые задания и лабы. Плюс можно с самим автором курса пообщаться, вопросы позадавать.
@@DirectionToTheTopникуда. у вас задача другая. Ваш сигнал дискретное значение амплитудой допустим 3,3 Вольта. Поэтому и шумы у вас должны быть тех же порядков. Я же подразумевал оцифровку сигнала (например звука) где шаг сигнала может быть 1/65536 Вольт и шумы тех же порядков.
@@Paltus667
такая же херня
пишут так, что ничего не понять
проще ролик посмотреть
изучал сдр, там фильтры тоже были и я даже понял малость, только практикой не занимался
а началось все с того, что я захотел узнать, как генерится звук компутером и как из матана получить этот код для генерации звука
По цифровой обработке на Ютубе одни англоязычные индусы) спасибо за образовательные видео!
После ДиХалта думал уже не будет таких крутых авторов в рунете по теме электроники, но у вас помимо высокого профессионального уровня еще есть талант делать замечательные обучающие и объясняющие материалы. Круто! Продолжайте, уверен это будет оценено растущей аудиторией
математика из университета перестала быть бесполезной, спасибо за видео)
Наконец-то хороший канал по электронике. Автору успехов! Главное не останавливайся))
Мега-толковая лекция получилась! Спасибо большое!
Очень хорошее видео. Одно из самых лучших на русском! 👍
Фильтр Калмана был в квадрокоптерах, там, как раз, мат.модель нужна. Только сигналы шли из многих датчиков, по степени доверия и корреляции между датчиками как-то оценивали состояние объекта. Потом стали появляться статьи о новых алгоритмах для квадриков, там совсем тяжко понять. А до всего этого делали "сумматор" состояния, после фильтрации данных с медленного (но стабильного во времени) датчика подмешивали данные с быстродействующего (но шумного и нестабильного по времени) датчика. Объект оперативно реагирует на резкие воздействия и плавно стремится к нужному состоянию.
Спасибо! Каждый раз когда смотрю такие видео убеждаюсь, что нас в универе 6 лет учили чему-то не тому, чему надо было. Факультет элеткроники, телекоммуникации.
была база типа чебышев, бессель, баттерворт, с проектированием на SPICE и теоретическим расчётом??
Про КИХ-фильтры интересная тема, при случае попробуем.
Позновательно и наглядно, респект!
Если бы ты выпустил это видео пораньше года на 4, когда я сдавал ЦОС в универе :)
Отличная подача материала, респект
Давай еще!
Спасибо за отличное видео, смотрел не отрываясь. С большим интересом смотрю, особенно последние. Так держать!
Спасибо за отзыв
ЦОС это круто! Ждем продолжения!!!
Желаю дальнейшего развития канала и автору не останавливаться в духовном росте
Да не нужно автору автору никакого духовного роста, он технарь, а не религиозный "ужасень". :)
Подача материала огонь, разжевал и в рот положил, помню в универе мозг плавился когда ЦОС проходили
Отличная подача материала! Так держать!
Очень круто, как и всегда. Можно смело сказать научная работа. Вещь интересная, правда область применения узкая.
Область применения настолько огромна, что не знаешь, за что хвататься: частоты сигналов в живых тканях лежат в диапазоне 20 порядков величины. А все нужны. Например, этап формирования кардиогенной пластинки и первых сосудов - какая-то умопомрачительная голограммы, а ее разбор, пока еще не проведенный, очень многое даст в управлении ростом и дифференцировкой тканей. Лень писать - наиболее общих приложений в биологии о медицине навскидку с десяток.
@@ЯкСорок я не спорю, для специалистов огромная, для обычных обывателей, на кого по большей части рассчитан канал, не так и много кто будет этим заниматься. Но материал подан превосходно.
Книга Сергиенко хороша для начинающих, особенно применительно в связке с MatLab. По сути это расширенное изложение его курса лекций по DSP, читаемых в СПБ Электротехническом Университете. Для практических применений более интересна книга Ричарда Лайонса "Цифровая обработка сигналов" (Lyons "Understanding Digital Signal Processing" ), она издавалась у нас в печатном виде в середине 2000-х, но и в сети можно найти. Особенно рекомендую обратить внимание на то, что описано в приложениях.
Обычно делаю фильтр скользящего среднего из 5-7 значений, исключая самое большое и самое маленькое значение, чтобы отбросить единичные ошибки считывания. И после этого на БИХ-фильтр 1го порядка. Расчеты очень простые и работает достаточно хорошо.
Кстати, подобными программными ФНЧ довольно эффективно гасится дребезг кнопок.
Эвристика, но вполне имеет право на жизнь:)
Читает! Читаешь и показываешь! ))) Это точно! Но, это нисколько не приуменьшает подачу инженерного материала!
Ну, да, конечно, я читаю предварительно написанный мною текст, иначе никак не добиться высокой плотности информации.
Может кому пригодится
Я такие алгоритмы использую
НЧ фильтр:
temp = out + (in-out) / fsrez;
out = temp;
In, out - вход, выход, fsrez - число, определяющее глубину среза частот (от 2 до 1000 можете поэкспериментировать), temp - вспомогательная переменная,
Частотный фильтр:
fk = (2 * p i* (ff / fd) - коэффициент частоты, рассчитывается до основного цикла
in = d * in + out * fk
out = d * out - in * fk
d - добротность (от 0 до 0.99, при 1 схема становится генератором), ff - частота настройки фильтра в герцах, fd - частота дискретизации.
Очень крутой выпуск, спасибо.
15:50 1. Есть важный прием, когда при создании фильтров высокого порядка их дробят на фильтры второго порядка. Это связано с тем, что в исходном фильтре все коэффициенты приобретают очень большой разброс и начинают упираться в вычислительные ограничения. При преобразовании к каскаду фильтров второго порядка коэффициент внутри легче контролировать
2. Если соединить подряд два ФНЧ то итоговая полоса пропускания у них будет меньше, чем у каждого в отдельности.
1. Да, конечно, на 16:58
2. Да так, потому я и отнес это к эвристике.
Мало! Давай ещё!
Круть. На одном дыхании(правда с паузами, что бы успеть размотать в голове) смотрел.
Лично у меня, с представлением аналоговых фильтров проблем нет
(советское образование), а у автора ещё и программная реализация. Вот это я понимаю стык дисциплин.
P.S. Кто все эти люди, что влепили дизлайки? :)
Спасибо за отзыв!
А это статистический шум, без этого никуда:)
@@TDMLab Раньше вроде были слухи что дизлайки повышают шанс видоса зайти в рекомендации и тренды - типа горячая тема. И якобы выстреливали видосы у которых лайков и дизов было примерно поровну.
Но потом мир изменился. А всем нравится - не реально, кому-то будет слишком просто и банально/обыденно, кому-то слишком сложно и непонятно.
Лично мне очень зашло (весьма смотрябельно, и кода хороша в наухах особенно), ибо например так или иначе мечтаю воткнуть паяльник в ламповую Волна-К (хотяб синтезаторы AD9910 или AD9959 прикалхозить и смесители поменять, а как максимум сваять дистанционно управляемый реверсивный ламповый каскад нагруженный и расположенный около магнитной антенны с механической перестройкой вакумным КПЕ раза в 4 по частоте ), а тема ЦОС вообще и цифровых фильтров в частности так или иначе в программно-определяемом радио касается.
@@pswru Сейчас есть параметр "вовлеченность аудитории" и типа лайки и дизлайки поровну оцениваются главное чтобы было взаимодействие с видео. Но там куча алгоритмов и это лишь малая часть уравнения.
Если бы DA9910 не стоил бы 4к я бы его уже давно поковырял.
@@TDMLab Ну просто генерить синус AD9910 скучновато (полагаю что написать код на асме для буратины у лично меня займёт меньше месяца)- надо именно в контексте радиоприёма как ГПД без особой фильтрации опробовать и сравнить с более грубыми собратьями в плане уменьшения гармоник/характерных призвуков, слышимых на приёме при перестройке частоты гетеродина.
Спасибо вам за обзор фильтров! Классно!
Спасибо за отзыв!
Прям видео под руку)
только вчера в маршрутке подслушал)
Как же хорошо что в большинстве ацп фильтр уже встроен. Хотя теперь я понял откуда задержка перед первым отсчетом, спасибо).
Да, цифровой фильтр является неотъемлемой частью сигма-дельта АЦП и да, ему нужно некоторое время для прохода первого отсчета до выхода.
@@TDMLab Кстати, про сигма-дэльта АЦП (и чисто морфологически - почему именно сигма и именно дэльта) - лично я несколько раз пытался понять как именно он работает читая доки например на 20-24 бита АЦП (например AD7710-AD7714, которые я выпросил у внедренцев промышленных весов) для мостовых преобразователей (например тензорезисторных) физических величин, но взаимосвязанная с другими знаниями в моей голове мозаика не сложилась.
@@pswru Ну типа мы дробим аналоговый сигнал на однобитный поток маленьких дельт, а потом складываем их сигмой:)
th-cam.com/video/NrkFd7h6R2Y/w-d-xo.html
Класс, давайте ещё интересного контента😀
Супер подача и материал!
это шедевр!
Не хватает еще пару слов про Люенбергера и три семестра ТАУ за 25 минут понятным языком с понятным применением готово! Автор молодец!
Спасибо за отзыв! Да, наблюдатели состояний, это крайне сильный инструмент.
Медианный фильтр хорошо подходит для фильтрации широкополосного сигнала. Да, основная цель убирать выбросы, но вместе с каким нибудь другим фильтром, возрастает точность получаемых в итоге данных.
Для отображения результатов измерений ещё он хорош, чтобы цифры не скакали. С усреднением получается не так стабильно.
давай цикл про ЦОС , теорему Котельникова и всякое такое )
А практика когда? На конкретном жизненном примере.
Спасибо!
хорошо, кратко и по делу
Братан, ты прекрасен : )
Вы забыли упомянуть про сдвиг фазы возникающий при фильтрации сигнала. В замкнутых системах управления требуется минимизация этого сдвига.
Спасибо, очень полезно и доступно
Как-то игрался на stm32F7 (216МГЦ) с отрисовкой линий алгоритмами Вуу. Сначала пользовался плавающей точкой, потом фиксированной. Так вот, несмотря на имеющийся аппаратный вычислитель float, с фиксированной точкой отрисовка была раза в 1,5 быстрее.
Так точно, целочисленный аппаратный умножитель всегда победит аппаратный float.
А про Ву почитаю, спасибо)
@@TDMLab
На q15 быстрее, за счет 16бит DSP инструкций Arm Cortex M, но проблемы с танцами с масштабом и переполнением.
А вот если q31 - то уже или вровень или быстрее float.
Плюс - гемор геморройный с объявлением констант, особенно если массив констант надо объявить в коде и потом понять а что там собственно за коэффициенты.
Придется писать отдельные вспомогательные генераторы для компа которые будут генерировать исходники с массивами неких волшебных чисел и возить их с собой с исходами и скриптами через весь проект.
Так что целочисленный аппаратный умножитель никого не побеждает - даже по даташиту у FPU и ALU инструкций одинаковая скорость.
Монументально!
Спасибо большое!
Думал, что ни к чему не смогу придраться, а всё же смог: 13:21: "тут никак не оптимизировать": если не ошибаюсь, то при большом размере фильтра становится выгоднее применить преобразование Фурье. Дважды. Сам, правда, так делать не пробовал.
Да есть такое, фильтры на БПФ.
Но это уже отдельная ветка фильтров которая в мой рассказ уже не вмещалась.
Современные фильтры для связи типа OFDM вроде все в частотной области работают.
Молодец! Спасибо!
Ооо. Через две недели пригодится)
Первый раз подумал, что мне показалось, но во второй... музыка из героев меча и магии?)
"Герои, ммать. И Магии." (С)От винта!
Интересно!
Я вааще ни хера не понял, особенно под конец, чуть башка не лопнула. Молодец 👍, подписка
Что лучше пользовать из фильтров для подавления сетевой помехи, чтоб с минимальными задержками? Крутиться должно на кортексе м3, дальше сигнал запихивается в модбас, поэтому данные нужны не чаще 7мс...
Частный случай полосно-заграждающего фильтра его еще иногда называют фильтр-пробка, в англоязычной терминологии "notch filter", а по реализации скорее всего БИХ. Порядок исходя из ТЗ.
Матлаб это замечательно, конечно, но в инженерной практике удобнее программа Filter Solutions , она позволяет проектировать и цифровые фильтры (в виде кусков кода на Си), так и схемотехнические решения активных/пассивных фильтров. Программа, конечно, денег стоит, но очень экономит время на изобретение велосипеда (есть, конечно и таблетка от жадности, но лучше в этом случае запускать в виртуальной машине без доступа к интернету, - программа собирает информацию и отправляет создателям, а те рассылают предупреждения и угрозы подать в суд).
Возможно. Никогда не пользовался этой программой и что-то мне подсказывает, что и не буду)
Сейчас для каждой микропроцессорной или ПЛИС архитектуры созданы библиотеки генерации фильтров с оптимизацией и открытыми лицензиями. То что я проделал в видео было лишь примером, дающим представление о самом примитивном способе создания фильтров.
Оговорились вначале про ФНЧ?
Хотелось бы ещё примеров используя возможности stm32g4 в сравнении с другими стм32, по затратам ресурсов и прочими особенностами.
У G4 серии ядро Cortex M4, такое же как и большинства современных МК общего назначения. Преимущества при работе на ядре будут только в сравнении с F1 например которые на Cortex M3 или другими без DSP инструкций.
Единственная особенность что есть у серии G4 это наличие аппаратного фильтра (FMAC), о нем я уже на этом канале рассказывал.
Коммент для продвижения канала) есть небольшая просьба, расскажи про свой 5 канальный осциллограф, задумался о покупке, и очень меня подкупают 5 каналов, есть ли в нем какие то фатальные (и не очень) недоработки? буду благодарен)
Спасибо! Он 4-х канальный с TRG OUT, из недостатков только то что ленивые разрабы перестали прошивки новые делать:)
Немного подробнее есть здесь th-cam.com/video/rPNzHZdpr3M/w-d-xo.html
@@TDMLab 0_о..а я думал, что все твои видосы смотрел...блин, изначально рассчитывал на DSO4102С (20 т.р.)..а потом на твой канал наткнулся..прийдется еще копить :D..спасибо за инфу и в целом за твое творчество)
Главное не забывать что фильтрация дискретная и вся благостная картинка соответствует полосе в половину частоты дискретизации. А все что выше в исходном сигнале из-за дискретизации сворачивается и накладывается на исходный низкочастотный сигнал. Т.е. прежде чем принимать сигнал в контроллер надо аналоговым фильтром отрезать все что выше половины частоты дискретизации.
Конечно, возможно будет видео по алиасинг, думал даже показать наглядно как происходит отражение спектра.
@@TDMLab что значит возможно - а ну бегом записывать!)
@@TDMLab Нужно такое видео. Потому как очень многие не понимают, что там не просто "забор" из АЧХ, но и преобразование спектра. Причем, эта проблема замечено даже у Fnirsi.
@@mslq Программно это сделать невозможно. Преобразование спектра происходит в момент дискретизации и что потом с полученным сигналом не делай, отделить сигнал от свернутого вниз ВЧ-шума уже нельзя.
@@mslq А вообще - многие строители роботов банальные любители которые познают наугад то, что преподавалось в ВУЗах на лекциях по автоматике или обработке сигналов. Очень многие алгоритмы они не используют только потому, что они имеют положительные обратные связи которые без изначального расчета неустойчивы и наугад трудно настраиваемые. Зачастую останавливаются максимум на ПИД.
Привет! Я правильно понял, что static переменные в примерах кода (на 14:32 например) после выхода из функции не "забываются" а продолжают висеть в памяти и при новом обращении к функции берется их значение с прошлого прохода?
Совершенно верно.
@@TDMLab спасибо
Привет, а можешь разобрать проблемы которые могут возникать при переделки преобразователей-источников напряжения в источники тока? Например такие как потеря устойчивости
Я бы может и разобрал эти проблемы если бы занимался этой переделкой источников напряжения в источники тока)
Я хочу переделать старый промышленный аналоговый металлдетектор для конфет под цыфровое управление, какой фильтр выбрать, с чем разбираться, я не такой умный как Вы, и буду благодарен даже за маленькую подсказку в этом вопросе, спасибо... ПС...Я посмотрел Ваш пример, так вроде бы понятно
Начать можно с осциллограммы или графика оцифровки сигнала, насколько там все плохо и какие проблемы есть. По фильтрации и не только, всегда начинают с простого, а потом как пойдет.
сделай гайд плиз на цифровой фильтр для сигма-дельта модулятора чтобы сделать Σ-Δ АЦП
Можно ли с вами связаться по вопросам разработки?
Информация есть в разделе "о канале".
Можете снять видос как правильно измерять ёмкость 18650
th-cam.com/video/tfHyggAKJZ8/w-d-xo.html
Ну вот, возвращаясь к нашему предыдущему разговору - так теперь раз уж вы начали разбирать цифровые фильтры то вам больше не придётся делать антидребезг аппаратно как в том известном случае, а я тогда сказал что сделал это намного красивей программно на AtTiny 10, и та шабашка имела успех у заказчика, сделано не мало экземпляров, блоки конкурента выпадали по мере эксплуатации и заменялись на мои.
Я начал разбирать цифровые фильтры лет 12 назад когда делал адаптивный эквалайзер к системе связи специальногоj назначения:) И вот до сих пор считаю, что если позволяет место лучше поставить триггеры Шмитта и уделить большее внимание действительно серьезным вещам в проекте чем борьба с каким-то там дребезгом:)
@@TDMLab Ну да, ну да, конкурент тоже так думал, и тоже не недооценивал дребезг, да вообще в этом мало кто разбирается.
@@TDMLab А с дребезгом я больше не борюсь, я просто нужные параметры ввожу в макро, даже возможно динамически, каждый раз новые. Это намного удобней чем каждый раз триггер шмитта перед RC, потом после триггер шмитта, сами знаете, без такой цепочки не работает.
@@mslq Я не сколько не против программной реализации, и даже поддерживаю это. Можете тут оставить код или описание вашего алгоритма думаю это будет точно в тему для тех кто смотрит такие видео.
@@TDMLab Вот самый простой и очень эффективный метод: каждую миллисекунду читается вход и только например 20 раз одинаковый с предыдущими имеет какое то значение, это и будет событием 0 или 1, дальше больше - в макросе есть параметр удержание например 200, это значит что один и тот же вход повторился 200 раз это появляется событие "удержание", и так далее, удержание тоже может быть 0 или 1, и прочие, как клики, двойное нажатие и ещё всего можно напридумывать. В итоге каждый вход даёт поток событий, кому нужно какое тот его и использует, живёт событие только 1 миллисекунду - операционная система тут, по этому такая конфигурация очень удобна.
Почувствовал приобщенным к науке, хотя половину не понял.
Доброго времени суток, интересует вопрос реализации рассчитанного в матлабе фильтра, на микроконтроллере STM32. В filterDesigner есть пункт Targets>Generate C header... при этом он создает файл .h, но не совсем понятно как дальше использовать. По умолчанию с плавающей точкой двойной точности, имеется возможность перейти к целочисленной математике. Данную тему только начинаю осваивать, может быть я смотрю изначально в неправильном направлении подскажите что и как. Буду крайне благодарен.
Направление точно правильное, но лично я не использовал матлаб как кодогенератор, хотя это интересно. Вообще должно быть по идеи 2 файла хедер и си-шный файл и мы их просто к проекту прикрепить должны и вызвать фильтр как функцию. А что в этом хедере?
@@TDMLab могу ошибаться в терминах, но вроде две структуры в виде матрицы 3 столбца и строк равных порядку фильтра (могу ошибаться). При выборе плавающей точки двойной точности, тип real 64, а целочисленная int 32. Прошу прощения если очевидное сказал. Только вхожу в мир программирования, до этого только Siemens PLC программировал там графический язык lad, fbd.
P.s. забыл добавить, в структуре записаны коэффициенты.
@@КириллЧупов-п4й Ну да, верно в хедер файле и должны быть коэффициенты, значит ещё должнен быть си-шный файл где сам алгоритм фильтра будет, и там должно быть обращение к хедер-файлу для инициализации.
Точнее рассказать не смогу така как сам через матлаб код не генерировал, может потом попробую. Вы можете пока попробовать те методы, что я описал в видео то есть вручную перетащить коэффициенты в код, если не всё понятно по этой системе в матлабе.
@@TDMLab большое спасибо.
Что смотрят люди: тикток. Что смотрю я, не особо понимая, но с гигантским интересом:
В астрофотографии видел используют эвристический с уменьшением влияния по сигме.
Интересно, не знал.
ничего не понятно, но очень интересно....
Всё замечательно только для начинающих совершенно непонятно как это реализовать на приктике
Круто! Надо только выкинуть из текста, часто повторяющиеся слова паразиты (на самом деле).
А как оно на самом деле - видно лишь из небесной канцелярии, согласен.
Так что на самом деле - это не просто слово-паразит, это гораздо глубжее, на лично мой взгляд.
Почему нет ни одного видео про SC-фильтры на TH-cam ?
SC? CiC фильтры знаю, SC не знаю.
@@TDMLab , в англоязычных источниках используется термин "switched-capacitor filters".
@@alexandersedunov9117 Понятно, фильтры на переключаемых конденсаторах это все-таки аналоговое устройство. Да и в целом достаточно тупиковая, как по мне, ветка т.к. их вытеснили цифровые фильтры.
@@TDMLab , тем не менее, нет ни одного видео про SC-фильтры на русском языке. Классические учебники гласят, что у цифровых фильтров периодическая АЧХ, поэтому перед ними нужно ставить аналоговые.
@@alexandersedunov9117 Да про многие фильтры нет на русском и даже не ютубе, а вообще.
При оцифровке сигналов на входе не нужен аналоговый фильтр.
Это заблуждение, аналоговый фильтр должен быть обязательно. Как минимум для снижения алиас-эффекта или другими словами переноса спектра. Например если частота оцифровки будет 100кГц, а помеха будет на частоте 90кГц, то после оцифровки помеха будет перенесена на частоту 10кГц, что весьма вероятно попадёт в полосу полезного сигнала.
Ничего не понял ... но очень интересно !
Ну как же без такого комментария) спасибо!.
По ЦОС есть еще прикольная книжка от Сато
Действительно забавные картинки)
Уууууууууу дремучий лес!
Да, не:) Не так страшен чёрт, как его малюют:)
На мой взгляд дилетанта - важный выпуск. Продолжение бы?
Ну вобще то БИХ-первого порядка это тоже скользящее среднее. Экспоненциально взвешенное. Удобно, что быстрое и коэффициент легко меняется.
Скользящее среднее это нерекурсивный фильтр в отличии от БИХ. Есть спец. случай CIC-фильтров, это отдельная ветка линейно-фазовых БИХ которые могут быть синтезированы с АФЧХ которая идентична скользящему среднему. Как я говорил в видео я затронул тут лишь малу часть веток фильтров.
Но БИХ первого порядка это не скользящее среднее.
@@TDMLab Формула одинаковая, хотя название разное. :)) В википедии "Экспоненциально взвешенное скользящее среднее". Очень часто используемый фильтр. Странно, что Вы его не знаете.
@@sergeyrink3003 Эм, я вроде пояснил в чем отличие. Скользящее среднее это нерекурсивный фильтр, БИХ рекурсивный. Дело не в формуле, хотя она конечно разная, а в их свойствах. Простое скользящее среднее это линейно фазовый фильтр по определению, БИХ - нет.
Хотя я и говорю на 14:58 что БИХ первого порядка по АЧХ близок к Простому скользящему среднему, но это не значит что это касается и ФЧХ.
@@TDMLab То, что вы говорите это конечно хорошо, но тупить не нужно. :) Если формула одна то и свойства одинаковые. Д свиданья мой тупой друг.
@@sergeyrink3003 Ладно, двоечникам тут не место, гуляй. Не советую учится по Википедии, книгу нормальную даю в конце.
Как сказал классик -Очень интересно но ничего не понятно(с).
+1
Бирюзовый? Вы уверены?
Хаа-ха))) почему я сказал бирюзовый...))))
Ну да, я тоже обратил внимание)) пурпурный приблизительно )))
@@Вячеслав-ч3э6ь Маджента этот цвет называется
калман график биткоина предскажет?
Конечно, если дать ему матрицу динамической модели системы)
@@pswru Что-то типа этого я и имел ввиду:) Типа модель экономики... всей:)
Вот, уже цифровые фильтры пошли в ход. Это хорошо. А то всё то у нас любят, как в каменном веке, на ногу микроконтроллера лепить RC цепочки или, даже, целый лишний корпус ОУ или триггера шмидта накидывать.
Вы в корне не правы. То что лепят это НЕОБХОДИМОСТЬ при оцифровке сигналов. Погуглите антиалиасинговый фильтр и теорему Котельникова.
Да, перед цифровой обработкой не нужны никакие RC на входе, они не решают проблему, только переводят её в более низкочастотную область где её ещё трудней решить и довольно медленней.
Так совсем без RC все равно никак, алиасинг мать его:) Если будет шумовая гармоника на частоте близкой к частоте взятия выборок то её будет цифрой просто не победить. Да и у Шмитта задачи другие.
@@TDMLab Согласен только с тем что самые верхние частоты срезать которые всё равно не будут иметь значение при оцифровке, они ведь всё равно не видны, их амплитуда меньше. А например есть такой приём что нужно добавить в сигнал шума тогда точность ADC даже поднимается, на разряд, два, я не раз демонстрировал это с 10 битовым ADC, а точность намного выше, показывались даже цифры после запятой, которых нет в ADC.
@@TDMLab, без RC никак если рядом радиопередатчик работает с мощностью такой, что наводки на провода до кнопок после детектирования на внутренних диодах микроконтроллера аж напряжение питания ему задирает.
О. Автор получил что то похожее на давно воплощенное в железо (примерно в 96 году в массовом производстве) передачу сигнала в белых шумах. хотя нет. досмотрел - ему еще далеко до этого...
но все равно плюс )
Да как бы в связи с отрицательным сигнал-шумом передают, ничего такого в этом нет. Чего-кому далеко, непонятно))
Вах
Сергиенко книжка классная. + Есть его лекции по цифровой связи, смотрятся на 1 дыхании th-cam.com/video/6iJPYGxVoOk/w-d-xo.html
Ооо! ничего себе, спасибо!
я так понял вы кому-то делали курсовую. а материал остался...
спасибо пользовался только скользящим средним
Нет конечно) хотя материал остался действительно, пожалуйста.
Жаль, что про ФВЧ ничего не услышал.
В начале говорю, что не могу физически рассмотреть все возможные ветки частотно-избирательных фильтров поэтому беру только одну. Для случаев синтеза КИХ/БИХ с помощью программных средств разницы ФНЧ/ФВЧ нет.
@@TDMLab Спасибо, я уже понял, что реализация одинаковая. На практике можно обойтись более простыми критериями скорости изменения сигнала и плавающим порогом на скользящем среднем. Получается адаптивный программный ФВЧ.
@@sergeyrink3003 Существует бесконечно много различных алгоритмов, выбор же зависит от конкретной задачи.
++++++
Преподы по ТАУ в слезах дерутся за веревку с мылом...
Да, вроде нет, даже наоборот;)
Отлично!