Ну, не.
-
- Дополнительный шум нужен. Как сказали ниже - обязательно вне полосы
полезного сигнала. Величина шума должна быть больше
дифференциальной нелинейности и дискрета АЦП. Интегральная
нелинейность при этом всё равно останется. PS Сумма отчётов
(скользящее окно) - крайне посредственный фильтр (АЧХ = sin(x)/x),
лучше использовать нормальный БИХ-фильтр 1-3 порядка. Заодно и ОЗУ
сэкономишь. - argus98(13.10.2025 11:54, +1)
- Тут есть замечание что можно давать не только белый шум, но и развертывающий сигнал. Boвa(31 знак., 14.10.2025 03:34, ссылка)
- Почему вы считаете АЦП каким-то идеальным многоуровневым
компаратором, лишенным собственного шума? У меня сложилось
впечатление, что шум 1+ МЗР в реальных АЦП присутствует всегда.
Возможно, что распределение этого шума не идеальное для простого
оверсамплинга, но в особо тяжелых случаях его можно измерить и
учесть. - AlexBi(13.10.2025 13:48)
- Если спектр шума у АЦП не совпадает со спектром сигнала,
оверсемплинг будет улучшать разрешающую способность. А с
дизерингом, когда добавляется шум, превышающий размахом имеющуюся
нелинейность, и линейность АЦП. - Nikolay_Po(13.10.2025 13:51)
- Может быть коллега имел ввиду, что расстояние между уровнями АЦП
неодинаковые? Именно эта неодинаковость делает легенду об
оверсамплинге именно легендой. - Kpoк(13.10.2025 13:59)
- А дизеринг с оверсемплингом - полезным методом повышения
разрешающей способности и линейности. - Nikolay_Po(13.10.2025 14:01)
- Increzsing ADC resolution.. EDN(1 знак., 23.10.2025 08:52,
, ссылка)
- Increzsing ADC resolution.. EDN(1 знак., 23.10.2025 08:52,
- А дизеринг с оверсемплингом - полезным методом повышения
разрешающей способности и линейности. - Nikolay_Po(13.10.2025 14:01)
- Может быть коллега имел ввиду, что расстояние между уровнями АЦП
неодинаковые? Именно эта неодинаковость делает легенду об
оверсамплинге именно легендой. - Kpoк(13.10.2025 13:59)
- Если спектр шума у АЦП не совпадает со спектром сигнала,
оверсемплинг будет улучшать разрешающую способность. А с
дизерингом, когда добавляется шум, превышающий размахом имеющуюся
нелинейность, и линейность АЦП. - Nikolay_Po(13.10.2025 13:51)
- Согласен. Единственное, что у БИХов мне не нравятся выбросы, если делаешь что-то круче Баттерворта второго порядка. - Nikolay_Po(13.10.2025 11:55)
- Имей ввиду, что для оверсемплинга к полезному сигналу должен быть примешан белый шум (цветной будет врать), ну и оверсемплинг только повышает разрядность, а абсолютная точность все равно определяется точностью самого АЦП. Вот атмеловский апнот. Codavr(33 знак., 13.10.2025 11:11)
- Достаточно просто проверяется наборным делителем 1R-2R-4R-8R-16R,
на выходе которого при 31R напряжение чуть превышает 2 МЗР, к
примеру. Резисторы C2-29, питание от какого нибудь REF195. Ток, как
минимум, 5 мА. Сразу видно, есть ли стабильность или нет. - De_user(12.10.2025 22:45)
- Это на постоянке. А если сигнал меняется, то весь этот оверсемплинг
превращается в тыкву, если за время получения N измерений сигнал
изменится больше, чем на 0.5МЗР исходной точности. Eddy_Em(1060 знак., 13.10.2025 01:54)
- В таких делах, где данных много (а передискретизация - это много
данных), можно разменивать амплитуду на время. Nikolay_Po(1089 знак., 13.10.2025 09:40, +1)
- Самое понятное объяснение, по моему ! Как вариант, от PWM выхода
добавлять шума на пару МЗР :) - De_user(13.10.2025 15:59)
- Так и делаю. Через резистор на конденсатор, чтобы была пила. - Nikolay_Po(13.10.2025 16:38, +1)
- Круть ! - De_user(13.10.2025 20:50)
- Так и делаю. Через резистор на конденсатор, чтобы была пила. - Nikolay_Po(13.10.2025 16:38, +1)
- Самое понятное объяснение, по моему ! Как вариант, от PWM выхода
добавлять шума на пару МЗР :) - De_user(13.10.2025 15:59)
- Там корреляция с известной маской, она и позволяет вычленить сигнал из шума. Статья на БХ про запуск навигации на STM - пойдёт? - Toчкa oпopы(13.10.2025 07:50)
- В таких делах, где данных много (а передискретизация - это много
данных), можно разменивать амплитуду на время. Nikolay_Po(1089 знак., 13.10.2025 09:40, +1)
- Это на постоянке. А если сигнал меняется, то весь этот оверсемплинг
превращается в тыкву, если за время получения N измерений сигнал
изменится больше, чем на 0.5МЗР исходной точности. Eddy_Em(1060 знак., 13.10.2025 01:54)
- Для применения оверсэмплинга должно выполняться условие - в сигнале
должен присутствовать внеполосный шум. - reZident(12.10.2025 14:35)
- Шум квантования можно считать, в том числе, и внеполосным. - Nikolay_Po(12.10.2025 17:56)
- оверсемплинг нормально сработает там и только там, где шумит
младший разряд и этот шум хорошо описывается как ШИМ. вот из такого
сигнала ты легко вытащишь доп разряды. если же у тебя уже все
ровно, то забудь. толку будет либо мало либо данные будут
недостоверны - LordN(12.10.2025 14:12)
- Не "как ШИМ", а как Гауссовский (нормальный)? - Toчкa oпopы(12.10.2025 14:45)
- Чшим или как-то так LordN(121 знак., 12.10.2025 16:48)
- Или белый? - Бapбoc(12.10.2025 14:59)
- Нет, ни белый ни розовый расширения не даст, шум д.б. энергетически зависим от сигнала - LordN(12.10.2025 16:50)
- Не просто гауссовский, а внеполосный шум, обычно выше полосы полезного сигнала. - reZident(12.10.2025 14:49)
- Не "как ШИМ", а как Гауссовский (нормальный)? - Toчкa oпopы(12.10.2025 14:45)
- Если мы об одном и том же, то при увеличении количества измерений сигнал/шум увеличивается в корень из количества измерений раз. Но это не означает, что увеличение частоты семплирования может помочь. С/Ш тоже растет. Я так понимаю, чтобы добавить два разряда АЦП, нужно после АЦП тупо поставить скользящие среднее длинной 16 с коэф передачи 4. соответственно 3 разряда 64/8 - IBAH(12.10.2025 13:56)
- oversampling-averaging. Описано много где вот от STM, с картинкаме. mse homjak(163 знак., 12.10.2025 13:38, ссылка)
- Практика: 256 отсчетов позволяют нормально вытянуть дополнительные
два бита. Но у меня измерение температуры, скорость не нужна,
поэтому я просто выполняю суммирование 256-ти отсчетов и отдаю
"наверх" одно значение. Если памяти хватает, то можно и плывущее
окно сделать, но есть чуйчка что на задержке сигнала вход-выход это
не сильно скажется и изменение самого младшего бита вы увидете
через те же 256 отсчетовчерез 128 отсчетов. - Cкpипaч(12.10.2025 13:20)- Результат работы Вашего способа отличается от идеологически
правильного скользящего среднего тем, что у Вас результат
обновляется в 256 раз реже, чем поступают отсчеты, потому сигнал на
выходе ступенчатый. По времени в среднем он отстает на 128
отсчетов, как и в скользящем среднем, однако последнее реагирует на
любой скачек с такой задержкой, а время реакции Вашего способа
зависит от момента поступления скачка и плавает от нуля до 256
периодов дискретизации. Впрочем, для Yurasvs(78 знак., 12.10.2025 16:18)
- Именно так. И это осознанный размен дико избыточной скорости на дешевизну устройства. Cкpипaч(75 знак., 12.10.2025 18:03)
- Плывущее окно легко делать через аккумулятор, плюсуя в него вновь
поступившее значение и минусуя самое старое значение из буфера,
вместо которого в буфер кладётся новое, только что прибывшее
значение. - Nikolay_Po(12.10.2025 13:22)
- Именно так. Но под 256 отсчетов нужно 512 байт + указатели на
старое/новое. Полкило. У меня на atmega8 вся память кристала 1К. - Cкpипaч(12.10.2025 13:28)
- Я делал через 2 кольцевых буфера по 16 отсчётов, результат одного подавал на вход другого. Суть та же, что и при 256 отсчётах, но память экономится существенно, если нужно. И, кстати, использовал оверсемплинг в паре коммерческих девайсов на печатках с хорошей разводкой и во многих своих, не серийных, "макетных" поделках на PIC18 c 12-битным АЦП, вообще не запариваясь на тему подмешивания шума в сигнал. Расход памяти на окна - 2*16+3*16+2+3=85 байт + 2 байта сохраненный CS!(1054 знак., 24.10.2025 05:13)
- А, да, если отсчёты более чем 8 бит. А как иначе сделать скользящее
окно? Остаётся только экспоненциальный фильтр. - Nikolay_Po(12.10.2025 13:47)
- Можно вычесть 1/256 от текущего значения аккумулятора и прибавить
новый отсчёт. - LightElf(12.10.2025 14:39)
- Это и есть экспоненциальный фильтр. - Andreas(12.10.2025 14:46)
- Я таких умных слов не знаю, по-колхозному :-) - LightElf(12.10.2025 20:32)
- Да, удобная вещь и для сглаживания отсчетов годится, памяти -
только аккумулятор. - Visitor(12.10.2025 17:47)
- Но желательна не целочисленная арифметика. Хотя-бы - с фиксированной точкой. - Toчкa oпopы(12.10.2025 21:43)
- Это и есть экспоненциальный фильтр. - Andreas(12.10.2025 14:46)
- Можно вычесть 1/256 от текущего значения аккумулятора и прибавить
новый отсчёт. - LightElf(12.10.2025 14:39)
- Именно так. Но под 256 отсчетов нужно 512 байт + указатели на
старое/новое. Полкило. У меня на atmega8 вся память кристала 1К. - Cкpипaч(12.10.2025 13:28)
- Результат работы Вашего способа отличается от идеологически
правильного скользящего среднего тем, что у Вас результат
обновляется в 256 раз реже, чем поступают отсчеты, потому сигнал на
выходе ступенчатый. По времени в среднем он отстает на 128
отсчетов, как и в скользящем среднем, однако последнее реагирует на
любой скачек с такой задержкой, а время реакции Вашего способа
зависит от момента поступления скачка и плавает от нуля до 256
периодов дискретизации. Впрочем, для Yurasvs(78 знак., 12.10.2025 16:18)
- Два бита - это в 4 раза. Возводим в кревадрат - 16. Т.е. нужно
медианой усреднять 16 измерений, тогда точность на 2 бита лучше
будет. Только если де-факто у вас уже шумят младшие 2 бита,
придется 256 сэмплов усреднять... - Eddy_Em(12.10.2025 12:59)
- НичО не шумит, мне нужно более точно определить порог обнаружения.
Сейчас этот порог в пределах четырёх бит. И да, могу 1024 отсчёта
взять, сигнал медленный. А фильтры уже есть, медианный и
экспоненциальный. - Бapбoc(12.10.2025 13:11)
- Ответ: Toчкa oпopы(544 знак., 12.10.2025 15:08)
- Это было неверное высказывание с моей стороны. Нешто бывает, что
когда вообще не шумит. Уже сказал, для чего нужен порог. Мне просто
нужно понять место оверсемплинга в последовательности обработки.
Потыкаюсь, пойму, может быть. - Бapбoc(12.10.2025 15:31)
- Думаю, что можно и так, и так. В первом случае - будет ещё и децимация. Toчкa oпopы(85 знак., 12.10.2025 15:59)
- Это было неверное высказывание с моей стороны. Нешто бывает, что
когда вообще не шумит. Уже сказал, для чего нужен порог. Мне просто
нужно понять место оверсемплинга в последовательности обработки.
Потыкаюсь, пойму, может быть. - Бapбoc(12.10.2025 15:31)
- если нет шума, то работать не будет. Или придётся "размазывать
дополнительным сигналом. Либо псевдошумовым, либо
синус-треугольник-пила с периодом, кратным измерению. - mse homjak(12.10.2025 13:46)
- Тут мне непонятно. Шум есть всегда. Или нужно, чтобы дёргался
последний бит? Он таки дёргается, иначе и не нужен был бы порог. - Бapбoc(12.10.2025 14:34)
- Я там пдфчик кинул, посмотрите.Такие и от Атмела есть, и от АД. Там
и формулы для количества выборок от числа разрядов, и
схемотехничные решения. - mse homjak(12.10.2025 14:41)
- Спасибо. Вроде бы мой случай. Т.е. можно. Правда, на вопрос из топика нет ответа. Попробую и так и сяк. - Бapбoc(12.10.2025 14:59)
- Я там пдфчик кинул, посмотрите.Такие и от Атмела есть, и от АД. Там
и формулы для количества выборок от числа разрядов, и
схемотехничные решения. - mse homjak(12.10.2025 14:41)
- Тут мне непонятно. Шум есть всегда. Или нужно, чтобы дёргался
последний бит? Он таки дёргается, иначе и не нужен был бы порог. - Бapбoc(12.10.2025 14:34)
- Попробуйте сначала максимальную частоту выборки, которую потянут
ваши АЦП и ЦП с экспоненциальным фильтром. Выбирайте для дальнейшей
обработки после экспоненциального фильтра с той же частотой, что и
раньше - получится прореживание. Лично я опасаюсь медианного
фильтра - он может сделать сигнал ступенчатым и мешать работать с
производными сигнала. Nikolay_Po(177 знак., 12.10.2025 13:18)
- Как раз с производной. Порог, который нужно уточнить, как раз таки есть порог скорости изменения сигнала. - Бapбoc(12.10.2025 14:25)
- Ответ: Toчкa oпopы(544 знак., 12.10.2025 15:08)
- НичО не шумит, мне нужно более точно определить порог обнаружения.
Сейчас этот порог в пределах четырёх бит. И да, могу 1024 отсчёта
взять, сигнал медленный. А фильтры уже есть, медианный и
экспоненциальный. - Бapбoc(12.10.2025 13:11)
- Дополнительный шум нужен. Как сказали ниже - обязательно вне полосы
полезного сигнала. Величина шума должна быть больше
дифференциальной нелинейности и дискрета АЦП. Интегральная
нелинейность при этом всё равно останется. PS Сумма отчётов
(скользящее окно) - крайне посредственный фильтр (АЧХ = sin(x)/x),
лучше использовать нормальный БИХ-фильтр 1-3 порядка. Заодно и ОЗУ
сэкономишь. - argus98(13.10.2025 11:54, +1)