Каскадные АЦП, чтобы получить более высокое разрешение

11

Предположим, у меня есть пара 12-разрядных АЦП, и я могу представить, что их можно каскадировать, чтобы получить <= 24-разрядный выход.

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

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

Любые комментарии и предложения приветствуются.

Я предполагаю, что четырехъядерный 8-битный (или двойной 12-битный) чип дешевле, чем один 24-битный чип.

errordeveloper
источник
2
Да, это возможно в теории и в 0,01% реальных случаев, когда детали имеют "число битов эффекта", равное "количеству данных в битах", а остальные характеристики соответствуют дополнительным 5-ти порядкам точности. Что не верно для 99,99% деталей.
4
Если вы используете одно для положительных напряжений, а другое для отрицательных напряжений, это даст вам только 13 бит. Для их каскадирования потребуются ЦАП и усилитель. Вы непосредственно преобразовываете сигнал, записываете значение в ЦАП и вычитаете выход ЦАП из входного сигнала. Затем вы усиливаете сигнал на и подаете его на второй АЦП. 212
Коннор Вольф

Ответы:

11

Много вещей в вашем вопросе. Итак, давайте возьмем их один за другим.

Предположим, у меня есть пара 12-разрядных АЦП, и я могу представить, что их можно каскадировать, чтобы получить <= 24-разрядный выход. Я могу подумать о простом использовании одного для положительного диапазона, а другого для отрицательного диапазона, хотя, вероятно, будут некоторые искажения в области пересечения. (предположим, что мы можем игнорировать несколько битов ошибки или, возможно, разместить третий АЦП для измерения значения около 0 вольт).

Не совсем - вы получите 13-битное разрешение. Можно описать работу 12-битного преобразователя как определение, какое из входных напряжений 4096 бинов (2 ^ 12) является. Два 12-битных АЦП дадут вам 8192 бина или 13-битное разрешение.

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

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

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

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

Любые комментарии и предложения приветствуются. Я предполагаю, что четырехъядерный 8-битный (или двойной 12-битный) чип дешевле, чем один 24-битный чип.

На самом деле есть причина того, что наличие 24-разрядного преобразователя не так просто, как размещение в некоторой конфигурации четырех 8-разрядных преобразователей. Это намного больше. Я думаю, что ключевое недоразумение здесь заключается в том, что можно просто «добавить» количество битов. Чтобы понять, почему это неправильно, лучше представить АЦП как цепь, которая решает, к какому входному напряжению «бина» относится. Количество бинов равно 2 ^ (количество бит). Таким образом, 8-битный преобразователь будет иметь 256 бинов (2 ^ 8). 24-битный преобразователь будет иметь более 16 миллионов блоков (2 ^ 24). Таким образом, чтобы иметь такое же количество бинов, как в 24-разрядном преобразователе, потребуется более 65 тысяч 8-разрядных преобразователей (фактически 2 ^ 16).

Для продолжения аналогии с бином - предположим, что ваш АЦП имеет полную шкалу 1V. Тогда 8-разрядный преобразователь "bin" равен 1 В / 256 = ~ 3,9 мВ. В случае 24-разрядного преобразователя это будет 1 В / (2 ^ 24) = ~ 59,6 нВ. Интуитивно понятно, что «решить», принадлежит ли напряжение к меньшей ячейке, сложнее. Действительно, это так из-за шума и различных неидеальностей схемы. Таким образом, не только одному потребуется более 65 тысяч 8-разрядных преобразователей для получения разрешения 24 бита, но и эти 8-разрядные преобразователи должны быть в состоянии разрешить преобразование в 24-разрядный размер (ваш обычный 8-разрядный преобразователь будет недостаточно хорош, поскольку может разрешить до бина ~ 3,9 мВ, а не бункера 59,6 нВ)

mazurnification
источник
Диапазон, из которого будет работать 8-битный преобразователь, составляет 256 * 59,6 нВ = 15,26 мкВ. Я никогда не делал эталонные напряжения настолько низкими и точными :)
Ганс
14

1212121212 1213

ВрЕF2

Там нет такого понятия, как бесплатный обед.

править
Там , кажется, непонимание передискретизации, а также тот факт , что в 1-битные аудио АЦП , которые могут дать вам 16-битное разрешение.
Если ваш вход имеет фиксированный уровень постоянного тока, скажем, 0,2 В в диапазоне входного напряжения 1 В, ваш выход всегда будет таким же. С 1-битным АЦП это будет ноль для нашего примера (уровень меньше половины эталона). Теперь это будет так, будь то выборка с частотой 1 выборка в секунду или 1000. Таким образом, усреднение не меняет этого. Почему он работает с аудио-АЦП ?, потому что напряжение постоянно меняется (шум), что, согласно Эйнштейну (относительность, вы знаете ;-)), равнозначно поддержанию постоянного напряжения и изменению задания. А потомпри передискретизации вы получаете несколько разных показаний, которые вы можете усреднить, чтобы получить достаточно хорошее приближение к вашему фактическому уровню.
Шум должен быть достаточно сильным, чтобы пройти пороговое значение (я) АЦП, и должен соответствовать определенным ограничениям, таким как распределение Гаусса (белый шум). В 1-битном примере это не сработало, потому что уровень шума слишком низкий.


Дополнительная информация:
Замечание по применению Atmel AVR121: повышение разрешения АЦП с помощью передискретизации.

stevenvh
источник
Я не уверен, что понимаю ваши мысли по этому поводу. Конечно, если вы разделите «+» и «-», то вы сможете сэмплировать при 0 В до + 4,096 В при 12 битах и ​​от 0 В до –4,096 В при 12 битах, что в сумме составит 24 бита во всем диапазоне?
Majenko
1
@MattJenkins, это будет то же самое, что бит знака. Подумай об этом. Если я выбираю 0-10 В с 12 битами и 0 - (- 10 В) с 12 битами, мне нужен только один бит, чтобы сказать, был ли сигнал отрицательным или положительным.
Кортук
Это правда - поэтому, хотя вы можете сделать выборку как 24 бита, вы можете получить точно такое же разрешение всего с 13 битами.
Majenko
8В2Взнак равно228В1Взнак равно23
@MattJenkins, вы могли бы использовать 1 горячее кодирование и взять 1024 бита вместо 10. Физическая реальность такова, что инженер может делать все, что он хочет, просто скажите клиенту, что вы отключены только на 3 дБ, а не на 10 кВт.
Кортук
3

Да, теоретически вы можете делать то, что хотите, но только если у вас есть какое-то совершенно нереальное оборудование.

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

Рассматривать. Измерьте напряжение с помощью 12-битного АЦП и получите, скажем, 111111000010. Вы знаете, что действительное значение лежит где-то в 1-битном диапазоне +/- 0,5 бита по обе стороны от этого значения.

Если ваш АЦП был точным до 24 бит, но предоставлял только 12 бит, то он сообщает, что vaklue находится в пределах +/- половины бита от 111111000010 000000000000. Если бы это было так, вы могли бы взять 12-битный АЦП с +/- Диапазон 1/2 бит, отцентрируйте его на 111111000010000000000000 и прочитайте результат. Это даст вам разницу между фактическим сигналом и значением aDC, как требуется. QED.

Однако 12-битный АЦП сам по себе точен только с точностью до половины бита. Сумма его различных ошибок заставляет его объявлять определенный результат, когда реальный результат составляет примерно половину, но разный плюс или минус.

Пока вы хотели бы

111111000010 означает 111111000010 000000000000

на самом деле это может означать 111111000010 000101101010 или что-то еще.

Поэтому, если вы затем возьмете 2-й АЦП и измерите младшие 12 битов и ПОСТАНОВИТЕ, что они соответствуют точной 12-битной границе, они фактически соответствуют вышеуказанному ошибочному значению. Поскольку это значение является по существу случайной ошибкой, вы добавили бы новую цифру в 12 младших битов к 12 битам практически случайного шума. Точный + случайный = новый случайный.

ПРИМЕР

Используйте два конвектора, которые могут измерить диапазон и дать результат в 1 из 10 шагов. Если масштабировать до 100 вольт FS, они дают ge 0 10 20 30 40 50 60 70 80 90

Если масштабировать до 10 вольт, они дают 1 2 3 4 5 6 7 8 9

Вы решаете использовать эти два преобразователя для измерения диапазона 100 В с точностью до 1 Вольт.

Преобразователь 1 возвращает 70 В. Затем вы измеряете напряжение относительно 70В и получаете -3В. Таким образом, вы заключаете, что реальное значение, т.е. + 70В - 3В = 67В.

ОДНАКО результат 70В ​​может быть любым из 65 66 67 68 69 70 71 72 73 74

Только если 1-й преобразователь имеет ТОЧНОСТЬ до 1 В на 100, даже если он отображает 10 В с шагом 100 В, вы можете достичь желаемого.

Таким образом, ваш реальный результат составляет 67 В +/- 5 Вольт = от 62 В до 72 В. Так что ты не лучше, чем раньше. Ваш центр переместился, но он может быть расположен случайно.

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


Система, которая действительно работает, была упомянута с одним важным упущением. Если вы сэмплируете сигнал N раз и добавите + / _ пол-бита гауссовского шума, вы будете распространять сигнал «по всему возможному диапазону», и теперь среднее значение будет log (N) более точным, чем раньше. Эта схема имеет рыболовные крючки и квалификации, и вы не можете просто получить произвольное дополнительное количество бит, но она действительно предлагает некоторое улучшение.


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

Альтернатива - просто сначала прочитать 24-битный сигнал с сигма-дельтой, зафиксировать эту точку и затем последовательно измерять ее с помощью второго АЦП. Пока сигнал остается в диапазоне действия второго АЦП, вы получите намного более быстрый результат.

Рассел МакМахон
источник
Хммм. Один голос. Один голос ниже. Учитывая, что здесь хорошо для ответов ОК [tm] :-) Мне было бы интересно узнать, кто думал, что этот ответ настолько ужасен, чтобы заслужить голосование, и почему?
Рассел МакМэхон
1

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

Это работает, добавляя шум к сигналу. Хотя шум снижает разрешение, необходимо заставить данные разделяться на несколько битов. (Я не парень по обработке сигналов - это только то, как я понимаю.) Ваш шум может быть только 1 или 2 бит, но он должен быть там. Если вы берете одну 12-битную выборку - у вас есть 12 бит. Если затем взять 4 сэмпла, сложить их и разделить на два, вы получите 13-битный сэмпл. (Каждый дополнительный бит требует 4 выборки, из-за Найквиста.)

Простой способ сделать это, чтобы добавить шум к опорному напряжению. Я использую это для повышения 12-разрядного АЦП в dsPIC33F до 16-разрядного для более высокого разрешения. Предварительно я установил асинхронный таймер на высокой частоте и использую DMA, чтобы поставить в очередь последовательность номеров PRNG в выходном захвате, который дает относительно чистый источник шума. Выходной шум смещает опорное напряжение на 0,1% (1k-1Meg делитель.) Шум является двунаправленным, проходкой и поиска. Я использую DMA dsPIC33F для постановки в очередь образцов, так что это может быть сделано с небольшим вмешательством ЦП. Конечно, максимальная частота дискретизации падает примерно до 1/32 нормальной скорости, но это не проблема для моего приложения.

Поскольку шум не всегда распределяется равномерно, я буду калибровать входы на каждой поставляемой единице, хотя разница, вероятно, будет только 1 или 2 LSB.

Томас О
источник
Откуда вы знаете, что добавляемый вами шум имеет правильный спектр (это белый шум)? Как вы решаете на амплитуду? Если ваш шум не очень хороший, у вас будет больше разрешения, но не больше точности.
Федерико Руссо
@Federico Конечно, для меня это метод проб и ошибок. Белый шум можно смоделировать с помощью PRNG, и только для 32 сэмплов он работает достаточно хорошо. Если бы я был настоящим инженером-электронщиком, я бы знал, как это сделать правильно.
Томас О,
Вот статья в Analog Devices, которая может помочь объяснить это: analog.com/library/analogdialogue/archives/40-02/adc_noise.html
DarenW
@ThomasO, я использовал эту технику с термисторами, чтобы добавить 8 бит точности. Не с шумом, хотя, мы использовали отопление.
Кортук
@DarenW Это выглядит знакомо - я думаю, это то, откуда я взял свою идею.
Томас О,
1

Используя суммирующий усилитель, вы можете суммировать два выхода ЦАП. Вы можете использовать R1 = 100 кОм, R2 = R3 = 100 Ом. Таким образом, выход будет Vout = - (V1 + V2 / 1000). Вам понадобится двойной источник питания, и если вы хотите, чтобы он не инвертировался, вам нужно установить еще один инвертирующий усилитель с коэффициентом усиления = 1. Итак, допустим, у вас есть 12-битный ЦАП с 2 выходами и опорным напряжением 4,096 В. Затем (если у вас есть второй инвертирующий усилитель) одно приращение от ЦАП 1 увеличит выход на 1 мкВ, а одно приращение от ЦАП 2 увеличит выход на 1 мВ. Это не 24 бит в сумме. Это около 22 бит. Теоретически вы можете выбрать R1 в 4096 раз больше, чем R2 и R3 и получить 24 бита, но вы не получите лучших результатов. У вас будет много проблем с шумом в диапазоне микровольт, даже если вы выберете хороший малошумящий операционный усилитель.

Обновление Я думаю, что это вопрос о ЦАП, потому что я искал ЦАП. Вот как вы применяете подобный принцип с АЦП. Вместо суммирования вы должны вычесть результат ADC1, а затем умножить на 1000, прежде чем измерять с помощью ADC2.

Двойное разрешение АЦП

Исправление - ADC3 должен быть на VGnd (Vref / 2), а не на Vref, чтобы соответствовать формуле результата

Вместо AZ431 вы можете использовать любую другую ссылку 2.5V или другую регулируемую ссылку с правильными пассивами, чтобы получить именно 4.096V. Чем меньше температурный дрейф у эталона, тем лучше результаты. Также это должен быть низкий уровень шума. Обратите внимание, что это, вероятно, недостаточно точно. Было бы неплохо установить 500-омный многооборотный тримпот между R7 и R8 со стеклоочистителем на эталонный вход и точно настроить его на Vref = 4.096V. Также будет необходим тримпот (2) между R1 и R2 с положительным входом стеклоочистителя на U1. Настройте его на 2.048V на VGnd. U1 - это просто любой малошумящий операционный усилитель. (КСТАТИ AZ431 ужасно для работы. Я положил его, потому что у меня был символ).

Для U2, U3 и U4 очень важно использовать усилители с нулевым смещением. U2 более важен, потому что он умножается на 100. каждый 1 мкВ достигает 100 мкВ. Если вы используете OP07 и правильно обнуляете его, а температура изменяется на 10 градусов, то вы получите смещение 13 мкВ, что соответствует 1,3 мВ на выходе U4. Это 13 мВ на выходе АЦП, что делает АЦП2 практически бесполезным.

Также U3 должен иметь возможность достигать 6,048 В - это VGnd (2,048 В) + 2xVinmax (2x2 В = 4 В). Вот и вся идея иметь Vcc = + 12V блок питания. VCC может быть низким, как 6,5 В, когда используется MAX44252. Поскольку MAX44252 является рельсовым усилителем, отрицательный источник питания может быть пропущен, а Vss операционного усилителя может быть заземлен. Это верно для любого операционного усилителя, который может выходить до 48 мВ на своем выходе.

MAX44252 имеет напряжение смещения 2-4 мкВ (обычно) и температурный дрейф от 1 до 5 нВ. Он стоит $ 2,64 на digikey в количестве 1, и это квадропампа, так что только один чип будет работать.

Как это работает? Например, 10-разрядный ЦАП. Разрешение составляет 4,096 / 1024 = 4 мВ. Входной сигнал должен быть относительно VGnd, который составляет половину Vref. ADC1 измеряет входное напряжение как обычно. Затем выводит значение через DAC1. Разница между Vin и DAC1 заключается в ошибке, которую необходимо усилить, измерить и добавить к результату ADC1. U2 усиливает разницу Vin - DAC1 относительно DAC1 с коэффициентом усиления 100. U4 усиливает эту разницу на 10, а также вычитает DAC1 относительно VGnd. Это делает ADC2 = (Vin - DAC1) * 1000 относительно VGnd. Другими словами, если у вас 1,234567 В на Vin, относительно VGnd. АЦП1 будет измерять значение 821потому что разрешение составляет 4 мВ и (2,048 + 1,234567) / 0,004 = 820,64175. Таким образом, значение ЦАП будет установлено на 309, что составляет 309 * 0,004 В = 1,236 В. Теперь ADC2 получит 1,234567-1,236 = -0,001433 * 1000 = -1,433 В относительно VGnd (в идеале). Это 2,048-1,433 = 0,615 В синфазного режима. 0,615 В / 0,004 = 153,75. Так что значение ADC2 = 154, Проще вычислить значение в микровольтах, чтобы избежать использования поплавка. Чтобы преобразовать ADC2 в мВ, мы должны умножить значение на 4: VADC1 = 821 * 4 = 3284 мВ. Чтобы преобразовать в uV, нам нужно умножить на 1000. Или это значение ADC1, умноженное на 4000. 821 * 4000 = 3284000. Таким образом, напряжение ADC1 относительно VGnd составляет 3284000-2048000 = 1236000uV. АЦП2 уже умножен на 1000, поэтому нам нужно умножить только на 4: VADC2 = 154 * 4 = 616. Чтобы получить напряжение относительно VGnd, нам нужно вычесть VGnd: 616-2048 = -1432uV. Мы принимаем VGnd = 2048 мкВ, потому что у нас усиление x1000. Теперь мы добавляем VADC1 и VADC2: 1236000 + (-1432) = 1234568 мкВ или 1,234568 В

Конечно, это просто мечты, потому что, когда вы имеете дело с микровольтами, будут возникать всевозможные ужасные проблемы - шум усилителя, шум резисторов, смещение напряжения, температурный дрейф, погрешность усиления ... Но если вы используете приличные части, резисторы не менее 1% и Вы программно обнуляете смещение и корректируете усиление, которое можете получить достаточно хороший результат. Конечно, вы не можете ожидать стабильного ввода последней цифры. возможно, вы можете ограничить разрешение до 10 мкВ (разделите результат на 10). Также умножить на 4 можно, суммируя 4 последовательных результата, чтобы получить некоторое усреднение.

Имейте в виду, что ничего из этого не проверено. Я моделировал только каскад усилителя без учета шума и смещения операционного усилителя. Если кто-то решит построить его, напишите результаты в комментариях.

NickSoft
источник
Вопрос спрашивает об AD C. Вы говорите о DA C.
Дим потерял веру в SE
Мне жаль. Я искал ЦАП и нашел этот вопрос. Я написал без внимательного прочтения. Я компенсирую предложение, как применить тот же принцип к АЦП.
NickSoft
Я удалил свое понижение, так как ваш пост теперь связан с вопросом. Но я не думаю, что это решение может работать на практике. Боюсь, будет слишком много неточностей.
Дим потерял веру в SE
Конечно, это будет работать. Однако точность зависит от используемых деталей. Существуют усилители-прерыватели со смещением 0,1 мкВ и дрейфом 1-5 нВ / град. Также они имеют нановольтный шум 0,1-10 Гц на пп. В сочетании с хорошим эталоном он может получить стабильный выход до 10 с. Но это может работать с более дешевыми частями, если вы хотите получить дополнительную цифру. Например, 10-битный АЦП с опорным напряжением 4,096 В имеет разрешение 4 мВ. Я думаю, что с помощью этой схемы ее можно легко улучшить до разрешения 0,1 мкВ (возможно, с лучшей привязкой). Это +/- 20000 пунктов. Конечно, для смещения и усиления потребуется программная калибровка.
NickSoft
Это все теория. Тот факт, что ваши показания ADC2 зависят от ваших настроек ЦАП (и смещения операционного усилителя, но это даже не самая важная часть), который зависит от ваших показаний ADC1 (и всех этих допусков), приведет к тому, что вы, безусловно, выиграли не сможет даже гарантировать монотонную работу вашей системы (даже если вы находитесь в пределах вашей расчетной точности).
Дим потерял веру в SE
0

Lограмм2(a lot)

редактировать: см. комментарии для исправления моей математики.

Джей Коминек
источник
Я тоже так думал, но учтите следующее: входной диапазон 1 В, вход 0,2 В, 1-битный АЦП. Независимо от того, насколько высока ваша передискретизация, вы всегда будете читать 0, в среднем = 0, а не 0,2.
Стивенвх
Подобное передискретизация потребует некоторого «шума» в сигнале. Как указал Стивенвх. Иногда сам сигнал имеет достаточно «шума», чтобы выполнить это без чего-либо нового. В других случаях вам необходимо ввести в сигнал некоторый высокочастотный шум, но этот шум будет отфильтрован при последующей обработке, которую вы выполняете позже.
Правильно, ну, "в зависимости от характера вашего сигнала". Вопрос не говорит, читает ли он температуру с термистора, приклеенного к боковой стороне свинцового кирпича, или он измеряет выходной сигнал смесителя для SDR. Таким образом, он получил другой вариант. Если бы кто-нибудь мог предоставить указатель на точные математические свойства сигнала, необходимые для того, чтобы избыточная дискретизация была действительной, я был бы действительно заинтересован, кстати. (И кажется, что это было бы полезным дополнением, а не, извините, исправлениями, которые только немного менее волнисты, чем мое первоначальное утверждение.)
Джей Коминек,
Lограмм2(aLоT)-2
Мой основной интерес заключается в звуковых сигналах, поэтому я считаю, что если 24-битные преобразователи достаточно дороги и их не так много, возможно, будут работать каскадные, более широкодоступные преобразователи будут работать. Спасибо всем за подробное объяснение. Звучит возможно сначала, не так ли? :)
ошибка разработчика