Перейти к содержанию

Калькулятор ЦАП на резистивной матрице R-2R

Какое напряжение даст код на выходе матрицы R-2R, насколько его просадят нагрузка и выводы микроконтроллера и хватит ли резисторов 1 % на 8 разрядов — калькулятор решает цепь точно и показывает, где ступенька пойдёт вниз.

Исходные данные

от 1 до 16

В

или уровень «1» выходов

Ом

2R = 20 кОм

%

разброс каждого, ±

Код записан

128 = 0x80 = 1000 0000

Ом

в каждой ноге 2R; пусто — 0

Ом

пусто — без нагрузки

Результат

Выход идеальной матрицы
2,5 В
VREF · 128 / 256
1 LSB
19,53 мВVREF / 256
Полная шкала
4,9805 Вкод 0xFF: VREF − 1 LSB
Выходное сопротивление
10 кОмравно R при любом коде
Наибольший ток вывода
125 мкАток опоры 125 мкА, сопротивление со стороны опоры 40 кОм
Резисторы
16 шт.9 × 20 кОм (2R) и 7 × 10 кОм (R)

Схема при этом коде

Матрица R-2R на 8 бит, код 1000 0000Вдоль верхней шины резисторы R соединяют узлы разрядов, от узла младшего разряда на общий провод идёт резистор 2R. Из каждого узла вниз идёт резистор 2R к переключателю разряда: единица подключает его к опорному напряжению, ноль — к общему проводу. Над узлами подписаны их напряжения, выход — узел старшего разряда справа.2R19,5 мВR2Rb0=039,1 мВR2Rb1=078,1 мВR2Rb2=0156 мВR2Rb3=0312 мВR2Rb4=0625 мВR2Rb5=01,25 ВR2Rb6=02,5 В2Rb7=1VREFпереключатель: VREF (1) или общий провод (0)VOUT

Допуск ±1 %: DNL, INL и монотонность

Худший случай на главном переносе 0111 1111 → 1000 0000
−2,58 LSB ✗шаг отрицательный: больший код даёт меньшее напряжение
INL в той же комбинации
1,29 LSBпо прямой через нулевой и полный код
Монте-Карло, 2000 матриц
12,6 % немонотонныху 95 % |DNL| ≤ 1,56 LSB, |INL| ≤ 0,833 LSB
Допуск для монотонности 8 бит (модель)
±0,388 %для сравнения 1/2^N = 0,391 %
ПереходDNL номиналDNL худший
0111 1111 → 1000 00000 LSB−2,58 LSB
0011 1111 → 0100 00000 LSB−1,3 LSB
0001 1111 → 0010 00000 LSB−0,655 LSB
0000 1111 → 0001 00000 LSB−0,341 LSB
0000 0111 → 0000 10000 LSB−0,186 LSB
0000 0011 → 0000 01000 LSB−0,11 LSB
0000 0001 → 0000 00100 LSB−0,0726 LSB
0000 0000 → 0000 00010 LSB−0,0565 LSB

Модель: каждый из 16 резисторов независимо отклоняется в пределах ±1 %; худший случай — вершина этого допуска с наименьшим шагом, Монте-Карло — 2000 равномерных выборок с фиксированным начальным числом. Матрица решается точно, но ТКС, разное сопротивление выводов в «0» и «1» и разброс этого сопротивления от разряда к разряду не учтены; нагрузка на DNL и INL не влияет.

Расчёт выполнен по формулам и данным из источников, приведённых на этой странице, и не заменяет проверку: параметры компонентов у разных производителей и даже партий различаются. Перед применением сверяйте результат с документацией на конкретные детали.

Матрица R-2R — самый простой способ сделать ЦАП из выводов микроконтроллера и резисторов: восемь выводов порта, 16 резисторов двух номиналов — и на выходе ступенчатое напряжение от нуля почти до питания. Та же схема в режиме напряжения работает и внутри прецизионных микросхем: в 16-разрядном TI DAC8830 младшие 12 разрядов — матрица R-2R, а четыре старших разложены на 15 равных сегментов. Калькулятор считает идеальный выход, а затем решает матрицу точно — с сопротивлением выводов, нагрузкой и разбросом резисторов.

Четырёхразрядный ЦАП на резистивной матрице R-2RВдоль верхней шины резисторы R соединяют узлы четырёх разрядов, от левого края на общий провод — резистор 2R. Из каждого узла вниз идёт резистор 2R к переключателю разряда, который подключает его к опорному напряжению или к общему проводу. Узел старшего разряда справа подключён к повторителю на операционном усилителе.2RR2Rb0R2Rb1R2Rb22Rb3VREFпереключатель: VREF (1) или общий провод (0)+−VOUT

Как пользоваться

  1. Задайте разрядность N, опорное напряжение и номинал R; ноги разрядов и терминатор — 2R. Для матрицы на выводах МК опора — уровень логической единицы, обычно напряжение питания.
  2. Введите код в десятичном, шестнадцатеричном или двоичном виде — при смене формата код пересчитывается, а схема под панелью показывает положение переключателей и напряжения узлов.
  3. Если матрица работает без буфера, укажите сопротивление нагрузки; если её питают выводы микроконтроллера или ключи — их выходное сопротивление. Пустые поля — идеальный случай.
  4. Допуск задаёт разброс каждого резистора. Ниже панели — DNL и INL в худшем случае и по методу Монте-Карло, а также допуск, при котором матрица остаётся монотонной.

Как считается

Сопротивление цепочки левее любого узла равно 2R, поэтому в каждом узле напряжение делится пополам: старший разряд вносит VREF/2, следующий — VREF/4 и так далее. Для кода D

VOUT=VREF⋅D2N,1 LSB=VREF2N,VFS=VREF⋅2N−12NV_{OUT} = \frac{V_{REF} \cdot D}{2^N}, \qquad 1\ \text{LSB} = \frac{V_{REF}}{2^N}, \qquad V_{FS} = V_{REF} \cdot \frac{2^N - 1}{2^N}

Так же записывает выход и TI для DAC8830 (SLAS449D): код 8000h даёт VREF/2, код FFFFh — VREF · 65535/65536.

Если замкнуть все источники разрядов, из выходного узла видны две ветви по 2R, поэтому выходное сопротивление матрицы равно R при любом коде. У DAC8830 с его сегментированными старшими разрядами оно тоже не зависит от кода и составляет около 6,25 кОм. Нагрузка RL образует с ним делитель:

VOUT,L=VOUT⋅RLRL+RV_{OUT,L} = V_{OUT} \cdot \frac{R_L}{R_L + R}

Точное решение. Для реальных резисторов калькулятор составляет уравнения узловых потенциалов: в каждом узле сумма токов через ногу (2R плюс сопротивление вывода), соседние резисторы R, терминатор и нагрузку равна нулю. Матрица проводимостей трёхдиагональная, система решается прямым методом без приближений. Цепь линейна, а «0» — это 0 В, поэтому выход любого кода — сумма весов wi его единичных разрядов:

V(D)=∑i=0N−1bi wiV(D) = \sum_{i=0}^{N-1} b_i \, w_i

Ступенька при переходе к разряду k (…0111 → …1000) не зависит от старших разрядов, поэтому DNL всей характеристики описывают N чисел. INL отсчитывается от прямой через нулевой и полный код, как в TI SLAA013:

DNLk=wk−∑j<kwjLSB−1,INL(D)=∑ibi(wiLSB−2i),LSB=V(2N−1)2N−1\text{DNL}_k = \frac{w_k - \sum_{j<k} w_j}{\text{LSB}} - 1, \qquad \text{INL}(D) = \sum_{i} b_i \left( \frac{w_i}{\text{LSB}} - 2^i \right), \qquad \text{LSB} = \frac{V(2^N - 1)}{2^N - 1}

Ступенька главного переноса 0111…1 → 1000…0 — разность двух почти равных половин шкалы, и её DNL ровно вдвое больше INL на коде 1000…0. Когда DNL опускается ниже −1 LSB, ступенька становится отрицательной: больший код даёт меньшее напряжение, ЦАП немонотонен.

Допуск. В худшем случае каждый из 2N резисторов отклоняется на ±t в ту сторону, которая сильнее всего уменьшает ступеньку: вершину допуска калькулятор находит по чувствительностям и проверяет соседние вершины. Метод Монте-Карло решает 2000 матриц с независимыми отклонениями, равномерными в пределах ±t; начальное число генератора фиксировано, поэтому результат повторяется. Допуск для монотонности — наибольший t, при котором худший DNL не ниже −1 LSB. Это модель, и по ней он близок к 1/2N: при N = 3 чуть больше, начиная с N = 4 — чуть меньше. Нагрузка на DNL и INL не влияет: выходное сопротивление одинаково для всех кодов, и она уменьшает все выходные напряжения в одно и то же число раз.

Пример

Восьмиразрядная матрица на выводах порта, питание 5 В, R = 10 кОм и 2R = 20 кОм — как в Microchip AN655.

  • Код 128 (1000 0000): VOUT = 5 · 128 / 256 = 2,5 В; 1 LSB = 5 / 256 = 19,53 мВ; полная шкала — 4,980 В.
  • Выходное сопротивление 10 кОм. Нагрузка 100 кОм без буфера даёт 2,5 · 100 / 110 = 2,273 В — на 9,1 %, или на 11,6 LSB, меньше.
  • Выводы с сопротивлением 75 Ом (граница из AN655) в каждой ноге: код 128 даёт 2,4969 В, код 127 — 2,4834 В. Ступенька главного переноса 13,5 мВ вместо 19,5 мВ, то есть DNL −0,31 LSB; INL 0,15 LSB, матрица монотонна.
  • Резисторы 1 %: в худшем случае DNL главного переноса −2,58 LSB — ступенька вниз. Из 2000 случайных матриц калькулятора немонотонны 12,6 %; это выборка, и на 100 000 матриц доля около 13,6 %, то есть примерно каждая седьмая. При 0,1 % худший DNL −0,26 LSB. Модель требует согласования не хуже ±0,388 %, а с выводами по 75 Ом — ±0,269 %.

Какая точность резисторов нужна

Опора 5 В, отклонения резисторов независимы; допуск для монотонности и худший DNL — результат модели калькулятора.

N1 LSB при 5 ВДопуск для монотонности1/2NХудший DNL при 0,1 %
4312,5 мВ±6,14 %6,25 %−0,016 LSB
678,13 мВ±1,54 %1,56 %−0,065 LSB
819,53 мВ±0,388 %0,391 %−0,26 LSB
104,883 мВ±0,0974 %0,0977 %−1,03 LSB
121,221 мВ±0,0244 %0,0244 %−4,10 LSB
1676,29 мкВ±0,00153 %0,00153 %−65,5 LSB

Восьми разрядам хватает резисторов 0,1 %: худший DNL −0,26 LSB. Готовые сборки нормируют соотношение, а не номинал: у TT Electronics IRC серии R-2R абсолютный допуск ±2 %, точность соотношения ±1 LSB для 8 и 10 бит, ТКС резисторов согласован в пределах ±5 ppm/°C. Что именно означает этот ±1 LSB — DNL или INL — и гарантирована ли монотонность, в документе не сказано, а INL −1 LSB на коде 1000 0000 уже даёт DNL −2 LSB на главном переносе. Для 12 разрядов нужно согласование порядка 0,02 % — это уровень прецизионных сборок, и проще взять готовый ЦАП, в котором старшие разряды к тому же сегментированы, как четыре старших бита DAC8830. Пара 10 и 20 кОм есть и в ряду E24, и в E96; другие пары подберёт калькулятор рядов E.

Ограничения и типичные ошибки

  • Опора — это питание выводов. У матрицы на портах МК VREF — уровень единицы на выходах, то есть питание с его пульсациями и неточностью. Для точного выхода выводы питают от источника опорного напряжения или ставят буферные ключи.
  • Разное сопротивление выхода в «1» и «0». Калькулятор считает одно значение для обоих состояний. По AN655 2R должно быть в 256 раз больше сопротивления вывода — при 20 кОм это 78 Ом; разница сопротивлений верхнего и нижнего ключа добавляет ошибку, зависящую от кода. Одинаковое сопротивление выводов компенсируют, уменьшив резисторы ног на его величину.
  • Нагрузка без буфера. Выход — источник с сопротивлением R, поэтому даже 100 кОм на матрице 10 кОм отнимают 9 % шкалы. Ставят повторитель на ОУ; усиление и полосу каскада посчитает калькулятор усилителя на ОУ.
  • Деление на 2N − 1. Наибольший код даёт VREF − 1 LSB, а не VREF.
  • Выбросы на главном переносе. Выводы порта переключаются не строго одновременно, и на переходе 0111 1111 → 1000 0000 на выходе появляется кратковременный выброс; даже у DAC8830 он составляет 35 нВ·с. Пульсаций несущей, как у ЦАП на ШИМ, у матрицы нет, и в большинстве схем фильтр после неё не нужен (AN655).
  • Ток опоры зависит от кода. Со стороны опоры матрица — нагрузка, которая меняется от бесконечности при нулевом коде до величины порядка R на кодах с чередующимися битами: у 8-разрядной матрицы это 4R при коде 1000 0000, около 3R при всех единицах и около R при 0101 0101. Поэтому опору подключают к источнику с малым выходным сопротивлением, как советует и SLAS449D. Ток одного вывода по расчёту не больше двух третей VREF/2R.

Как устроены другие архитектуры ЦАП — резистивная цепочка и ШИМ, — какие параметры у микросхем и как работать с ЦАП STM32 и MCP4725, рассказано в статье «Цифро-аналоговый преобразователь».

Частые вопросы

Почему выходное сопротивление матрицы R-2R равно R?

Если замкнуть все источники разрядов, из выходного узла видны две ветви по 2R: цепочка младших разрядов и нога старшего. Параллельно это R, и от кода оно не зависит. У TI DAC8830, где младшие 12 разрядов — матрица R-2R, а четыре старших — сегменты, выходное сопротивление тоже постоянно, около 6,25 кОм. Поэтому под нагрузкой RL выход умножается на RL/(RL + R): матрица 10 кОм на нагрузке 100 кОм теряет 9,1 %.

Какая точность резисторов нужна для 8-разрядного ЦАП R-2R?

По модели калькулятора — согласование не хуже ±0,39 %, это около 1/256. С резисторами 1 % в худшем случае DNL на переходе 0111 1111 → 1000 0000 равен −2,6 LSB, и немонотонна примерно каждая седьмая случайная матрица (около 13,6 %; калькулятор на 2000 выборках показывает 12,6 %); при 0,1 % худший DNL −0,26 LSB. Готовые сборки нормируют именно соотношение: у TT Electronics IRC серии R-2R оно ±1 LSB при абсолютном допуске ±2 %, но монотонность документ не обещает.

Можно ли подключить матрицу R-2R прямо к выводам микроконтроллера?

Да, так сделано в Microchip AN655: восемь выводов порта PIC и резисторы 10 и 20 кОм. Сопротивление выводов PIC при 5 В меньше 75 Ом, а для точности 1 LSB при 8 битах 2R должно быть в 256 раз больше. Точный расчёт с 75 Ом в каждой ноге даёт DNL −0,31 LSB и ошибку не больше 0,16 LSB. Ток одного вывода — не больше двух третей VREF/2R, то есть 0,17 мА при 5 В и 20 кОм.

Сколько резисторов нужно для N-разрядной матрицы R-2R?

2N: N резисторов 2R в ногах разрядов, N − 1 резисторов R между узлами и ещё один 2R — терминатор у младшего разряда. Для 8 бит это 16 резисторов, как в AN655: девять по 20 кОм и семь по 10 кОм. Чтобы обойтись одним номиналом из одной партии, каждый 2R собирают из двух резисторов R последовательно.

Почему ЦАП R-2R ошибается сильнее всего на середине шкалы?

На переходе 0111…1 → 1000…0 выключаются все младшие разряды и включается старший, и ступенька — разность двух почти равных половин шкалы. Ошибка веса старшего разряда входит в неё дважды: DNL на главном переносе ровно вдвое больше INL на коде 1000…0. Если вес старшего разряда меньше суммы остальных, ступенька уходит вниз, и ЦАП становится немонотонным.

Источники

  1. Texas Instruments. DAC8830, DAC8831: 16-Bit, Ultra-Low Power, Voltage-Output Digital-to-Analog Converters (SLAS449D), 2007 — Theory of Operation, рис. 44: 12-разрядная матрица R-2R в режиме напряжения и четыре старших разряда на 15 равных сегментах, VOUT = VREF · Code / 65536; табл. 1: коды FFFFh, 8000h, 0001h и 0; Electrical Characteristics: выходное сопротивление 6,25 кОм, выброс на главном переносе 35 нВ·с; нагрузка без буфера 60 кОм; LSB 38 мкВ при опоре 2,5 В; выходное сопротивление постоянно и не зависит от кода, входное сопротивление опоры зависит от кода
  2. Microchip. AN655: D/A Conversion Using PWM and R-2R Ladders to Generate Sine and DTMF Waveforms (DS00655A), 1997 — раздел R-2R Ladder и рис. 3: восьмиразрядная матрица 10 и 20 кОм на выводах порта PIC; сопротивление выводов меньше 75 Ом при 5 В; для точности 1 LSB при 8 битах 20 кОм должны быть в 256 раз больше сопротивления вывода; табл. 2, прим. 2: 16 резисторов на 8 бит, прим. 6: точность зависит от питания и допуска матрицы
  3. TT Electronics / IRC. R-2R Ladder Network, R-2R Series (QS009, QS014), issue January 2009 — сборки на 8 бит (QS014, 16 выводов) и 10 бит (QS009, 20 выводов), номиналы 10K/20K и 25K/50K; абсолютный допуск ±2 %, точность соотношения ±1 LSB, ТКС ±25, ±50 или ±100 ppm/°C, согласование ТКС ±5 ppm/°C
  4. Texas Instruments. Understanding Data Converters (SLAA013), 1995 — разд. 2.2: 1 LSB ЦАП — высота ступеньки; разд. 3.3: DNL — отличие ступеньки от 1 LSB, при DNL за пределами 1 LSB возможна немонотонность; разд. 3.4: INL по прямой через концевые точки
Встроить калькулятор на свой сайт

Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах

<iframe src="https://gaw.ru/embed/r2r/" title="Калькулятор ЦАП на резистивной матрице R-2R" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/r2r/">Калькулятор ЦАП на резистивной матрице R-2R</a> — GAW.ru</p>
Автоподстройка высоты рамки

Если сайт разрешает скрипты, добавьте этот код один раз в любом месте страницы: рамка будет менять высоту вместе с результатом расчёта.

<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>

Обновлено .

Нашли ошибку в расчёте?