Фильтрация ошибки младшего бита АЦП

Тема в разделе "WASM.ZEN", создана пользователем Y_Mur, 11 ноя 2010.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    Параллельный ацп выдаёт N'разрядный код, это не двоичный код. Приращение квантуемого сигнала устанавливает старший разряд в 1. Тоесть например по мере увеличения сигнала на выходе будет:
    0001
    0011
    0111
    Последовательный ацп выдаёт N'разрядный двоичный код, это сигнал не с аттенюатора как в случае с параллельным ацп, а сигнал со счётчика, это привычная нам система счисления, тоесть:
    0001
    0010
    0011
    0100
    К данной системе счисления не применимо понятие не точности младшего бита, так как от него зависят все остальные и он не определяет лимит сигнала, в отличае от параллельного ацп.

    Для обратной оцифровке(цап) операции в случае параллельного ацп необходим аттенюатор, для последовательного ацп необходим двоичный дешифратор.
     
  2. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Y_Mur
    В математику веры нет, или что?
    Я, подумав, пришёл к выводу, что последнее предложенное условие жестковато будет, недостаточно показательно. Можно слабее:
    1. если abs(a-b)<2, то f(a)==f(b);
    2. f != const, то есть существуют такие a, b (a!=b), что f(a) != f(b)
    И отсюда доказывается, что f не существует. Примерно так же, надо взять любые a, b (для определённости a<b) и рассмотреть череду равенств:
    f(a) == f(a+1), f(a+1) == f(a+2) ... f(b-1) == f(b), далее используя транзитивность ==, мы приходим к выводу, что f(a) == f(b). То есть, исходя из (1), мы доказали что для любых a, b будет верно равенство f(a) == f(b). А это противоречит (2).

    Ещё раз: если мы требуем от функции, чтобы она для любых достаточно близких значений аргумента выдавала бы одинаковые результаты, то эта функция будет на всех значениях аргумента выдавать один и тот же результат. Это означает, что можно медитировать тысячелетиями, можно экспериментировать с чем угодно, но несмотря ни на какие усилия найти нужной функции не удастся. Если конечно Вас не устроит функция, которая всегда возвращает одно и то же значение.
    Единственное осмысленное направление дальнейших изысканий -- это поиск другой постановки задачи. Я сомневаюсь что на этом пути можно найти что-то, но поскольку я не совсем понимаю Ваших целей, то я могу ошибаться.
    Вот! О чём и я говорю. Нужна другая постановка проблемы, например избавление сигнала от "дрожания". И эта проблема вполне преодолима.
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Clerk речь естественно о втором варианте выдающем "привычный" двоичный код и как раз хочу найти способ исключить влияние малой помехи (с амплитудой в 1-2 младших бита) на старшие биты. В конце концов у FPU чисел тоже неточность младшего бита может влиять на старшие биты но при этом можно сравнивать два FPU числа на приближённое равенство как A-B < 0.0001. Здесь такой приём не совсем то что нужно, но это имхо пока не значит что задача не решаема.

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

    Задача "избавиться от дрожания" это подзадача исходной, в принципе её решение тоже лучше чем ничего :)
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    Помеха имеет амплитудное значение большее по модулю чем основной сигнал. Тоесть её нужно ограничить сверху и возможно с низу(это определяется постоянным смещением сигнала). Если паразитным считается сигнал с амплитудой большей Ag, для которого значение на выходе ацп Ig, то для фильтрации нужно ограничить сигнал этим уровнем. Тоесть если I > Ig тогда I = Ig. Обычно для этого ограничивают квантуемый сигнал, просто смещая его через диод, который откроется при напряжении отсечки.
    Если под помехой понимать кратковременный импульс или шум небольшой амплитуды, то тут фильтрация проблемна, нужно учитывать длительности. Лучше взять аналоговый фильтр(интегрирующая цепь, параметрическую линию(задержки) и пр.).
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ну ежели аппелировать к математике, то функция преобразования любого АЦП (независимо от его реализации - параллельный, последовательный или еще какой) - это идеальная ступенчатая функция y=f(x), а значит в любой точке скачка\разрыва xi обязательно существует сколь угодно малое значение (эпсилон) e > 0, при котором значения f(xi+e) и f(xi-e) различаются на величину скачка функции f(x) в данной точке xi.
    Поскольку в реалии мы имеем дело не только с математикой, но и с физикой, то отличное от нуля эпсилон-дрожание существует всегда (по крайней мере) в виде теплового шума. Поэтому если входной сигнал в точности совпадает с точкой скачка функции f(x), то любые "микроскопические" тепловые флуктуации x будут приводить к скачкообразному изменению выходного значения f(x).
    От того, что мы вводим загрубление, отсекая или округляя младшие разряды, или наоборот уточняем результат за счет усреднения, ситуация принципиально не изменяется, т.к. функция преобразования в итоге все равно остается ступенчатой и изменяется лишь размер ступени (либо больше, либо меньше исходного)
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    leo
    Просто автор не корректно описал задачу, нужно было уточнить что есть помеха. Либо это паразитный всплеск сверх максимального уровня, либо это всякий сигнал, скорость изменения которого больше лимита. Такие сигналы отделяются дифференцирующей цепью, подавляются интегрирующей, это если аналоговый. Цифровой так в принципе полноценно обработать невозможно, так как часть исходного сигнала утеряна при квантовании.
     
  7. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    leo
    Это уже хорошее наглядное объяснение.

    Ночью пришёл к аналогичному выводу воспользовавшись советом Clerk рассмотреть переход к параллельному преобразователю, т.е. заменить двоичное представление числа представлением в виде горсти горошин - это позволяет абстрагироваться от системы счисления. Тогда "загрубление" это деление исходной кучки на N равных частей с отбрасыванием остатка <N. И тогда всегда возможно что в остатке будет N-1 горошина и добавление одной к исходной куче приведёт к добавлению по одной во все "загрублённые" кучки.

    Теперь наконец для меня вопрос прояснился.
    Всем спасибо :)
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    Скорость изменения квантованного сигнала можно определить как dI/dT, где I амплитуда. У помехи dI'/dT << dI/dT. Если например квантуется меандр, то его фронты не могут считаться помехами, так как хотя длительность фронта мала, но длительность переходного процесса(импульса) велика. Для такого анализа явно не достаточно просто измерить длительность фронта, нужно измерить длительность самого импульса. Аппаратное решение будет не приемлимым, это нужно програмно делать.
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Clerk
    В данном случае это немного из другой оперы, меня интересовала квазистатическая постановка задачи.
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    Если сигнал аналоговый, то ваша задача решается элементарно:
    [​IMG]
    На входе модулированный сигнал(синус).
     
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Clerk
    это решение не к моей задаче :)
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    К вашей. Вы хотите решить задачу интегрирования, найти константу, если никакие уловия не известны. Для этого вам нужно использовать ацп во много раз быстрее чем максимальная скорость изменения квантуемого сигнала. Иначе решение не возможно. В общем случае необходимо использовать НЧ аналоговый фильтр, как на скрине. Чем не устраивает это решение, разве так сложно поставить обычный фильтр и усилитель на одном чипе ?
     
  13. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Clerk
    Чтобы увидеть что скорости тут ни при чём достаточно перечитать #1, уточннение в обращении к l_inc в #20 и резюме в #27.
    Вопрос в том что мне был не очевиден нюанс поведения чисел который я заметил на АЦП, хотя на самом деле он относится ко всем числам, а не только к считанным с АЦП, например с тем же самым эффектом можно столкнуться округляя результаты FPU вычислений. Впрочем если вам до сих не понятна суть вопроса, то лучше не заморачивайтесь с попытками ответа, поскольку я уже понял то что хотел понять, ещё раз спасибо за подсказку с "параллельностью".
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    Мне суть вопроса понятна полностью, более того это имеет прямое отношение к моей специальности по которой я работаю.)
     
  15. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Clerk Тогда странно что отвечаешь не на то про что спрашиваю :)
    Что касается прикладной стороны задачи - "отфильтровать помеху в младших битах АЦП встроенного в МК и исключить вызванный ею случайный шум", то внешний фильтр не позволяет фильтровать шумы возникающие внутри самого АЦП - их можно уменьшить за счёт: 1)установки между цифровой и аналоговой частью питания МК рекомендованноного производителем LC фильтра (естественно он у меня установлен), 2)перевода МК во время измерения в специальный режим сна, когда в нём спит практически всё кроме АЦП, 3)снижения тактовой частоты МК, 4) замены встроенного АЦП на внешний прецизионный и малошумящий. Но все эти меры не решают задачу на 100%, поскольку когда входное напряжение (постоянное, например заданное потенциометром, и совершенно точно не содержащее шумов соизмеримых с вкладом 1 бита) равно одному из порогов переключения, то это состояние неустойчивого равновесия (как у параллельного так и у последовательного АЦП) и даже ничтожно малый шум (который внутри АЦП есть всегда) заставит АЦП выдавать в соседних выборках значения с разностью ±1, независимо от того используются в МК все доступные разряды АЦП или только старшие биты.
    Бороться с этим можно с помощью программного гистерезиса, но суть моего вопроса была в том чтобы разобраться в фундаментальных причинах и особенностях самого этого явления.