Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как поднять разрешающую способность АЦП
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
GetSmart
Меня интересует принципиальная возможность такой махинации. Точнее я знаю что это можно сделать и есть кое-какие соображения, но хотелось бы услышать мнения больших специалистов, чем я.

Самый банальный вариант - усреднение результата в скользящем буфере. Буфер из 8 элементов может увеличить разрешающую способность на 3 бита. Это в идеале конечно, и с некоторыми оговорками smile.gif

Вообще, подразумевается что есть процессор с 10-битным быстродействующим АЦП. Требуется увеличить время преобразования (получения результата) с целью увеличения его точности.

Особо меня впечатлил принцип действия дельта-сигма АЦП ADS1216, у которого точность (разрядность) находится в очень интересной зависимости от количества измерений. При одинаковых настройках (Fmod/Fdata=500) и одном измерении точность = 14 разрядов. При двух таких же измерениях точность = 18 разрядов. При трёх = 20.

Прошу спецов высказать уже известные решения, а так же (гениальные smile.gif) идеи.
TBI
Необходимо применить технологию под названием Oversampling and Averaging.
http://www.silabs.com/public/documents/tpu...al/en/an118.pdf
fontp
Вы же сами говорите, что нужно поднять частоту дискретизации, а потом отфильтровать нужную полосу. Это так называемый gain преобразования. Очевидно, что смысл в том, что шум квантования равномерно распределится в полосе АЦП и будет отфильтрован. Во всяком случае, если сигнал псевдослучайный (не периодический).

Обычно используют фильтр получше, чем скользящее среднее. Если быстродействие критично - CIC фильтр высокого порядка. Если пофиг - то прямоугольный FIR, или даже IIR если фаза не играет
-=ВН=-
Цитата(GetSmart @ May 22 2007, 13:43) *
Меня интересует принципиальная возможность такой махинации. Точнее я знаю что это можно сделать и есть кое-какие соображения, но хотелось бы услышать мнения больших специалистов, чем я.

Самый банальный вариант - усреднение результата в скользящем буфере. Буфер из 8 элементов может увеличить разрешающую способность на 3 бита. Это в идеале конечно, и с некоторыми оговорками smile.gif

Вообще, подразумевается что есть процессор с 10-битным быстродействующим АЦП. Требуется увеличить время преобразования (получения результата) с целью увеличения его точности.

Особо меня впечатлил принцип действия дельта-сигма АЦП ADS1216, у которого точность (разрядность) находится в очень интересной зависимости от количества измерений. При одинаковых настройках (Fmod/Fdata=500) и одном измерении точность = 14 разрядов. При двух таких же измерениях точность = 18 разрядов. При трёх = 20.

Прошу спецов высказать уже известные решения, а так же (гениальные smile.gif) идеи.

Скользящее усреднение на 8 на 3 разряда не поднимут. Они поднимут в корень из 8 раз. А это меньше 2 разрядов. smile.gif
GetSmart
Вариант с подмешиванием высокочастотного шума был у меня самым первым. Его я охарактеризовал как совсем не банальный. Но и не сложный при этом. Чем-то он похож на обратное преобразование ШИМ-->Аналог.

Есть ещё один банальный вариант - с помощью ЦАПа добавлять к измеряемому сигналу напряжения, меньшие цены одного разряда АЦП и потом вычитать их из результата.
fontp
Цитата(GetSmart @ May 22 2007, 14:19) *
Вариант с подмешиванием высокочастотного шума был у меня самым первым. Его я охарактеризовал как совсем не банальный. Но и не сложный при этом. Чем-то он похож на обратное преобразование ШИМ-->Аналог.

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


Подмешивание будет работать всегда, но оно не обязательно. Если полезный сигнал широкополосный, он не коррелирован со своим шумом квантования и расползётся по всей полосе АЦП. Поэтому достаточно отфильтровать полосу сигнала, а шум квантования сам уйдёт. Ну не весь, а внеполосная часть
Если поднять частоту дискретизации в N раз, а потом отфильтровать по Найквисту - сузив полосу в N раз, получите N-раз по энергетике, или корень из N по амплитуде, как указал уважаемый BH c крыльями
GetSmart
fontp
Меня вообще-то интересовало повышение разрядности измерения медленно меняющихся сигналов. Без подмешивания чего-то к ним как мне кажется нельзя поднять точность преобразования. Я прав?
Andreas1
В статье по ссылке хорошо описана основная проблема - линейность АЦП. А шумы и сами добавятся.
fontp
Цитата(GetSmart @ May 22 2007, 14:57) *
fontp
Меня вообще-то интересовало повышение разрядности измерения медленно меняющихся сигналов. Без подмешивания чего-то к ним как мне кажется нельзя поднять точность преобразования. Я прав?


Смотря, что вы называете медленно меняющимся. Он может быть медленно меняющимся, но не периодическим. Не почти синус или пила. Шум квантования не должен коррелировать с сигналом.
В противном случае подмешивайте широкополосный шум, который можно и не вычитать, а опять же отфильтровать. В модемной связи ничего не добавляют - добавку играет физический шум, превышающий младшие разряды. Он сам добавляется
GetSmart
Цитата(TBI @ May 22 2007, 16:02) *
Необходимо применить технологию под названием Oversampling and Averaging.
http://www.silabs.com/public/documents/tpu...al/en/an118.pdf

Очень интересный документ. Надо бы прочитать основательно как будет время.

[fontp]
Меня интересуют принципиальные отличия в двух следующих алгоритмах с одинаковой частотой дискретизации:
1. берётся N выборок и вычисляется тем или другим фильтром результат. Потом берутся уже следующие N выборок.

2. берётся N выборок и вычисляется тем или другим фильтром результат. Далее последняя выборка удаляется, всё смещается и добавляется одна новая. Скользящий буфер, фильтр любой, по желанию.

Разумеется типы фильтров в обоих вариантах одинаковые. Принципиально какой алгоритм лучше и точнее? И у какого из них верхняя частота измеряемого сигнала будет выше? Подразумеваю что у второго, но...
-=ВН=-
Цитата(GetSmart @ May 22 2007, 14:57) *
fontp
Меня вообще-то интересовало повышение разрядности измерения медленно меняющихся сигналов. Без подмешивания чего-то к ним как мне кажется нельзя поднять точность преобразования. Я прав?

Не совсем. Можно обойтись имеюшимся "естественным" шумом устройства. Проблема только в том, что выгрыш в корень из N при использовании естеств. шума - исключение. В подавляющем большинстве случаев он будет меньше, часто очень намного smile.gif
GetSmart
Цитата(fontp)
Смотря, что вы называете медленно меняющимся. Он может быть медленно меняющимся, но не периодическим

Это значит, что за одно измерение АЦП сигнал меняется значительно меньше чем на один младший разряд. Разумеется если он чистый без шума. Например когда на входе АЦП стоит хороший RC-фильтр.

Цитата(-=ВН=- @ May 22 2007, 17:16) *
Не совсем. Можно обойтись имеюшимся "естественным" шумом устройства. Проблема только в том, что выгрыш в корень из N при использовании естеств. шума - исключение. В подавляющем большинстве случаев он будет меньше, часто очень намного smile.gif

Значит я правильно подумал. В наихудшем случае я могу расчитывать на полную безшумность схемы, так как дополнительный шум... как говорится кашу маслом не испортит. Значит при "полном штиле" его нужно добавить чтобы приблизиться к корню из N.
fontp
Цитата(GetSmart @ May 22 2007, 15:15) *
Очень интересный документ. Надо бы прочитать основательно как будет время.

[fontp]
Меня интересуют принципиальные отличия в двух следующих алгоритмах с одинаковой частотой дискретизации:
1. берётся N выборок и вычисляется тем или другим фильтром результат. Потом берутся уже следующие N выборок.

2. берётся N выборок и вычисляется тем или другим фильтром результат. Далее последняя выборка удаляется, всё смещается и добавляется одна новая. Скользящий буфер, фильтр любой, по желанию.

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


Какое это имеет отношение к первоначальному вопросу как увеличить эффективную разрядность аЦП?
В обоих случаях 1 и 2 у вас одинаковое частотное разрешение, а значит отфильтровать полосу вы сможете одинаково. Второй случай (скользящее окно вместо блочной обработки) обеспечивает ещё и высокое разрешение по времени. А оно вам надо? Зато вычислительные затраты больше. Или Вы будете фильтровать выход схемы 2 снова? Так делают в DDC, но только с целью подавления боковиков от неидеальных фильтров
TBI
Цитата(GetSmart @ May 22 2007, 15:15) *
Очень интересный документ. Надо бы прочитать основательно как будет время.


Почитайте основательнее. Решается все программным путем. Есть пример:
http://www.silabs.com/public/documents/sof.../en/an118sw.zip
-=ВН=-
Цитата(GetSmart @ May 22 2007, 15:23) *
В наихудшем случае я могу расчитывать на полную безшумность схемы, так как дополнительный шум... как говорится кашу маслом не испортит. Значит при "полном штиле" его нужно добавить чтобы приблизиться к корню из N.

Ну если у Вас шум очень мал, а к корню хочется приблизиться, то добавляйте. Или ставьте другое АЦП. Вообще это ведь очень давний способ, ноги у него из тех времен, когда не то, что многоразрядные, а вообще АЦП были редкостью. Народ извращался как мог и напридумывал столько, что даже и сейчас еще расхлебывают и аппликэйшен ноты пишут :-).
GetSmart
Цитата(fontp)
Какое это имеет отношение к первоначальному вопросу как увеличить эффективную разрядность аЦП?

Не понял sad.gif
Оба алгоритма с повышенной частотой дискретизации и усреднением. Самое что ни на есть прямое отношение. Кажется.

Высокое разрешение по времени мне не особо надо. Но вот почему-то мне кажется, что второй вариант имеет частоту среза выше в N раз. И из-за этого и вычислительные способности выше. Подчеркну, что всё это при одинаковой частоте дискретизации.

Принципиальная разница в том, что перед входом АЦП будут стоять (можно поставить) фильтры с разным срезом. Вообще-то хотелось бы сравнить все показатели обоих алгоритмов, как например качество преобразования (точность) сигнала при одинаковых вычислительных затратах и частоту среза относительно частоты дискретизации. Это может иметь значение в ситуации когда АЦП работает на максимальной скорости.

Кстати, у дельта-сигма АЦП очень похожий алгоритм работы. То есть повышение разрядности хотро..пыми способами.

А кто-нибудь знает как дельта-сигма АЦП при получении двух результатов измерения повышает разрядность с 14 до 18 бит? И что означает sinc2 и sinc3 фильтры?
fontp
CIC фильтры 2-го и 3-го порядка. Это как скользящее среднее только лучше. Скользящее среднее имеет импульсный отклик - прямоугольник. CIC 2-го порядка - прямоугольник свёрнутый с собой - треугольник. CIC3 - прямоугольник свёрнутый три раза - типа квадратичный сплайн. Давятся боковики при простой аппаратной реализации

Цитата(-=ВН=- @ May 22 2007, 15:41) *
Народ извращался как мог и напридумывал столько, что даже и сейчас еще расхлебывают и аппликэйшен ноты пишут :-).


Не надо гнать... . Всё работает потихоньку, сами знаете, в меру линейности АЦП
-=ВН=-
Цитата(GetSmart @ May 22 2007, 15:59) *
Кстати, у дельта-сигма АЦП очень похожий алгоритм работы. То есть повышение разрядности хотро..пыми способами.

А кто-нибудь знает как дельта-сигма АЦП при получении двух результатов измерения повышает разрядность с 14 до 18 бит? И что означает sinc2 и sinc3 фильтры?

Нет там ничего хитрого. sinc2,sinc3 - ЧХ фильтра ~=(sinx/x)^2, ~=(sinx/x)^3. ИХ - треугольник и 2 параболы соответсвенно. Реализация часто (при допустимом прореживание) в виде CIC.
GetSmart
Можно ли добавлением шума повышенной амплитуды уменьшить собственные нелинейности АЦП?
-=ВН=-
Цитата(fontp @ May 22 2007, 16:03) *
Не надо гнать... Всё работает потихоньку, в меру линейности АЦП

И что я гоню, объясните-ка? Методам этим на самом деле несколько десятков лет. И то, что они работают было известно тогда же, несколько десятков лет назад. Если Вы возражаете против этого, то гоните Вы.
DRUID3
Цитата(GetSmart @ May 22 2007, 15:10) *
Можно ли добавлением шума повышенной амплитуды уменьшить собственные нелинейности АЦП?

07.gif
fontp
Цитата(-=ВН=- @ May 22 2007, 16:12) *
И что я гоню, объясните-ка? Методам этим на самом деле несколько десятков лет. И то, что они работают было известно тогда же, несколько десятков лет назад. Если Вы возражаете против этого, то гоните Вы.


Что расхлёбывать? Аппликейшен ноты полезно читать :-) Не наука, но всё же. Полезней чем на форуме обсуждать
-=ВН=-
Цитата(fontp @ May 22 2007, 16:31) *
Что расхлёбывать? Аппликейшен ноты надо читать :-) Не наука, но всё же. Полезней чем на форуме обсуждать



Цитата(fontp @ May 22 2007, 16:31) *
Что расхлёбывать? Аппликейшен ноты полезно читать :-) Не наука, но всё же. Полезней чем на форуме обсуждать

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

Читать-то конечно полезно, только я могу в них половину не понять. Заграничный там язык.

Думал-думал я по поводу корня из N и так и не осознал его.

Допустим есть медленно меняющийся пилообразный сигнал. Ну и 10-битное АЦП. А так же скользящий буфер из 8-ми элементов. Пусть будет идеальная ситуация с полным отсутствием шума. В какой-то момент в буфере накапливаются все значения = 100. Скользящее среднее при этом = 100. В следующий момент приходит значение = 101. Скользящее среднее = 100.125. Далее приходит ещё 101. Скользящее среднее = 100.25. И так далее. Налицо увеличение разрядности на 3 (!) разряда при 8-элементном буфере. Желающие объяснить это есть?
fontp
Цитата(GetSmart @ May 22 2007, 17:07) *
Читать-то конечно полезно, только я могу в них половину не понять. Заграничный там язык.


Есть в книгах на руском. У меня лежит тут на столе Айфичер-Джервис "цифровая обработка сигналов"
Глава 2.5
GetSmart
У меня появилось такое предчуйствие, что если скажем у 10-разрядного АЦП есть нелинейность допустим в 2 разряда, то определёнными схемо-программными ухищрениями её можно уменьшить во много раз. Это касается всё того же вопроса, про улучшение нелинейности шумом. Такой фокус можно проделать только с скачкообразными нелинейностями, возникающими из-за неидеальной матрицы R-2R. Вобщем его можно "размазать" на всю разрядную шкалу, как бы проинтегрировав. Проделав такой фокус можно смело и сильно поднимать разрядность АЦП.

Кто-либо знает про данный алгоритм? Может я опять пытаюсь изобрести велосипед?
anton
Цитата
Думал-думал я по поводу корня из N и так и не осознал его.


Это для белого шума.

Есть метод добавление вне полосного шума и последующая его фильтрация (как правило используются фильтры с хорошим заграждением на полосу подмешанного сигнала)

При увеличении разрядности начинает сильно сказываться линейность АЦП.

Кстати желательно более точно сформулировать требования.
т.е.
1. насколько улучшить сигнал шум
2. уровень гармоник
3. точность измерения
4. разрешающую способность
и т.д.

Первое и четвертое легко.
GetSmart
Цитата(anton)
Кстати желательно более точно сформулировать требования.
т.е.
1. насколько улучшить сигнал шум
2. уровень гармоник
3. точность измерения
4. разрешающую способность
и т.д.

Первое и четвертое легко.

Меня интересуют программные алгоритмы (при необходимости с дополнительной схемотехникой) улучшения линейности АЦП, что увеличивает и точность. Так же интересуют алгоритмы увеличения разрешающей способности, что опять же увеличивает точность. Сигнал-шум и коэффициент гармоник интересует в последнюю очередь, так как подобные извращения чаще всего используются для медленно меняющихся сигналов. Так же интересует требуемая вычислительная мощность подобных алгоритмов.

Третье и четвёртое желательно сразу и побольше smile.gifsmile.gifsmile.gif
-=ВН=-
Цитата(GetSmart @ May 22 2007, 18:58) *
Меня интересуют программные алгоритмы (при необходимости с дополнительной схемотехникой) улучшения линейности АЦП, что увеличивает и точность. Так же интересуют алгоритмы увеличения разрешающей способности, что опять же увеличивает точность. Сигнал-шум и коэффициент гармоник интересует в последнюю очередь, так как подобные извращения чаще всего используются для медленно меняющихся сигналов. Так же интересует требуемая вычислительная мощность подобных алгоритмов.

Третье и четвёртое желательно сразу и побольше smile.gifsmile.gifsmile.gif

Возьмите лучше хороший АЦП, не мучайтесь. По увеличению разрядности все уже сказано - если шума недостаточно, его нужно добавить. Шум - белый в полосе до половины ч-ты дискр. Много его - плохо. Сигнал-шум уменьшится. Для его улучшения потребуется большее усреднение. Корень из N идет лесом, в результате. Мало тоже плохо.
Роль нелинейной природы АЦП увеличивается, зависимость от ф-ии распределения шума усиливается, корень опять идет лесом.
Со среднеквадратичным ~=ступеньке АЦП - где-то в самый раз. Но даже с размером ступеньки есть тонкости, из-за диф. нелинейности АЦП. Какую ступеньку брать за основу? Корень идет опушкой.
Вместо шума можно добавлять что-то пилообразное или синусообразное, возможно с подбором частот . C амплитудой той же величины, что и ско шума.
Вам этот геморрой жизненно необходим, что ли? Сделать генератор шума-пилы-синуса, всандалить сумматор, усреднить по 256 минимум точкам? Может проще и дешевле взять АЦП нужный, тем более, что сигнал у Вас медленный, сами сказали?
С точностью вообще отдельная песня. Точность всякие калибровочные операции подразумевает.
С интегральными нелинейностями приходилось однажды бороться, использовалась аппроксимация перед. характеристики АЦП. Дело затратное.
GetSmart
Да есть у меня "идеальный" АЦП. Даже придумал схему измерения сопротивлений на нём с шумовой точностью (без каких-либо программных заморочек) 17 разрядов. Это было уже на рабочем столе померено в работающей схеме. Разумеется с программными фильтрами можно ещё намного поднять. Схема такая хитрая, что на результат не влияет ни нестабильность опоры, ни нестабильность источника тока. Температурная нестабильность всей схемы лучше 10 ppm/C. Это измеренная нестабильность. Фактически она может достигать 25 ppm/C и зависит только от одного опорного резистора, у которого как раз эти 25 ppm/C. Если впиндюрить в схему ещё и температурную стабилизацию, то я даже боюсь представить какой точности можно достичь. Интересно, без термостабилизации можно как-то ещё уменьшить температурную зависимость?

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

Как там в мультике: лучше чего-то там..., а потом за пять минут долететь.
-=ВН=-
Цитата(GetSmart @ May 22 2007, 19:57) *
Ну а про мучения и геморрой, тут Вы не правы.

Ну тогда мучайтесь:-)
Alex255
Цитата(GetSmart @ May 22 2007, 17:07) *
Читать-то конечно полезно, только я могу в них половину не понять. Заграничный там язык.

Думал-думал я по поводу корня из N и так и не осознал его.

Допустим есть медленно меняющийся пилообразный сигнал. Ну и 10-битное АЦП. А так же скользящий буфер из 8-ми элементов. Пусть будет идеальная ситуация с полным отсутствием шума. В какой-то момент в буфере накапливаются все значения = 100. Скользящее среднее при этом = 100. В следующий момент приходит значение = 101. Скользящее среднее = 100.125. Далее приходит ещё 101. Скользящее среднее = 100.25. И так далее. Налицо увеличение разрядности на 3 (!) разряда при 8-элементном буфере. Желающие объяснить это есть?

Когда у вас приходит 101, до при идеальном АЦП это может значить и 100.5, и 101.49. где же ваши биты, если вы получаете 100.125 или 100.25? Тогда просто дорисовал чего то за запятой, и готово.
Дабы получить 12 бит, надобно взять честное 12 битное АЦП с хорошей интегральной и дифференциальной нелинейностью и пр. и будет вам счастье. Бесплатный сыр как известно водиться исключительно в мышеловке)))
GetSmart
Частично вы правы. Только скользящее среднее является результатом не одного, а восьми периодов. Кроме этого в результате есть задержка на несколько периодов. Надо бы промоделировать подобную ситуацию в случае идеально плавно меняющихся сигналов и содержащих шум. Тогда будет видно сколько действительно разрядов добавляется. Может я и ошибаюсь, но мне кажется, что в зависимости от ситуации может добавляться от 0 до двоичного логарифма от ширины буфера разрядов (3 бита для 8-буфера). Пусть случайный шум добавляет корень из 8 разрядов. Но мне было бы интересно узнать как более целенаправленно повлиять на сигнал чтобы извлечь максимум разрядности (логарифм) при минимуме буфера (oversamplinga).

Вот бы кто ещё объяснил как сигма-дельта за два прохода поднимает точность с 14 до 18 разрядов.
А вообще, хотелось бы создать некий гибрид из обычного и псевдо-сигма-дельта АЦП. Не особо сложными извращениями. Чем-то вроде RC-цепочки и дополнительного пина проца.

Цитата(Alex255)
Когда у вас приходит 101, до при идеальном АЦП это может значить и 100.5, и 101.49. где же ваши биты, если вы получаете 100.125 или 100.25? Тогда просто дорисовал чего то за запятой, и готово.

Мне на это вспомнилось вот что: так можно и ШИМ, прошедший через RC-фильтр считать однобитным. Там тоже то ли ноль, то ли еденица. Непонятно что вобщем. Однако преобразование ШИМ-->аналог я думаю все делали в своих схемах ни чуть не сомневаясь в результате.

Как я понимаю, случайные отклонения на +-1/2 мл.разряда (шумы) в результате должны проинтегрироваться и результат будет как раз теми дробными невидимыми разрядами. Вы считаете что на входе АЦП напряжения меньшие млашего разряда невидимы, но на самом деле их можно увидеть.
-=ВН=-
Цитата(GetSmart @ May 23 2007, 11:22) *
Как я понимаю, случайные отклонения на +-1/2 мл.разряда (шумы) в результате должны проинтегрироваться и результат будет как раз теми дробными невидимыми разрядами. Вы считаете что на входе АЦП напряжения меньшие млашего разряда невидимы, но на самом деле их можно увидеть.

Почти так. Когда сигнал на входе АЦП лежит между 2-мя ступеньками АЦП и нет вообще шума, то на выходе АЦП будет один и тот же код, соответствующий ближавйшей к сигналу ступеньке. Он не будет меняться. Его можно усреднять бесконечно долго, ничего абсолютно усреднение не добавит и не убавит.
В случае, если вместе с сигналом на вход АЦП действует шум (с заданными свойствами), то на выходе АЦП будут разные коды. И код, соответсвующий ближайшей к сигналу ступеньке, будет более вероятен. Код соответствующий более удаленной, но соседней ступеньке будет менее вероятен. Если Вы усредните сколько-то подряд идущих измерений, Вы получите результат, примерно равный сигналу на входе. Именно за счет разной вероятности появления разных кодов.
А примерно равный, потому, что на входе, кроме сигнала, действует шум. И даже усреднение от шума не избавляет полностью.
Вот этот шумовой остаток после усреднения дает ошибку. Вы обязаны эту ошибку учитывать, при подсчете выигрыша, полученной разрешающей способности и т.п. Ее учет и дает корень из N.
Но при условии равенства ступеньке СКО входного шума.
anton
Цитата
Вот бы кто ещё объяснил как сигма-дельта за два прохода поднимает точность с 14 до 18 разрядов.
А вообще, хотелось бы создать некий гибрид из обычного и псевдо-сигма-дельта АЦП. Не особо сложными извращениями. Чем-то вроде RC-цепочки и дополнительного пина проца.


Я уже говорил что основная проблема линейность.
Вы хотите получить точность, в этом случае лучше однобитный дельта сигма для медленого сигнала (он в принципе линеен). Мульти битные АЦП стоят в основном за счет необходимости подгона для линериазции.
(кстати если посмотришь фильтр сигма дельта то там используются совсем не два измерения, плюс обрати внимание на параметр количества значащих бит он сильно отличается от выходной разрядности)
GetSmart
Я знаю про эффективную и выходную разрядность дельта-сигма. Внимательно рассматривал даже постоянные сигналы на нём, точнее шум младших разрядов. Очень интересное зрелище. Пока у меня зреют мысли по этому поводу.

Теперь про два измерения. Они равной длительности. Внутри каждого из них множество ещё более коротких измерений. И после первого измерения результат 14, а после второго 18 бит. Довольно странная арифметика. Если бы это было АЦП последовательного приближения, то было бы 14 и 28 соответственно. Я прекрасно понимаю что там немного другой принцип и пока не собираюсь ни чему удивляться. Надо бы почитать теорию.


Но вот скажите мне, если перед АЦП поставить НЧ фильтр (то бишь убрав шумы и ограничив скорость нарастания) можно оверсэмплингом и скользящим буфером поднять точность на логарифм от кол-ва элементов буфера? Это будет настоящее или только кажущееся увеличение разрядности? Разумеется применительно к меняющемуся во времени сигналу.

--------------------------
Я вот тут вспомнил немного математики. Если гипотетически максимально увеличить оверсэмплинг и представить что на входе сигнал с отсутствием шума (в имеющейся в АЦП разрядности) то можно засечь точные моменты перехода значения из N в N+1, или из N в N-1. А затем помножить эти отквантованные по вертикали (10 бит) ступеньки на идеально вычисленную их ширину и проинтегрировать, то мы получим идеальный (неквантованный) результат - действительное среднее напряжение за весь измеряемый период. Отсюда следует что если время (одно обычное измерение) поделить на некторорое кол-во меньших измерений, то получится увеличение точности именно на логарифм (!). Всё это сработает только при определённой скорости изменения сигнала (ни маленькой и не очень большой).

Ещё вопрос созрел. Дельта-сигма применительно к быстро меняющимся сигналам имеет ту же разрядность (допустим 18 бит) ?Или она становится чем-то вроде кажущейся, например младшие биты начинают в большей степени содержать искажения/гармоники. Хотя это наверно свойственнено и АЦП с последовательным приближением, но может у дельта-сигма разрядность вообще резко падает?
Alex255
"Мне на это вспомнилось вот что: так можно и ШИМ, прошедший через RC-фильтр считать однобитным. Там тоже то ли ноль, то ли еденица. Непонятно что вобщем. Однако преобразование ШИМ-->аналог я думаю все делали в своих схемах ни чуть не сомневаясь в результате."

ШИМ - он не однобитный и не 16 битный smile.gif (Если иметь ввиду выход ШИМ конечно). Это по существу аналоговый сигнал, своебразная нарезка интервалов. А вот кодирование длительности интервалов может быть и однобитной и 16битной. Из другой оперы немножко.
anton
Цитата
(в имеющейся в АЦП разрядности) то можно засечь точные моменты перехода значения из N в N+1, или из N в N-1. А затем помножить эти отквантованные по вертикали (10 бит)


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

Цитата
Дельта-сигма применительно к быстро меняющимся сигналам имеет ту же разрядность (допустим 18 бит) ?Или она становится чем-то вроде кажущейся


У дельта сигмы есть параметр полоса который опять же отличается от частоты выдачи, если сигнал по частоте не превышает то значительных проблем нет.
GetSmart
Подскажите, знающие, при оцифровке быстро меняющегося сигнала АЦП последовательного приближения в непрерывном режиме искажения в результате чему равны?
Как мне кажется они могут достигать величины изменения сигнала за период преобразования. Я прав или нет?

Предлагаю обсудить следующий алгоритм.
На прикреплённом рисунке элементы R2 и C2 и дискретный вывод процессора создают пилообразный сигнал амплитудой 1 МЗР 10-битного АЦП. Для этого на выводе процессора в течении 8 периодов преобразования АЦП находится 1, а следующие 8 периодов - 0. Пила получается почти идеальная. Далее через C1 пила подмешивается к измеряемому сигналу. Сразу скажу, что схема нарисована максимально упрощённая, только для демонстрации принципа работы и её можно потом улучшить.

Теперь об алгоритме. В памяти процессора находится скользящий буфер из 16 элементов. После каждого измерения программа точно знает какой добавочный уровень сигнала в данный момент имеет C2. И при чтении значения из АЦП из него вычитается это значение и ложится в скользящий буфер. Для более точного результата нужно ещё добавлть 0.5. Так вот, после 16 измерений пила пройдёт свой полный период и заполнится весь скользящий буфер. После этого можно будет узнать результат среднего напряжения, поданного на АЦП за 16 периодов измерения, и сдвинутого во времени (фазе) на 8 периодов. Причём результат будет на 3 разряда (как минимум) точнее разрядности АЦП. При хорошем раскладе даже на 4 разряда. То есть повышение разрядности лучше чем корень из N при подмешивании белого шума. Далее, после каждого нового измерения АЦП можно обновлять результат. Всё это можно промоделировать как для идеального безшумного сигнала, так и неидеального.

Пример с расчётами приведу достаточно простой. Допустим на входе АЦП идеальный постоянный сигнал величиной 100.2 МЗР. Будем считать, что АЦП выдаёт на выходе 100 когда на входе напряжение в диапазоне 100.00..100.99. Без дополнительной схемы АЦП будет выдавать всегда значение 100. Если же к нему примешать пилу 1МЗР (-0.5..+0.5), то АЦП из 16 измерений будет выдавать 3 измерения по 99, 10 измерений по 100, и снова 3 по 99. В скользящий буфер занесутся числа: (0.5 добавляется постоянно)
99.5+0.5
99.5+0.375
99.5+0.25
100.5+0.125
100.5+0
100.5-0.125
100.5-0.25
100.5-0.375
100.5-0.5
100.5-0.375
100.5-0.25
100.5-0.125
100.5-0
99.5+0.125
99.5+0.25
99.5+0.375
Если найти среднее арифметическое в этом буфере, то оно будет равно 100.125. Что как раз находится в диапазоне дополнительных 3 бит перед запятой = 100.125..100.249. Интеграл от пилы (который добавлялся к измеренным значениям) равен 0 и на результат не влияет.
Oldring
Цитата(GetSmart @ Jun 28 2007, 14:45) *
Подскажите, знающие, при оцифровке быстро меняющегося сигнала АЦП последовательного приближения в непрерывном режиме искажения в результате чему равны?
Как мне кажется они могут достигать величины изменения сигнала за период преобразования. Я прав или нет?

[...]

Если найти среднее арифметическое в этом буфере, то оно будет равно 100.125. Что как раз находится в диапазоне дополнительных 3 бит перед запятой = 100.125..100.249. Интеграл от пилы (который добавлялся к измеренным значениям) равен 0 и на результат не влияет.


Для начала: что такое искажения? Когда сформулируете четкий ответ на этот вопрос - поймете и многое другое, что пока что не понимаете.

Ваша схема с пилой хороша, если при напряжении на входе 100 АЦП выдает 100, а при напряжении 99 - число 99. А если наоборот? Такое тоже иногда бывает у некоторых АЦП, особенно, старых: смотрите параметр "дифференциальная нелинейность". Особено критичен для R-2R АЦП переход через середину диапазона. Подумайте сами почему. У сигма-дельта АЦП с однобитным модулятором таких вопросов не возникает вообще: в нем только один компаратор.

Цитата(Alex255 @ May 24 2007, 12:59) *
"Мне на это вспомнилось вот что: так можно и ШИМ, прошедший через RC-фильтр считать однобитным. Там тоже то ли ноль, то ли еденица. Непонятно что вобщем. Однако преобразование ШИМ-->аналог я думаю все делали в своих схемах ни чуть не сомневаясь в результате."

ШИМ - он не однобитный и не 16 битный smile.gif (Если иметь ввиду выход ШИМ конечно). Это по существу аналоговый сигнал, своебразная нарезка интервалов. А вот кодирование длительности интервалов может быть и однобитной и 16битной. Из другой оперы немножко.


Цифровой ШИМ - он и есть однобитный ЦАП. Чтобы простой ШИМ превратить в сигма-дельта ЦАП нужно на вход повесить более сложный аналоговый фильтр и более сложным алгоритмом получать битовую последовательность на этом цифровом выходе. Принципиальных отличий не вижу.
GetSmart
Цитата(Oldring)
Для начала: что такое искажения? Когда сформулируете четкий ответ на этот вопрос - поймете и многое другое, что пока что не понимаете.
Как я понимаю, искажения - отличия реального сигнала на входе и оцифрованного. Если реальный сигнал меняется, то в данном случае нужно сравнивать с его интегралом за период измерения.

Я исходил из принципа работы АЦП посл.прибл. как я его понимаю. Есть допустим 10 подтактов преобразования. В первом подтакте сравнивается старший бит с сигналом, в следующем - следующий, а в 10-ом - последний бит. Так вот, если сигнал меняется быстро, то первый бит может и будет определён верно (например 512, если при этом в начале измерения на входе было >512). А если к 10-му подтакту измерения сигнал опустится до 0, то интеграл за период будет грубо = 256, а АЦП выдаст аж 512. То есть ошибётся на 1/2 от изменения сигнала за период преобразования. Конечно, это самый наихудший вариант. Но в той или иной степени искажения присутствуют, и немалые, часто заметно больше МЗР.

А вообще, для компенсации нелинейностей R-2R АЦП можно применить ту же пилу, но с большей амплитудой. Вроде бы она должна заметно уменьшать при этом скачкообразные нелинейности. Например пилу на 11 МЗР. Наверное желательно чтобы амплитуда, делённая на половину буфера была дробной.


Хотя нет, если сигнал меняется, то искажение - это отличие результата, от значения сигнала на входе АЦП в последнем подтакте.
Oldring
Цитата(GetSmart @ Jun 29 2007, 15:08) *
Как я понимаю, искажения - отличия реального сигнала на входе и оцифрованного. Если реальный сигнал меняется, то в данном случае нужно сравнивать с его интегралом за период измерения.


Реальный сигнал - он аналоговый. А измеренный - он цифровой. И как их можно непосредственно сравнивать? Требуется какая-то мера похожести цифрового сигнала на аналоговый. И не одна - уж слишком не похожи эти сигналы, поэтому что допустимо для одного класса аналоговых сигналов может оказаться неприемлемо для другого.

Цитата(GetSmart @ Jun 29 2007, 15:08) *
Я исходил из принципа работы АЦП посл.прибл. как я его понимаю. Есть допустим 10 подтактов преобразования. В первом подтакте сравнивается старший бит с сигналом, в следующем - следующий, а в 10-ом - последний бит. Так вот, если сигнал меняется быстро, то первый бит может и будет определён верно (например 512, если при этом в начале измерения на входе было >512). А если к 10-му подтакту измерения сигнал опустится до 0, то интеграл за период будет грубо = 256, а АЦП выдаст аж 512. То есть ошибётся на 1/2 от изменения сигнала за период преобразования. Конечно, это самый наихудший вариант. Но в той или иной степени искажения присутствуют, и немалые, часто заметно больше МЗР.


Для того, чтобы этого не происходило, большинство современных АЦП последовательного приближения содержат на входе схему выборки/хранения. Иначе говоря, sample/Hold, на структурных схемах обозначаемую обычно как S/H.

Цитата(GetSmart @ Jun 29 2007, 15:08) *
А вообще, для компенсации нелинейностей R-2R АЦП можно применить ту же пилу, но с большей амплитудой. Вроде бы она должна заметно уменьшать при этом скачкообразные нелинейности. Например пилу на 11 МЗР. Наверное желательно чтобы амплитуда, делённая на половину буфера была дробной.
Хотя нет, если сигнал меняется, то искажение - это отличие результата, от значения сигнала на входе АЦП в последнем подтакте.


Пилу применять можно. Только тут какая альтернатива: большая пила осредняет лучше, но при этом неопределенность самих отсчетов получается больше. Так что тут кто кого переборит.

Вообще говоря, подобными методами невозможно получить абсолютную точность лучше погрешности веса старшего разряда. Дифференциальную нелинейность уменьшить можно. Интегральную - практически нет. Представьте две пилы: одну сразу под половиной диапазона, а вторую - над.
rezident
Цитата(GetSmart @ Jun 29 2007, 17:08) *
Так вот, если сигнал меняется быстро, то первый бит может и будет определён верно (например 512, если при этом в начале измерения на входе было >512). А если к 10-му подтакту измерения сигнал опустится до 0, то интеграл за период будет грубо = 256, а АЦП выдаст аж 512. То есть ошибётся на 1/2 от изменения сигнала за период преобразования. Конечно, это самый наихудший вариант. Но в той или иной степени искажения присутствуют, и немалые, часто заметно больше МЗР.

Для SAR обычно применяют sample-and-hold (схему выборки/хранения). Иначе, скажем 10-разрядный SAR, в лучшем случае 4-разрядным можно будет называть.
GetSmart
Дык я ж не собирался делать из любого R-2R АЦП некий идеальный АЦП с ещё большим кол-вом разрядов. Затея была улучшить нелинейности и разрешающую способность втроенных в контроллеры АЦП минимальными средствами. Не уж то продложенным мной методом это не получится? Если АЦП не имеет схему выборки-хранения, то вдобавок и искажения сильно уменьшатся.

Кроме того, есть много применений, в которых подобный алгоритм реально увеличит качество. Например при оцифровке звука, если звук будет достаточно слабый, то с подобным алгоритмом можно обнаруживать/записывать в 8 раз более слабые звуки. Думаю, что ещё множество практических применений можно найти.
rezident
"Любой R-2R АЦП" совсем не обязательно SAR. Он может и параллельного типа быть. А параллельному АЦП схема выборки/хранения не требуется.
Oldring
Цитата(rezident @ Jun 29 2007, 17:00) *
"Любой R-2R АЦП" совсем не обязательно SAR. Он может и параллельного типа быть. А параллельному АЦП схема выборки/хранения не требуется.


Названия микросхем не подскажете? Любопытно взглянуть. R-2R по сути АЦП последовательного приближения, и если существуют паралелльные реализации - очень любопытно, как при этом гарантируют стабильность цифрового выхода во время считывания кода?
-=ВН=-
Цитата(GetSmart @ Jun 28 2007, 14:45) *
Подскажите, знающие, при оцифровке быстро меняющегося сигнала АЦП последовательного приближения в непрерывном режиме искажения в результате чему равны?
Как мне кажется они могут достигать величины изменения сигнала за период преобразования. Я прав или нет?

Предлагаю обсудить следующий алгоритм.
На прикреплённом рисунке элементы R2 и C2 и дискретный вывод процессора создают пилообразный сигнал амплитудой 1 МЗР 10-битного АЦП. Для этого на выводе процессора в течении 8 периодов преобразования АЦП находится 1, а следующие 8 периодов - 0. Пила получается почти идеальная. Далее через C1 пила подмешивается к измеряемому сигналу. Сразу скажу, что схема нарисована максимально упрощённая, только для демонстрации принципа работы и её можно потом улучшить.

Теперь об алгоритме. В памяти процессора находится скользящий буфер из 16 элементов. После каждого измерения программа точно знает какой добавочный уровень сигнала в данный момент имеет C2. И при чтении значения из АЦП из него вычитается это значение и ложится в скользящий буфер. Для более точного результата нужно ещё добавлть 0.5. Так вот, после 16 измерений пила пройдёт свой полный период и заполнится весь скользящий буфер. После этого можно будет узнать результат среднего напряжения, поданного на АЦП за 16 периодов измерения, и сдвинутого во времени (фазе) на 8 периодов. Причём результат будет на 3 разряда (как минимум) точнее разрядности АЦП. При хорошем раскладе даже на 4 разряда. То есть повышение разрядности лучше чем корень из N при подмешивании белого шума. Далее, после каждого нового измерения АЦП можно обновлять результат. Всё это можно промоделировать как для идеального безшумного сигнала, так и неидеального.

Пример с расчётами приведу достаточно простой. Допустим на входе АЦП идеальный постоянный сигнал величиной 100.2 МЗР. Будем считать, что АЦП выдаёт на выходе 100 когда на входе напряжение в диапазоне 100.00..100.99. Без дополнительной схемы АЦП будет выдавать всегда значение 100. Если же к нему примешать пилу 1МЗР (-0.5..+0.5), то АЦП из 16 измерений будет выдавать 3 измерения по 99, 10 измерений по 100, и снова 3 по 99. В скользящий буфер занесутся числа: (0.5 добавляется постоянно)
99.5+0.5
99.5+0.375
99.5+0.25
100.5+0.125
100.5+0
100.5-0.125
100.5-0.25
100.5-0.375
100.5-0.5
100.5-0.375
100.5-0.25
100.5-0.125
100.5-0
99.5+0.125
99.5+0.25
99.5+0.375
Если найти среднее арифметическое в этом буфере, то оно будет равно 100.125. Что как раз находится в диапазоне дополнительных 3 бит перед запятой = 100.125..100.249. Интеграл от пилы (который добавлялся к измеренным значениям) равен 0 и на результат не влияет.


Прошу прощения - случайно нажал отправить
rezident
Цитата(Oldring @ Jun 29 2007, 19:54) *
Названия микросхем не подскажете? Любопытно взглянуть. R-2R по сути АЦП последовательного приближения, и если существуют паралелльные реализации - очень любопытно, как при этом гарантируют стабильность цифрового выхода во время считывания кода?

С зарубежными АЦП параллельного преобразования я не работал. А из отечественных навскидку пожалуй только К1107ПВ1 и К1107ПВ2 назову. Стабильность показаний цифрового выхода в них естественно регистровой синхронизацией обеспечивается. Насколько я помню, там как минимум два параллельных регистра друг за другом включены. И данные, соответствующие текущему входному сигналу, на выходе только на второй или на третий тактовый импульс появляются.
Oldring
Цитата(rezident @ Jun 29 2007, 18:15) *
С зарубежными АЦП параллельного преобразования я не работал. А из отечественных навскидку пожалуй только К1107ПВ1 и К1107ПВ2 назову. Стабильность показаний цифрового выхода в них естественно регистровой синхронизацией обеспечивается. Насколько я помню, там как минимум два параллельных регистра друг за другом включены. И данные, соответствующие текущему входному сигналу, на выходе только на второй или на третий тактовый импульс появляются.


Залез в советский справочник.

К1107ПВ1. Никакой не R-2R. Цепочка резисторов. 63 компаратора, шифратор, регистр. При этом на структурной схеме вход клока почему-то проведен также и до цепочки компараторов.)

К1107ПВ1. Также написано, что это параллельный АЦП. По нарастающему фронту тактового импульса запоминается аналоговый сигнал с задержкой 10-15 нс. По спадающему - производится кодирование. По следующему нарастающему - производится запись в выходной регистр. Так написано в справочнике. Такой вот конвейер. Разумно предположить, что структура этого АЦП подобна К1107ПВ1, только больше компараторов, и запоминание уровня входного сигнала осуществляется в самих компараторах - это триггеры, сваливающиеся в одно из устойчивых состояний в заданное время.

Так что, никакие это не параллельные R-2R. biggrin.gif
GetSmart
Оказывается прибавлять доли МЗР к значению АЦП перед занесением в скользящий буфер не имеет смысла. Можно просто заносить в буфер значения АЦП и получать тот же результ.

Вобщем этим алгоритмом можно немного поднять разрешающую способность и/или уменьшить дифф. нелинейность АЦП используя оверсемплинг. Воможно он даже лучше чем с использованием шума, так как более предсказуем и даёт лучшую разрядность. И схемка простая.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.