Предположим, у меня есть пара 12-разрядных АЦП, и я могу представить, что их можно каскадировать, чтобы получить <= 24-разрядный выход.
Я могу подумать о простом использовании одного для положительного диапазона, а другого для отрицательного диапазона, хотя, вероятно, будут некоторые искажения в области пересечения. (предположим, что мы можем игнорировать несколько битов ошибки или, возможно, разместить третий АЦП для измерения значения около 0 вольт).
Другой вариант, о котором я думал, - это использование одного высокоскоростного АЦП и переключение опорных напряжений для получения более высокого разрешения на более низкой скорости. Также должен быть способ получить реальный результат с использованием одного АЦП с фиксированным номером, а затем переключать арефы вторичного преобразователя, чтобы получить более точное значение между ними.
Любые комментарии и предложения приветствуются.
Я предполагаю, что четырехъядерный 8-битный (или двойной 12-битный) чип дешевле, чем один 24-битный чип.
источник
Ответы:
Много вещей в вашем вопросе. Итак, давайте возьмем их один за другим.
Не совсем - вы получите 13-битное разрешение. Можно описать работу 12-битного преобразователя как определение, какое из входных напряжений 4096 бинов (2 ^ 12) является. Два 12-битных АЦП дадут вам 8192 бина или 13-битное разрешение.
Собственно, так работает конвертер последовательных приближений . В основном один-битовый преобразователь ( так называемый компаратор) используется с цифроаналоговым преобразователем , который производит изменяющееся опорное напряжение в соответствии с алгоритмом последовательной аппроксимации , чтобы получить оцифрованный образец напряжения. Обратите внимание, что преобразователи SAR очень популярны, и большинство АЦП в ОК имеют тип SAR.
На самом деле это очень похоже на работу конвейерных АЦП . Однако вместо изменения задания вторичного АЦП ошибка остатка, оставшаяся после первой ступени, усиливается и обрабатывается АЦП следующей ступени.
На самом деле есть причина того, что наличие 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 нВ)
источник
Там нет такого понятия, как бесплатный обед.
править
Там , кажется, непонимание передискретизации, а также тот факт , что в 1-битные аудио АЦП , которые могут дать вам 16-битное разрешение.
Если ваш вход имеет фиксированный уровень постоянного тока, скажем, 0,2 В в диапазоне входного напряжения 1 В, ваш выход всегда будет таким же. С 1-битным АЦП это будет ноль для нашего примера (уровень меньше половины эталона). Теперь это будет так, будь то выборка с частотой 1 выборка в секунду или 1000. Таким образом, усреднение не меняет этого. Почему он работает с аудио-АЦП ?, потому что напряжение постоянно меняется (шум), что, согласно Эйнштейну (относительность, вы знаете ;-)), равнозначно поддержанию постоянного напряжения и изменению задания. А потомпри передискретизации вы получаете несколько разных показаний, которые вы можете усреднить, чтобы получить достаточно хорошее приближение к вашему фактическому уровню.
Шум должен быть достаточно сильным, чтобы пройти пороговое значение (я) АЦП, и должен соответствовать определенным ограничениям, таким как распределение Гаусса (белый шум). В 1-битном примере это не сработало, потому что уровень шума слишком низкий.
Дополнительная информация:
Замечание по применению Atmel AVR121: повышение разрешения АЦП с помощью передискретизации.
источник
Да, теоретически вы можете делать то, что хотите, но только если у вас есть какое-то совершенно нереальное оборудование.
Увы, несколько других замечаний относительно ограниченной дополнительной точности верны.
Рассматривать. Измерьте напряжение с помощью 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-битный сигнал с сигма-дельтой, зафиксировать эту точку и затем последовательно измерять ее с помощью второго АЦП. Пока сигнал остается в диапазоне действия второго АЦП, вы получите намного более быстрый результат.
источник
Существует нечто, называемое суперсэмплингом, которое можно использовать для увеличения разрешения многих типов АЦП.
Это работает, добавляя шум к сигналу. Хотя шум снижает разрешение, необходимо заставить данные разделяться на несколько битов. (Я не парень по обработке сигналов - это только то, как я понимаю.) Ваш шум может быть только 1 или 2 бит, но он должен быть там. Если вы берете одну 12-битную выборку - у вас есть 12 бит. Если затем взять 4 сэмпла, сложить их и разделить на два, вы получите 13-битный сэмпл. (Каждый дополнительный бит требует 4 выборки, из-за Найквиста.)
Простой способ сделать это, чтобы добавить шум к опорному напряжению. Я использую это для повышения 12-разрядного АЦП в dsPIC33F до 16-разрядного для более высокого разрешения. Предварительно я установил асинхронный таймер на высокой частоте и использую DMA, чтобы поставить в очередь последовательность номеров PRNG в выходном захвате, который дает относительно чистый источник шума. Выходной шум смещает опорное напряжение на 0,1% (1k-1Meg делитель.) Шум является двунаправленным, проходкой и поиска. Я использую DMA dsPIC33F для постановки в очередь образцов, так что это может быть сделано с небольшим вмешательством ЦП. Конечно, максимальная частота дискретизации падает примерно до 1/32 нормальной скорости, но это не проблема для моего приложения.
Поскольку шум не всегда распределяется равномерно, я буду калибровать входы на каждой поставляемой единице, хотя разница, вероятно, будет только 1 или 2 LSB.
источник
Используя суммирующий усилитель, вы можете суммировать два выхода ЦАП. Вы можете использовать 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 последовательных результата, чтобы получить некоторое усреднение.
Имейте в виду, что ничего из этого не проверено. Я моделировал только каскад усилителя без учета шума и смещения операционного усилителя. Если кто-то решит построить его, напишите результаты в комментариях.
источник
редактировать: см. комментарии для исправления моей математики.
источник