Матрица R-2R — самый простой способ сделать ЦАП из выводов микроконтроллера и резисторов: восемь выводов порта, 16 резисторов двух номиналов — и на выходе ступенчатое напряжение от нуля почти до питания. Та же схема в режиме напряжения работает и внутри прецизионных микросхем: в 16-разрядном TI DAC8830 младшие 12 разрядов — матрица R-2R, а четыре старших разложены на 15 равных сегментов. Калькулятор считает идеальный выход, а затем решает матрицу точно — с сопротивлением выводов, нагрузкой и разбросом резисторов.
Как пользоваться
- Задайте разрядность N, опорное напряжение и номинал R; ноги разрядов и терминатор — 2R. Для матрицы на выводах МК опора — уровень логической единицы, обычно напряжение питания.
- Введите код в десятичном, шестнадцатеричном или двоичном виде — при смене формата код пересчитывается, а схема под панелью показывает положение переключателей и напряжения узлов.
- Если матрица работает без буфера, укажите сопротивление нагрузки; если её питают выводы микроконтроллера или ключи — их выходное сопротивление. Пустые поля — идеальный случай.
- Допуск задаёт разброс каждого резистора. Ниже панели — DNL и INL в худшем случае и по методу Монте-Карло, а также допуск, при котором матрица остаётся монотонной.
Как считается
Сопротивление цепочки левее любого узла равно 2R, поэтому в каждом узле напряжение делится пополам: старший разряд вносит VREF/2, следующий — VREF/4 и так далее. Для кода D
Так же записывает выход и TI для DAC8830 (SLAS449D): код 8000h даёт VREF/2, код FFFFh — VREF · 65535/65536.
Если замкнуть все источники разрядов, из выходного узла видны две ветви по 2R, поэтому выходное сопротивление матрицы равно R при любом коде. У DAC8830 с его сегментированными старшими разрядами оно тоже не зависит от кода и составляет около 6,25 кОм. Нагрузка RL образует с ним делитель:
Точное решение. Для реальных резисторов калькулятор составляет уравнения узловых потенциалов: в каждом узле сумма токов через ногу (2R плюс сопротивление вывода), соседние резисторы R, терминатор и нагрузку равна нулю. Матрица проводимостей трёхдиагональная, система решается прямым методом без приближений. Цепь линейна, а «0» — это 0 В, поэтому выход любого кода — сумма весов wi его единичных разрядов:
Ступенька при переходе к разряду k (…0111 → …1000) не зависит от старших разрядов, поэтому DNL всей характеристики описывают N чисел. INL отсчитывается от прямой через нулевой и полный код, как в TI SLAA013:
Ступенька главного переноса 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 — результат модели калькулятора.
| N | 1 LSB при 5 В | Допуск для монотонности | 1/2N | Худший DNL при 0,1 % |
|---|---|---|---|---|
| 4 | 312,5 мВ | ±6,14 % | 6,25 % | −0,016 LSB |
| 6 | 78,13 мВ | ±1,54 % | 1,56 % | −0,065 LSB |
| 8 | 19,53 мВ | ±0,388 % | 0,391 % | −0,26 LSB |
| 10 | 4,883 мВ | ±0,0974 % | 0,0977 % | −1,03 LSB |
| 12 | 1,221 мВ | ±0,0244 % | 0,0244 % | −4,10 LSB |
| 16 | 76,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. Если вес старшего разряда меньше суммы остальных, ступенька уходит вниз, и ЦАП становится немонотонным.
Источники
- 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 В; выходное сопротивление постоянно и не зависит от кода, входное сопротивление опоры зависит от кода
- 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: точность зависит от питания и допуска матрицы
- 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
- 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>Обновлено .
Нашли ошибку в расчёте?