АЦП - Программная фильтрация аналоговых сигналов в автоматике

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 ก.ค. 2023
  • Фильтрация аналоговых сигналов в автоматике - (не)краткий ликбез с участием Саныча =)))
    Материалы из видео:
    files.inbox.lv/shared/file/d3...
    Почитать о скользящих средних можно тут:
    ru.wikipedia.org/wiki/%D0%A1%...
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 146

  • @mikhailphilimonov
    @mikhailphilimonov 11 หลายเดือนก่อน +19

    Ничерта не шарю в программировании, но мужик на столько мне заходит, такой веселый и много умных слов говорит, что я его смотрю постоянно!

    • @DmitryBoev
      @DmitryBoev 11 หลายเดือนก่อน

      Блин, я давно все знаю это, но автор настолько крутой, что смотрю с удовольствием

    • @BioTech81
      @BioTech81 11 หลายเดือนก่อน +1

      Я не знаю даже кто я такой но автора смотрю 🤣

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +7

      Спасибо, ребят! Буду стараться радовать вас дальше! =)))

    • @user-hy1iu3wk9h
      @user-hy1iu3wk9h 6 หลายเดือนก่อน

      ​@@Gnevistjздравствуйте! Можно обратиться к Вам по программированию?

  • @user-xc3sg4kh6w
    @user-xc3sg4kh6w 11 หลายเดือนก่อน +5

    Гневисть, спасибо за видео! Пишу на ASM X86, работаю в основном с ПЛИС при помощи языка проектирования Verilog. Ты - один из немногих, кто понимает о чем говорит и называет вещи своими именами, тебя интересно смотреть не только новичку в этом деле, но и инженеру с опытом.

  • @user-qe3pf5ph8x
    @user-qe3pf5ph8x 11 หลายเดือนก่อน +15

    Изумительная подача материала , браво ! Спасибо.

    • @user-xq4px3nm6g
      @user-xq4px3nm6g 11 หลายเดือนก่อน

      Спасибо "Санычу". Про "скользящее среднее" и "скользящее экспоненциальное среднее" я вроде в курсе.

  • @nikitaafanasyev1327
    @nikitaafanasyev1327 11 หลายเดือนก่อน +7

    SMA считается по O(n) , не надо там каждый раз считать сумму всех элементов массива , достаточно поддерживать переменную суммы, вычитая из нее самое старое значение и добавляя новое

  • @loverock8384
    @loverock8384 11 หลายเดือนก่อน +4

    За что нравится Саныч - объясняет за пару секунд. Уважаем! 😂

  • @Alexej955
    @Alexej955 11 หลายเดือนก่อน +5

    Друг, продолжай делать ролики. Спасибо.
    Народ соскучился по умным преподавателям.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +1

      Спасибо! Буду продолжать =)

  • @olegbelous5588
    @olegbelous5588 11 หลายเดือนก่อน +7

    Спасибо! Доходчиво всё объяснили, так очень редкий преподаватель сможет донести для студентов излагаемый предмет. Хотелось бы увидеть в ближайших видео как осуществить дельта-сигма модуляцию, скажем, речевого сигнала.

  • @6om6a
    @6om6a 11 หลายเดือนก่อน +1

    Годнота подъехала. Жму руку и желаю успехов во всех начинаниях!

  • @user-ld7vr3fz3p
    @user-ld7vr3fz3p 11 หลายเดือนก่อน +3

    16:26 - лучше делать кратно степени двойки и переходить от деления к сдвигам.

  • @dn.kolesnikov
    @dn.kolesnikov 11 หลายเดือนก่อน +1

    Если сказать Огромное СПАСИБО!, то это будет только половина благодарности! Всегда рад Вашим видео! Как раз пишу свой велосипед для открытия дверей теплицы по показаниям температуры, и тут теория подъехала... Спасибо еще раз!

  • @asutp2089
    @asutp2089 11 หลายเดือนก่อน +1

    Красиво объяснил. Спасибо. С опытом, через боль доходим до этого. Разрабатываем алгоритм. А потом оказывается это всё уже давно придумано до нас.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Так всегда и есть - я когда-то, по молодости, терпеть не мог готовые библиотеки - "все сам напишу!!!", спустя годы стараюсь побольше использовать именно готовые - ибо кто-то до меня уже набил шишки и все отладил, зачем мне повторять его опыт? Мне нужно макрозадачу решить, а микрозадачи - они все решены до нас =)))

  • @Al-Al
    @Al-Al 11 หลายเดือนก่อน +2

    Отличная подача матеряла. Смотрится с удовольствием и на одном дыхании.

  • @ADNpower-xy6yv
    @ADNpower-xy6yv 5 หลายเดือนก่อน

    Доставляет удовольствие следить за мыслью умного человека

  • @StartuePotoya
    @StartuePotoya 11 หลายเดือนก่อน

    Хорошо, что я нашел Ваш. канал, большое спасибо за видухи .

  • @alexeiviktorovi4130
    @alexeiviktorovi4130 11 หลายเดือนก่อน

    Классно. Спасибо за очередной шедевр. Особенно аутро повеселило 🔝

  • @andreyace8768
    @andreyace8768 11 หลายเดือนก่อน

    Спасибо за подготовку материала!!! 💪💪💪💪✌✌✌✌!!!!

  • @asdffewfew
    @asdffewfew 11 หลายเดือนก่อน

    как всегда очень познавательно и интересно. спасибо. здравствуйте кстати)

  • @nicseroff2690
    @nicseroff2690 11 หลายเดือนก่อน

    Спасибо! Все по полочкам! Так держать!

  • @Shifoner_
    @Shifoner_ 11 หลายเดือนก่อน

    Интересно, доходчиво! Как жаль что мало)))

  • @eugene_irkutsk
    @eugene_irkutsk 11 หลายเดือนก่อน

    Первое полезное видео на канале. До этого радовала подача материала )))

  • @sarmatskif6660
    @sarmatskif6660 11 หลายเดือนก่อน

    Випадково забрів,але вже давно наблюдаю,ноут і жменя мк теж є,цікава подача,що зацікавлює.

  • @rustybroom7071
    @rustybroom7071 11 หลายเดือนก่อน

    Прекрасный ролик, спасибо. И гневисть есть в нужном количестве.

  • @Immo_Off
    @Immo_Off 11 หลายเดือนก่อน +1

    👍👍👍👍👍

  • @user-ct5cm4rj6v
    @user-ct5cm4rj6v 11 หลายเดือนก่อน

    Удачно я зашел!!!)))) Подписался, поставил лайк, сижу и радуюсь!)))

  • @user-ui2gf2gw6b
    @user-ui2gf2gw6b 9 หลายเดือนก่อน

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

  • @aleintaseevo
    @aleintaseevo 11 หลายเดือนก่อน

    Кайфово что Хэтфилд выучил русский и поясняет за электронику

  • @drubakha
    @drubakha 11 หลายเดือนก่อน

    Если есть лишние ресурсы МК - выбираю для себя фильтр Калмана. В свое время очень помог с тензодатчиками.

  • @velessn
    @velessn 11 หลายเดือนก่อน

    Тут можно ставить лайк не глядя. Заходит на ура.

  • @user-zd5bh2bl1y
    @user-zd5bh2bl1y 10 หลายเดือนก่อน

    Знаете где это может пригодится? Для оверсемплинга 10 битных АЦП. Есть документ от микрочип: AVR121:Enhancing ADC resolution by oversampling. Можно увеличить разрядность и точность АЦП. Благодаря этому видео я ещё больше понял этот документ. И вообще возможно автор видео захочет показать пример оверсемплинга на PIC/AVR, где используются именно эти формулы. А теории от 10 битного АЦП можно получить точность в 3-4 знака после запятой.

  • @bit_happens_
    @bit_happens_ 9 หลายเดือนก่อน

    Спасибо!

  • @mikhailshashkov8395
    @mikhailshashkov8395 8 หลายเดือนก่อน

    Представляется, что EMA_Filter в целочисленной арифметике можно реализовать с меньшим количеством операций. А если в качестве параметра alpha выбирать степени двойки (1/2, 1/4, 1/8, ...), то для вычисления каждого нового отфильтрованного значения потребуется всего лишь две операции сложения и две операции сдвига (умножения на степень двойки).
    Стоит отметить, что одну операцию сдвига (умножения/деления) следует выполнять только в случае, когда необходимо вывести отфильтрованное значение на экран. Это так и в Вашей программе. Т.е. для Вашей рекурентной формулы Yprev=(Xx*10*alpha+Yprev*(1000-alpha))/1000, значение Yy=Yprev/10 не требуется. Просто хотелось отделить вывод на дисплей фильтрованного значения от самой фильтрации. Yprev, в принципе, ничем не хуже Yy, и его можно использовать в внутри программы (например для управления чем либо).
    Для вычисления скользящего среднего значения требуется всего два сложения и один сдвиг. В смысле вычисления - формально чуть проще. Но нужно хранить массив измерений, и следить за индексом кольцевого буфера, что еще одна операция сложения. Не знаю насколько это большое ограничение сейчас для микроконтроллеров.
    Еще, среди очень простых фильтров (с точки зрения программирования микроконтроллеров и требования к ресурсам), нужно отметить EMA (Exponential Moving Average) - фильтры более высоких порядков (Double Exponential Smoothing, Triple Exponential Smoothing, ...). Особенно это полезно в случае необходимости оценки производной функции измеряемого процесса. Кроме того, как правило, задержка сигнала, связанная с фильтрацией, становится меньше. Количество операций здесь минимально, и память для хранения массива измерений тоже не требуются.

  • @artemsilivanchik
    @artemsilivanchik 10 หลายเดือนก่อน

    Клевые видео!

  • @Den_mix
    @Den_mix 9 หลายเดือนก่อน +2

    Сделай ролик про ПИД регулирование например с термопарой.

  • @sima8623
    @sima8623 11 หลายเดือนก่อน

    Саныч как всегда прав, спаасибо за видео!

  • @Drmidon
    @Drmidon 11 หลายเดือนก่อน +1

    Видео супер. Не сказано в этом уроке что такое n. Период фильтрации (n) - это количество замеров, которые будут усреднены. Грубо говоря, если n=1, то нет усреднения(каждый замер на входе попадает без изменений на выходе). Если n=2, то берет среднее из 2х значений(предыдущее + текущее значение / 2). Если n=100, то среднее из 100 замеров.
    Вангую забавную аббревиатуру PIDR (proportional-integral-derivative regulator) в следующем уроке.

    • @Ma_X64
      @Ma_X64 11 หลายเดือนก่อน

      Обычно пишут regulator, не включая в аббревиатуру.

  • @user-le6ik1vv9m
    @user-le6ik1vv9m 5 หลายเดือนก่อน +1

    Молодец😊

  • @suntechnology
    @suntechnology 11 หลายเดือนก่อน

    Эээээээ! Я еще прошлые ролики не посмотрел! Хороший темп. Так держать!

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Они никуда не исчезнут, прошлые ролики, не переживайте! =)))
      Постараюсь радовать и дальше =)

  • @dimkadimkin5861
    @dimkadimkin5861 11 หลายเดือนก่อน +1

    Одна из достойных освещения, методик фильтрации: медианный фильтр.
    Реализуется просто, задержек минимум, шумы фильтрует очень хорошо.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Да, но это один из вариантов скользящей средней, поэтому я его не упомянул в этом выпуске =)

    • @postoronny
      @postoronny 11 หลายเดือนก่อน

      Массив требует сортировки при каждом отсчёте...

  • @user-sp7hx5lb8u
    @user-sp7hx5lb8u 11 หลายเดือนก่อน

    Не знаю, на своём бойлере сделал терморегулятор на обычном китайском термисторе, Меga8 и импульсном пропитании. Никакие помехи и наводки ему не мешают. Темперадуру держит в пределах 2-3°C. Единственно, при переходе с одного градуса на другой начинался дребезг. Проблема решилась уменьшением частоты измерения темперадуры: подбором времени задержки. Всё работает чётко.

  • @BioTech81
    @BioTech81 11 หลายเดือนก่อน +1

    Наконец-то подошли к концу мини сериала про АЦП???? Да нет, не разу не наконец-то.....
    Здрасьте кстати 😅
    Автор как всегда отбойный молоток но Михалыч это космос 😂
    Счастья, любви, здоровья, удачи👍

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +1

      Спасибо! =))))
      Ну, можт и продолжится этот сериал в виде эммм... Спин-оффов, или как это в киноиндустрии сейчас модно так называется? =)))))
      Счастья, здоровья, сил, любви, и всего-всего =))))))

  • @vernnms78
    @vernnms78 11 หลายเดือนก่อน

    А я голову ломал, зачем в свое время Гайвер использовал для сглаживания метод усреднения квадратов? Теперь убедился, что всё проще и надеждее. Спасибо!

  • @vladyslavshchedryn7008
    @vladyslavshchedryn7008 11 หลายเดือนก่อน

    Отличный видос, хоть я и знаю всё это давно, однозначно смотрю с удовольствием. У меня только один вопрос: какого хрена уведомления не приходят? Раньше приходили, а сейчас нет. И это, я в молодости фильтровал аналоговые сигналы с помощью аналоговых фильтров, как ни странно 😂😂😂 RC/LC в зависимости от ситуации, только постоянную времени посчитать

  • @user-ul6iu3nu7i
    @user-ul6iu3nu7i 11 หลายเดือนก่อน

    Так и было!! ардуина считывала сопротивление терморезистора, на столе все работало норм. Но ночью, когда все уснули а датчик закрепился на батарее той-же комнаты, сработала тревога))

  • @user-le6ik1vv9m
    @user-le6ik1vv9m 5 หลายเดือนก่อน +1

    Раскажите угол открывания тиристоров для чего такие углы что происходит при разных начальных углах аналоговые схемы типа тпе 😮

  • @user-hv5ol7re9i
    @user-hv5ol7re9i 8 หลายเดือนก่อน

    Это всё конечно классика. Но что реально интересно, это когда АЦП 16, 24 бита, используется буферный ОУ и опорник. Настройка диф режима и фильтрация и размах с помощью ОУ, для высокой точности

  • @postoronny
    @postoronny 11 หลายเดือนก่อน

    Не нужно для скользящего среднего при каждом отсчёте пересчитывать сумму и делить её на количество отсчётов усреднения:
    При запуске домножаем значения уставок для включения и выключения на длину массива;
    При каждом отсчёте отнимаем из переменной суммы значения из хвоста массива, сдвигаем массив (я просто сдвигаю указатели на начало и конец кольцевого массива), вставляем в голову новое значение и прибавляем его же к сумме;
    Всё. Сумму можно сравнивать с уставками ;)

    • @postoronny
      @postoronny 11 หลายเดือนก่อน

      С плавающей точкой при таком способе может накапливаться ошибка округления, а с целочисленными вообще никаких проблем.
      Я так считаю среднее квадратическое - там при каждом отсчёте, вообще, нужно было бы считать квадратный корень... но зачем, если можно уставку заранее возвести в крадрат и умножить на длину буфера? :)

  • @TheAlexey1980
    @TheAlexey1980 6 หลายเดือนก่อน

    Привет. Как слелать вольметр, показание которого не скачет? Например при величине близкой, к 23 и 24 всн равно показания с обоими фильтрами скачат между 23 и 24 (ну или сколько там). И так в почти всех цифровых вольметрах (амперметрах). Что сделать чтоб показания не скакали (ударение на вторую "а")

  • @user-kt4cd1gb4t
    @user-kt4cd1gb4t 11 หลายเดือนก่อน

    Больше Саныча! Пусть задвинет лекцию за ассемблер!

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Как-нибудь попробую сорганизовать =))))))))

  • @user-xr5rh8ig9s
    @user-xr5rh8ig9s 11 หลายเดือนก่อน

    Чет новое узнал

  • @svarshig4231
    @svarshig4231 6 หลายเดือนก่อน

    Если поставить фильтр низких частот в виде RC цепочки на выход датчика и сигнал с фильтра подавать на вход ацп, разве не получится то же самое, только без заморочек с кодом?

  • @OnufriyAlex
    @OnufriyAlex 11 หลายเดือนก่อน

    Как объяснение сути фильтрации для несведущих - отличный материал. Как пример реального кода - моветон, и вот почему:
    Использование массива в скользящем среднем это показатель быдлокодинга, т.е. автор кода не понимает ценности ОЗУ и затрачиваемого процессорного времени на вычисления. При каждом новом измерении происходит суммирование всего массива в какую-то "большую" переменную, при том, что большинство ПЛКшек на сегодняшний день остаются восьмибитными, т.е. киличество тактов процессора затрачиваемого на один цикл суммирования кратно равно количеству октетов в "большой" переменной. Получается, если мне нужно фильтровать показания с двадцати-тридцати-пятидесяти датчиков, то ОЗУ "до свидания", а ЦП большую часть времени выполняет бесполезный однообразный код и ничего другого просто сделать не успевает. Целый дорогущий процессорный блок на несчастную жменю датчиков.
    У Гайвера на канале "Заметки ардуинщика" есть видео про фильтрацию измеренных значений, где объясняется как именно нужно применять фильтр бегущего среднего.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Спасибо за развернутый комментарий, но вынужден уточнить детали:
      Естественно, это простой пример для начинающих, в котором формула воплощена "as is" для наглядности, и кушоеть много памяти и ресурсов, но! Тот недорогой ПЛК, который я использовал в примере, обладает 8 мегабайтами ОЗУ для пользовательских данных. Заманаюсь экономить =))))) И, простите, откуда инфа про восемь бит? Вполне "взрослые" микропроцессорные комплекты используются у всех лидеров рынка...
      Второе - скорость выполнения программы, он же сканцикл, при использовании моего метода, плюс с подгруженной веб-визуализацией, он не выходил из значений "холостого хода" - 300мкс. Да и в целом, ни разу не удалось его "прогрузить", чтобы он вышел на "человеческие" 10мс хотя бы =)))) даже если вместе с управлением приходилось решать задачи по даталоггингу, составлению отчетов с чтением/записью файлов и обмену этих файлов через FTP.
      И в третьих, сегодня у многих крупных клиентов в приложении к договору (т.н. Project Specification) прописывается требование об оформлении кода - декларируется использования конкретных языков программирования для решения каждого круга задач, и особенно в части написания формул - требуется максимальная наглядность и читаемость; ресурсов чтобы обработать такой "быдлокод" у современных машин "за глаза"...
      Увы, оптимизация уходит в прошлое и в промавтоматике, с другой стороны - может это и к лучшему, ведь становится проще разобрать логику построения чужой программы =))

    • @OnufriyAlex
      @OnufriyAlex 11 หลายเดือนก่อน

      @@Gnevistj У меня в эксплуатации находятся, кроме прочего, контроллеры покупки 2008 года Siemens SIMATIC S7-400 (это тот случай, когда работает - не трогай). На поверку при вскрытии выясняется, что вычислительная элементная база построена на контроллерах Atmel AVR серии (при этом есть подозрения на распределённые вычисления, т.к. один контроллер не способен обрабатывать такое количество кода).
      Снижение проходного уровня это хорошо, в том числе и я проник в АСУП благодаря упрощению написания кода и как следствие более быстрому выполнению проектов.
      С другой стороны я же сам и зарабатываю на жизнь перерабатывая проекты написанные "очень простым языком". К примеру, в существующую АСУ необходимо добавить какой-нибудь новый агрегат, а АСУ построена на трёхсотой серии и запас на расширение уже истрачен. Так вот, переход от Вашего способа фильтрации к формуле из видео Гайвера позволил мне примерно в два раза сократить время единичного измерения и сэкономить ОЗУ.
      Ну и напоследок, привет из Мариуполя, комбинат имени Ильича. В 2016 году у нас случился вирус Petya. "Лягли" все ПК как постов управления в частности, так и всей бизнес-сети комбината. Но наш ЛПЦ "Стан 3000", у которого посты управления выполнены на машинах 86 года, продолжил исправно работать, ибо нет такого вируса, который бы положил столь больших "старичков". Уцелели трубопрокатные линии с системой 93-го года, МНЛЗ 92-93-го года запуска так же продолжала работать. ICP DAS серии ICP CON вообще моё почтение, третий десяток лет трудятся и хоть бы хны. Это я всё к тому, что да, есть новые мощные контроллеры, но и старых на местах полно, а убедить собственника в смене "железной" части без какого-то качественного или экономического изменения крайне сложно.

  • @nicksy98
    @nicksy98 11 หลายเดือนก่อน

    Гневисть привет.
    Все умно и доходчиво, а как нам наладить диалог есть коммерческие темы.

  • @robertmonroe9728
    @robertmonroe9728 11 หลายเดือนก่อน +1

    Здесь только IIR упомянули. А вот FIR, median - не, не слышали. О Калмана (кстати, часто юзаю) - вообще молчу

  • @Light299792458
    @Light299792458 11 หลายเดือนก่อน

    Теперь я знаю :-)

  • @skakalinvlad
    @skakalinvlad 11 หลายเดือนก่อน

    Не ошибается тот, кто ничего не делает? Но разве ничего не делать - это уже не ошибка? :)
    А выпуск супер!!! Не знал, что можно и в цифре так сделать, сам бы на аналоге мутил перед самым входом (RC или LC, скорей первый, а то L иногда плюётся некрасиво, ещё C обидится, или датчик). Спасибо, просвещаете нас дремучих. 👍👍

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +1

      "Ничего не делать" - это целая жизненная философия, с которой я не согласен, ибо скучно это =))))))
      RC фильтр неплохой вариант, но можно замучиться подбирать номиналы, а при отладке на объекте это скушает много времени, плюс лишние детали (еще и вопрос сертификацией может возникнуть). С программным усреднением проще - коэффициент/период подобрал на глаз - и норм =)))))))

    • @RG-el8zy
      @RG-el8zy 10 หลายเดือนก่อน +1

      А я ФНЧ Бесселя 2-го порядка сделал на ОУ. В умных книгах написано, что надо аналоговый фильтр + цифровой фильтр. Некоторая дополнительная полезная информация есть на канале TDM Lab th-cam.com/video/Y_CQp6ENwS0/w-d-xo.html

  • @robertmonroe9728
    @robertmonroe9728 11 หลายเดือนก่อน

    Медианный фильтр чаще всего лучше всего из простых. Именно нечувствительностью к выбросам

  • @user-lp1tl4yx4x
    @user-lp1tl4yx4x 3 หลายเดือนก่อน

    Наш человек

  • @Seriyv0lk
    @Seriyv0lk 6 หลายเดือนก่อน

    Расскажи про ЧПУ-шку, что у тебя за спиной стоит. Платы сам делаешь на нём?

  • @omarmalyomarmaly9323
    @omarmalyomarmaly9323 9 หลายเดือนก่อน

    thx

  • @id_vk
    @id_vk 11 หลายเดือนก่อน

    Не нашел нигде в интернете как синхронизировать аудио с анимацией на oled дисплее i2c 128*64(да и в принципе на любом другом). Буду благодарен если снимешь урок на эту тему! (Пример: на дисплее включается анимация 2сек, и при включении анимации включается определенный звук с такой же продолжительностью. Включается другая рандомная анимация, и также соответственно включается звук присвоенный именно этой анимации)

  • @alexnikolaevich2110
    @alexnikolaevich2110 11 หลายเดือนก่อน

    На 9:48 где-то горько заплакал float :)

  • @lofo1979
    @lofo1979 11 หลายเดือนก่อน

    Ничего не понял, но интересно.)))

  • @Palladln
    @Palladln 11 หลายเดือนก่อน

    Есть еще средне-взвешенная средняя. там последним данным больший вес в формуле придается. и еще можно сгладить шумы если на входе интегратор из конденсатора и резистора поставить.

  • @alexeyr8897
    @alexeyr8897 2 หลายเดือนก่อน

    Друг!) Расскажи про P, PD, PI, PID регуляторы...

  • @SerV4
    @SerV4 11 หลายเดือนก่อน

    Не Саныч непонятно объяснил, похоже у него интеллект намного выше моего 😂

  • @mnus2016
    @mnus2016 11 หลายเดือนก่อน +2

    Ну это жесть конечно на каждом цикле двигать весь массив. Так не стоит делать даже для упрощения понимания при демонстрации 🙂
    Нужно завести ещё одну переменную-индекс на следующую позицию, далее записываем новое значение в ячейку куда указывает этот индекс, потом увеличиваем индекс на единицу и проверяем не вышел ли он за границу массива. Если вышел - обнулям. Ну а дальше суммируем. Хотя и по большому счёту и второй цикл суммирования массива лишний. Достаточно при старте заплнить весь массив, потом посчитать его сумму и уже оперировать только с этой суммой: перед тем как записывать новое значение в ячейку массива, из имеющийся суммы вычитаем значение этой ячейки и добаляем к сумме новое значение.

    • @UA3USY
      @UA3USY 11 หลายเดือนก่อน +1

      во блин завернул)

    • @vvdvlas8397
      @vvdvlas8397 11 หลายเดือนก่อน

      @@UA3USY
      Ага! Объясняя фразу "на каждом цикле двигать весь массив". А сколько багов ожидается на этом пути!

  • @user-ye8ly3yf1s
    @user-ye8ly3yf1s 11 หลายเดือนก่อน

    Доброго, Вам в личку вопросы можно написать по теме ?

  • @offgrisha
    @offgrisha 11 หลายเดือนก่อน

    Спасибо автору видео. Можете показать как работать с платами wifi D1 для ардуино Uno. Хочу создать систему умный дом для ардуино. С платой D1 не могу разобраться( подключить) и т.д.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Честно скажу - пока в планах не было, но, планы эти весьма динамично порой меняются =))))
      Может и будет такой выпуск =))))))

  • @alexshu1609
    @alexshu1609 11 หลายเดือนก่อน

    По фильтрам в своих свистоперделках пользую обычно "filt = (A * filt + signal) >> k;" подсмотрено у "гайвер фильтры" кстати там же хорошая статья есть

  • @user-je6qz4yk6v
    @user-je6qz4yk6v 11 หลายเดือนก่อน

    От оно как, оказывается нада... а мы по старинке при достижении измериловом заданного порогового значения запускаем таймер, напрочь забывая про сигнал, по прерыванию из таймера переизмеряемся, снова запускаем таймер если сигнал находится за порогом... и так цикл сколько нам надо на устранение условной помехи, и только после запускаем исполнителя. При нескольких различных пороговых уровнях длительность и число циклов может быть различным. Наследство тех времён, когда приходилось считать каждый байт и каждый такт...

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Вот напрочь забыл его упомянуть, хотя использовал совсем недавно аналогичный подход!!! Каюсь, виноват, спасибо за дополнение! =)))
      Метод никак не устаревший, он живее всех живых, и действительно прост в реализации, но есть одно ограничение - сей способ подходит только для управления посредством компараторов, сравнения с некоторой уставкой - в этом случае сей метод царь и Бог по простоте и быстродействию =)))
      Показанные мною методы больше подходят в случае если кроме управления нужна "не прыгающая" индикация, ну и в случае пропорционального управления они становятся незаменимы.

    • @user-je6qz4yk6v
      @user-je6qz4yk6v 11 หลายเดือนก่อน

      @@Gnevistj Когда надо получить усреднёнку для красивешной индикации, обычно берётся дискретизация выборки измерений 4-100Х от цикла обновления индикации. Редко когда делал обновление индикатора чаще раза в секунду. Часто это была совершенно отдельная подпрограмма, не завязанная на управление, живущая на отдельном таймере. Одна из важных фишек, не мешать вместе исполнительный код разных функций. Записываем значение АЦП в аккум (или выделенную ячейку памяти) при следующем измерении складываем это и старое, сдвиг аккума вниз (делим на два). Цикл повторяется. В момент обновления индикации имеющееся значение пихаем в регистр индикатора. Да, в принципе-то всё то же самое, что и у вас, но без математики в коде. Да, опять же наследие асма.

  • @RusLSystems
    @RusLSystems 11 หลายเดือนก่อน +1

    Другие методики
    Фильтр низких частот вошел в чат

  • @sergeyvoloshchuk6846
    @sergeyvoloshchuk6846 5 หลายเดือนก่อน

    О, сразу видно советского инженера! Все сигналы у него меняются медленно, поэтому их можно зафильтровать. Особенно температура. Поэтому когда я на своей Весте выезжаю зимой со стоянки торгового центра, то она показывает температуру +12 даже когда я уже оказался на улице, а до -15 она дойдёт хорошо если минут через пять.
    А если вы делаете датчик натяжения троса для подъемного крана, у вас тоже сигнал меняется медленно? Ну, груз же просто висит, надо показать натяжение. Вот только если возникнет затяжка, то вы должны СРАЗУ ЖЕ показать превышение, чтобы автоматика СРАЗУ выключила двигатель. А если вы его зафильтруете, то трос оборвется когда показания будут ещё далеко от критических.

  • @user-gw8qn5ik8b
    @user-gw8qn5ik8b 11 หลายเดือนก่อน

    Здраствуйте, есть инстаграм или ТГ?Есть предложение

  • @Ma_X64
    @Ma_X64 11 หลายเดือนก่อน

    Зачастую, бОльшую часть можно отфильтровать аналоговыми цепями. А FFT и, например, в обработке звука стараются не применять. Рекурсивные цифровые фильтры куда более распространены. Есть, между прочим, очень простой способ усиления НЧ и ВЧ с помощью банального сложения и вычитания двух соседних отсчётов. При сложении всё, что осталось неизменным (НЧ) удваивается, а при вычитании -- уничтожается. Кстати, практически все формулы, которые так любят приводить в учебниках, для микроконтроллеров подходят плохо, потому что требуют арифметику с плавающей точкой, а простенькие МК её жуть, как не любят. Большинство даже и целочисленное деление выполняют через костыли, не говоря уже о FP.

  • @kostantynljubcyc9484
    @kostantynljubcyc9484 11 หลายเดือนก่อน

    Уважаемый коллега, я несколько лет использую некий фильтр и назвал его TDS (Tracking filter with Differential output step), а Вы мне открыли глаза и указали, что он называется EMA. Только формула у меня Yt = Yt-1 + (Xt - Yt-1)*a. Не могу их одну в другую преобразовать.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +1

      Здравствуйте, коллега! Да, это один из вариантов формулы ЭМА, не "канонический", как в Википедии, например, но это именно она, один в один. В показанной мною формуле откройте скобки, и после, соберите скобки по множителю "а", и вы получите ваш вариант формулы =))

    • @kostantynljubcyc9484
      @kostantynljubcyc9484 11 หลายเดือนก่อน

      Успешно собрал :) Реально на практике использую упрощённую формулу и обозвал её TRS. Yt = Yt-1 + ((Xt > Yt-1) - (Xt < Yt-1))*a. То есть не экспоненциально, а линейно изменяем выходную величину. И нету умножения, а сравнение. Таким образом 8-битный контроллер делает эту фильтрацию десятком команд.

  • @hatuul
    @hatuul 11 หลายเดือนก่อน

    Спасибо.
    А PID фильтрация?

    • @drubakha
      @drubakha 11 หลายเดือนก่อน +1

      pid регулирование, а тут за фильтрацию

  • @zenneloh
    @zenneloh 10 หลายเดือนก่อน

    Это про схемотехнику?

  • @suntechnology
    @suntechnology 11 หลายเดือนก่อน

    Это перезалив? Я вчера этот ролик смотрел или сегодня утром😕

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +1

      Нет, не перезалив, выложил сегодня утром =)

  • @user-rk7oc5zj9s
    @user-rk7oc5zj9s 11 หลายเดือนก่อน

    А я усреднение среднего пользуюсь, это когда предыдущий результат складывается с тёкшим и делится на 2, затем он складывается с таким же средним и делится на количество заданных измерений. При 50 замерах раз в 100 мкС показания вольтметра стоят как вкопанные.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Если не ошибаюсь, этот метод называется скользящей медианой =) Принцип у них у всех похож, главное чтобы результат радовал =)

    • @user-rk7oc5zj9s
      @user-rk7oc5zj9s 11 หลายเดือนก่อน

      @@GnevistjБольше похоже на скользящие среднее, а в остальном Согласен на все 100 😁😁👍👍😉😉

  • @nurlybekmoldagaliev8920
    @nurlybekmoldagaliev8920 11 หลายเดือนก่อน

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

  • @user-il4kd9qq3y
    @user-il4kd9qq3y 11 หลายเดือนก่อน

    СМА можно написать и на 3-4 переменных, тогда вообще коэффициент фильтрации не ограничен. Короче от массива в 100,1000 и т.д. можно отказаться совсем.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Безусловно. Но не будет так наглядно =)

    • @user-il4kd9qq3y
      @user-il4kd9qq3y 11 หลายเดือนก่อน

      @@Gnevistj согласен, но куда не плюнь, если сколзящее среднее, в ПО то массивы, даже в пром. ПЛК не парятся. Поэтому и ограничены лимиты 32-128. Для выборками. Для давлений допустим в вентканалах с сумасшедшей турбулентностью, 32 выборки мало как у сименс например. Там 32, ещё и 100 сверху добавлять приходится.
      Ну в в общем видео ваше и вам решать о чём рассказывать. Хорошее дело делаете! )

  • @user-cm1cu4vu7d
    @user-cm1cu4vu7d 11 หลายเดือนก่อน

    Пасиба Санычу! Коротко все, доступно.
    [шутка]Аффтар пади пастрижысь, патлатый как тьолка лять[/шутка]

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน +1

      Нимагу пастричься - мну мотоциклист, мну по закону положено быть патлатым =))))))))))))

    • @RusLSystems
      @RusLSystems 11 หลายเดือนก่อน

      @@Gnevistj Поддерживаю. Рокерам и мотоциклистам положено. А если и тот и другой сразу - то 2 раза положено, даже на пиво скидку дают 😆

    • @user-cm1cu4vu7d
      @user-cm1cu4vu7d 11 หลายเดือนก่อน

      @@Gnevistj мой знакомый Кирилл говорит что он мацалтыклист (на мацалтыкале ездит)

  • @user-fw7sq9sj5k
    @user-fw7sq9sj5k 10 หลายเดือนก่อน

    Очень похоже на ПИД регулятор, которые есть в промышленности, и нет нужды лепить их на микроконтроллере.

  • @user-il4kd9qq3y
    @user-il4kd9qq3y 11 หลายเดือนก่อน

    Yt-1 надо объяснять для чайников, что это Y сохраненный на предыдущем цикле или предыдущем вызове подпрограммы.

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Принимаю! Мои извинения, не всегда легко удержать нужный уровень детализации при рассказе =)

    • @user-il4kd9qq3y
      @user-il4kd9qq3y 11 หลายเดือนก่อน

      @@Gnevistj Я Вас тоже понимаю, сложно сценарий писать и всё в голове удержать. Если есть возможность запилите передачу про рекуррентные формулы, для чайников будет полезно, а то все боятся их как и математики. А по итогу страшный ПИД сводится к сложению и умножению! )

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      @@user-il4kd9qq3y , если речь идет именно про ПИД - то такие выпуски планируются; возможно успею еще в этом году =)))

    • @user-il4kd9qq3y
      @user-il4kd9qq3y 11 หลายเดือนก่อน

      @@Gnevistj ПИД просто как пример, рекуррентных формул(к примеру википедия). Сам в относительно не давно свой первый ПИД написал т.к. в любой среде они есть уже готовые. Но тут по бюджету захотели ПЛК EKF. Хотя работал до этого с Сименс и КодеСис совместимыми контроллерами. По итогу в среде разработки EKF, забыл сейчас аналоги(при чем продаются в РФ и даже дешевле), видимо кто-то списал тупо ПИД из гит-хмб, у Гайвера, по итогу ПИД если один, работает нормально, если два конфликтуют, т.к. переменные в функции static. Другой вопрос в FBD комменнтов даже нет, есть только в Lad и ограничения на входах функции три выхода и что-то в районе 10 входов, вход/выход туда же входят. Остальное всё переменные для внутренней памяти функции а их 32, с учётом входов и выходов. Короче весело! Плюс когда надо обрзначить маски в WORD, а у них есть только INT по итогу надо пересчитать число в Int со знаком короче весело! По этому то и написал, что готовить тех кому это интересно надо тупо к лютой жести! Мы же асушники! Плюс нашей профессии, много асушников ушло в IT и мы сможем скоро тупо как в Крёстном отце назначать свою цену. Сцена с котом! ) Если подкачал с грамматикой - это всё пивас! )

    • @user-il4kd9qq3y
      @user-il4kd9qq3y 11 หลายเดือนก่อน

      @@Gnevistj да и ПИД делал с мёртвой зоной, ограничениями входных и выходных значений.

  • @user-fy9ow6nu1r
    @user-fy9ow6nu1r 11 หลายเดือนก่อน

    В нормальном устройстве шумы и прочие непотребства отсекаются до входа АЦП.

    • @denisgluk431
      @denisgluk431 10 หลายเดือนก่อน

      да уж.. хотелось бы посмотреть что у него за пром устройства такие, которые он нормальными считает

  • @sergy4470
    @sergy4470 11 หลายเดือนก่อน

    Кажется Саныч больше практик чем теоретик ?😁

  • @RuslanPanasyuk
    @RuslanPanasyuk 11 หลายเดือนก่อน

    Так а чего б не написать это всё на Си, где нет никаких проблем с плавающей точкой.

  • @anakoliy_tsyfra
    @anakoliy_tsyfra 11 หลายเดือนก่อน +1

    В программировании МК недавно, ещё учусь. Но блин, экономить вычислительный ресурс МК считывая значения раз в секунду - это мягко говоря тупо. Из всех уроков что я прошёл - большую часть кода, и соответственно, вычислительной мощности, тратится на то, что бы полученный результат донести до оператора изделия. А не выполнить какую либо автоматическую функцию... Опять же пример - бойлер, что бы клацать релюшкой, нужно, грубо говоря, 15 строк кода, остальное - это показать человеку температуру, обработать нажатия и пр. взаимодействие.
    Уход от плавающей запятой тоже такой применял. Смотрел как в уроке, понимал что это тупо (учу АВР, естественно Атмега8), переписывал код под "фиксированную" запятую. Итог - меньше памяти занято, удобнее читать код, сразу объявляются типы данных, а не как иногда бывает "ой, что то не работает..." *прошло пол часа* "...ааааа, тут нужно было присвоить другой тип данных" *пихается присвоение типа данных в середину кода*.

    • @dimkadimkin5861
      @dimkadimkin5861 11 หลายเดือนก่อน

      Хорошо продвигаетесь, так держать!
      Будет подезно, если еще таких привычек не приобрели, если в си пишете:
      1. Сразу ставить (), {}, [ ], обе скобки.
      Никогда не забудете, их потавить.
      2. Использовать структуры.
      3. Создавать свои типы данных.
      4. Испоьзовать тип union.
      5. Использовать указатели.
      Эффективность и читаемость повысятся в разы.

  • @v61kz
    @v61kz 11 หลายเดือนก่อน

    Да уж, цифровая фильтрация тема интересная и сложная. Как-то пытался сделать цифровой фильтр «по учепнику», всё по формулам преобразований (для аудиофайла в матлабе). Получил на выходе массив комплексных чисел. А как подать комплексный сигнал на ЦАП (ну или в данном случае записать в аудиофайл) нигде в «учепниках» не рассматривается🤣🤣🤣 Теория как-то отделена от практики😁 Нужен личный практический опыт, потом эти «учепники» уже переосмысляешь

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Без практики никак, полностью согласен. Учебник всегда дает "базу", скелет эдакий, который во время работы обращиваешь "мяском" опыта =)))))

  • @joramotorsportteam3277
    @joramotorsportteam3277 11 หลายเดือนก่อน +1

    SUPER!
    Teperj nado perehoditj na BK kompjuteri! 🎉
    A cto s SVO?
    Gatov ktoto k mogilizaciji ili luche putlera v Gagskij tribunal pislatj i zitj dalshe mirno?🎉

  • @flexoalex4168
    @flexoalex4168 11 หลายเดือนก่อน

    А зачем для фильтрации аналоговых сигналов, опрессовщик металло-пластиковых фитингов???

  • @ivanrusev2270
    @ivanrusev2270 9 หลายเดือนก่อน

    На асме не програмирую.Усреднение всегда тормозит программу.

  • @AA-ld1gc
    @AA-ld1gc 11 หลายเดือนก่อน

    Напомнил мне алгебру-чото не понял и дальше уже ничего не понятно .

    • @deniskhakimov
      @deniskhakimov 11 หลายเดือนก่อน

      Да ладно вам...
      По первой же формуле, показанной альтер-эго автора канала, было понятно, о чём пойдёт речь 😁
      p.s.: или я просто уделяю слишком много времени машинному обучению и статистике 🙄

  • @DIY_PLC
    @DIY_PLC 11 หลายเดือนก่อน

    ЦОС КИХ БИХ

    • @Gnevistj
      @Gnevistj  11 หลายเดือนก่อน

      Не-не-не, не путайте пожалуйста полноценную ЦОС и фильтрацию сигналов в автоматике - совершенно разные цели, подходы, и постоянные времени. Это близкие по функционалу только на первый взгляд области, и если я правильно помню теорию, то скользящие средние являются лишь упрощенной реализацией фильтра с КИХ =)))

  • @sqwertyuiop1514
    @sqwertyuiop1514 5 หลายเดือนก่อน +1

    Если сигнал выглядит так, как на 1:25, то нужно не фильтрацию делать, а гнать разработчика этой схемы ссаными тряпками! Потому что он не умеет грамотно развести земли и разделить их на цифровую и аналоговую.

  • @user-uv7lc7or5m
    @user-uv7lc7or5m 10 หลายเดือนก่อน

    Вот засрал мозг! Ставишь RC-фильтр и не жрёшь процессорное время!

  • @robertmonroe9728
    @robertmonroe9728 11 หลายเดือนก่อน +1

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

  • @cottoncat3700
    @cottoncat3700 11 หลายเดือนก่อน

    Усредняй, сигнал аналоговый, ты усредняй,
    С 300G улетит болванка а-то!
    Скорость света, конечно, имеет свой край,
    Но сигнал, лучше, всё равно усредняй

    • @skakalinvlad
      @skakalinvlad 11 หลายเดือนก่อน

      Ай-яй-яй-яй, всё усредняй))))

  • @fuppup
    @fuppup 11 หลายเดือนก่อน

    Спасибо!