metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-12-04 10:45 am

Внезапно: oversampling и увеличение точности

Ошибся в вычислении требуемой точности АЦП для измерения давления, получил что для MPX4115 нужно АЦП 12 бит или же линейное смещение и усиление чтобы получить нужную точность на 10 битах(PIC и ATmega оба имеют такие встроенные АЦП).
Ну пошел копаться, как люди делают - оказывается, есть хитрый метод выдушить из 10-битного АЦП большую точность, за счет, во первых, усреднения, во-вторых, наличия шума на входе.
Идея в следующем: на каждый дополнительный бит точности нужно взять с АЦП 4 отсчета, просуммировать их и откинуть 1 младший бит. Т.е. для 1 бита - 4 отсчета, для 2 - 16 отсчетов, итд.

За счет наличия шума у АЦП будут плавать показания, но т.к. реальный сигнал сидит где-то ближе к одному из выходных значений (N;N+1) в пределах разрешающей способности АЦП, то статичестическое распределение снятых показаний будет отражать реальное значение сигнала с точностью выше, чем разрешающая способность АЦП.

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

[identity profile] teewoon.livejournal.com 2010-12-04 11:39 am (UTC)(link)
Зачем пытаться измерить с 12-битной точностью весь диапазон давления? Наверняка атмосферное колеблется по входу ацп с размахом десятых-сотых долей вольта вокруг некой точки. Если сузить с помощью Fref- & Fref+ диапазон, то может и 10 бит хватит с избытком?

[identity profile] metaclass.livejournal.com 2010-12-04 12:04 pm (UTC)(link)
Да, +-Fref хватит. В принципе, тогда даже усиление включать наверно не понадобится.

[personal profile] ex0_planet 2010-12-04 12:07 pm (UTC)(link)
Остается только вопрос о точности задания опоры и погрешностей схемы сдвига уровня, хехе :-)

[identity profile] metaclass.livejournal.com 2010-12-04 12:16 pm (UTC)(link)
Его все равно калибровать, в общем-то и пофиг на ошибки.

[identity profile] teewoon.livejournal.com 2010-12-04 12:20 pm (UTC)(link)
Vdd тоже плавает =)

[identity profile] metaclass.livejournal.com 2010-12-04 12:41 pm (UTC)(link)
У датчика оно же в качестве опорного, т.е. АЦП и датчик друг друга скомпенсируют в некотором роде.

[identity profile] teewoon.livejournal.com 2010-12-04 01:07 pm (UTC)(link)
Тогда из 3х 1% резисторов сделать делитель от Vdd до Vss - они тоже будут плавать, пропорционально.

[identity profile] teewoon.livejournal.com 2010-12-04 12:20 pm (UTC)(link)
Обшибся, Vref

[identity profile] ns02.livejournal.com 2010-12-04 03:41 pm (UTC)(link)
Фильтр Калмана тебя спасёт :)

[identity profile] thedeemon.livejournal.com 2010-12-04 05:54 pm (UTC)(link)
Кстати да, помню очень впечатлился, когда на военной кафедре ПВО рассказали, как с помощью фильтра Калмана получают точность определения координат цели намного превышающую разрешающую способность радара.

[identity profile] gunner-avs.livejournal.com 2010-12-05 05:27 pm (UTC)(link)
реббе возмите за правило алгоритм треугольника - 1 треть самых высоких результатов откидываем, 1 треть самых низких откидываем, остальное усредняем - работает наура

[identity profile] metaclass.livejournal.com 2010-12-05 05:33 pm (UTC)(link)
Это вроде хорошо для шумов с кривыми характеристиками, которые плохо усредняются. Обычные белые шумы и просто так усредняются.

[identity profile] tzirechnoy.livejournal.com 2010-12-05 08:57 pm (UTC)(link)
Практика показывает, что чтобы это работало -- шум нужно создавать самому.

[identity profile] blackyblack.livejournal.com 2010-12-06 06:21 am (UTC)(link)
Не пойму, куда здесь 12 бит... В мм. ртутного столба 10 бит хватает. Нужны зачем-то доли миллиметров?

[identity profile] metaclass.livejournal.com 2010-12-06 09:32 am (UTC)(link)
Да, я ж говорю - ошибся в вычислениях на два бита. Конкретно - забыл на 5 вольт поделить :)