Тестируем cs1238
В данной статье сделана попытка сравнить работу двух АЦП — cs1238 (Chipsea Tech Shenzhen) и mcp3424 (Microchip) в диапазоне входных напряжений 0–30 мВ.
Диапазон напряжений выбран под требуемый рабочий диапазон температур (20 °С…760 °С) термопары хромель-алюмель.
cs1238 — прецизионный АЦП с двумя входными дифференциальным каналами и встроенным температурным датчиком. Источник опорного напряжения — внешний. Перевод даташита на английский язык младшей версии — cs1237.
mcp3424 — прецизионный АЦП с четырьмя входными дифференциальным каналами. Источник опорного напряжения — внутренний = 2.048В ± 0.05%, типовой температурный дрейф 15 ppm/°C.
Общая схема эксперимента:
Микроконтроллер esp32 через схему формирования уровней вырабатывает два тестовых напряжения AOUT+ и AOUT-, которые затем подаются на дифференциальный вход mcp3424 (задействован только первый канал) и на дифференциальные входы модуля на основе cs1238. Модуль на основе cs1238 помещен в «климатическую камеру». После формирования сигналов esp32 производит опрос показаний cs1238, mcp3424, их преобразование, сравнение и отправку результатов на компьютер.
Схема модуля на основе cs1238:
Схема «тестера»:
Вывод IO25 — выход первого канала встроенного в esp32 8-ми битного ЦАП (DAC), с выходным диапазоном напряжений от 0В (для кода DAC = 0) до 3.3В (для кода DAC = 255). Линия AOUT- смещена относительно GND на 1.25В. На линии AOUT+ формируется напряжение UAOUT+ = (UDAC*47/2247 + 2.5)/2 ≈ 0.0105* UDAC + 1.25 В. Таким образом между линиями AOUT+ и AOUT- формируется тестовый сигнал в диапазоне от 0 до 30 мВ, который далее подается на mcp3424 (для оцифровки) и на испытуемый модуль cs1238.
Подключение «тестера» к модулю cs1238:
Каналы 1,2 соединены вместе, на вход второго канала подключен резистор 100К. Сигнальные провода AOUT+ и AOUT- подключены экранированной витой парой, экран соединен с GND. AOUT+ и AOUT- припаяны на вход первого канала cs1238 к выводам конденсатора C4.
Питание и линии обмена подключены проводом мгтф-0.07, без экранировки.
Длинна обоих кабелей 0.5–0.7 м.
АЦП mcp3424 сконфигурирован следующим образом: коэффициент усиления PGA=8, разрядность = 18 бит (≈3.75 выборок / с). С учетом встроенного ИОН = 2.048 В, для mcp3424 получается фиксированный коэффициент для расчета напряжения: 1.953125 мкВ / код.
Частота преобразования для cs1238 задавалась равной 40 Гц. Схема опроса:
Сначала опрашиваются каналы 1, 2 с коэффициентом усиления = 2;
Затем опрашивается температурный канал 3, с коэффициентом усиления = 1.
При переключении каналов на 40 Гц опросе cs1238 выжидает три цикла преобразования, таким образом опрос каждого канала занимает ≈ 100 мс. Что для трех каналов cs1238 приводит к ≈3.33 выборок / с.
Для перевода кода измерения канала в мкВ для каналов 1,2 и в градусы для канала 3 используем следующие формулы:
U1 = CODE1*K1(CODE3) + OFFSET1
U2 = CODE2*K2(CODE3) + OFFSET2
T = KT*CODE3 + T0
где:
U1, U2 — показания каналов 1,2 cs1238, в мкВ;
T — температура, в ° C;
KT, T0 — коэффициенты преобразования для расчета температуры;
CODE1, CODE2, CODE3 — коды каналов 1,2,3 cs1238;
K1(CODE3), K2(CODE3) — коэффициенты преобразования мкВ/код для каналов 1, 2, рассчитанные по показаниям температурного канала cs1238;
OFFSET1, OFFSET2 — смещение ноля первого и второго канала cs1238.
Калибровка
Для перевода полученных от cs1238 кодов с каналов 1,2,3 в физические величины (мкВ, °C) необходимо рассчитать коэффициенты преобразования. Определение коэффициентов преобразования мкВ/код, ° С/код и смещений cs1238 было сделано следующим образом:
модуль cs1238 нагревался/охлаждался до определенной температуры;
выставлялся уровень DAC = 0, после чего выдерживалась пауза 1с, и производилось 200 замеров mcp3424, с параллельным опросом трех каналов cs1238 (получалось 207–208 замеров). Полученные коды усреднялись;
выставлялся уровень DAC = 255, после чего выдерживалась пауза 1с, и производилось 200 замеров mcp3424, с параллельным опросом трех каналов cs1238. Полученные коды усреднялись;
по полученным усредненным кодам рассчитывались коэффициенты преобразования мкВ/код и смещения для каналов 1, 2.
Полученные точки температурной калибровки приведены в таблице ниже:
Код температурного канала | Коэффициент канала 1, мкВ/код | Смещение канала 1, мкВ | Коэффициент канала 2, мкВ/код | Смещение канала 2, мкВ | T, °C |
767746.5 | 0.07433717186 | 46.86 | 0.07418846855 | 46.81 | 23.2 |
775723.0 | 0.0743242063097 | 46.54 | 0.0741755246669 | 46.56 | 26.2 |
776171.1 | 0.0743231840299 | 46.71 | 0.0741741020057 | 46.75 | 26.4 |
776476.4 | 0.0743224395224 | 46.85 | 0.0741741349055 | 46.76 | 26.6 |
776677.7 | 0.0743221557261 | 46.84 | 0.0741740211089 | 46.67 | 26.7 |
728753.4 | 0.0743869040271 | 47.25 | 0.0742382058481 | 46.87 | 9.6 |
728650.4 | 0.0743875751442 | 46.96 | 0.0742377931319 | 46.87 | 9.6 |
728536.0 | 0.0743869967431 | 47.15 | 0.0742379309724 | 46.92 | 9.5 |
728402.1 | 0.0743867854733 | 47.16 | 0.0742379722261 | 46.82 | 9.5 |
804210.3 | 0.0742753200894 | 46.77 | 0.0741265830651 | 46.77 | 36.2 |
804348.4 | 0.0742757288193 | 46.69 | 0.0741272288605 | 46.68 | 36.3 |
804590.5 | 0.0742751702964 | 46.72 | 0.0741271588491 | 46.65 | 36.3 |
804659.2 | 0.0742754539646 | 46.59 | 0.0741270329251 | 46.42 | 36.4 |
804742.1 | 0.0742753717948 | 46.63 | 0.0741264186894 | 46.59 | 36.5 |
831748.8 | 0.0742262506358 | 46.48 | 0.0740777874452 | 46.53 | 45.6 |
831893.9 | 0.0742260332585 | 46.47 | 0.0740778526887 | 46.50 | 45.7 |
832124.3 | 0.0742252961772 | 46.64 | 0.0740776555629 | 46.37 | 45.8 |
831416.9 | 0.074227186345 | 46.54 | 0.0740788405717 | 46.46 | 45.7 |
831581.0 | 0.074226823152 | 46.48 | 0.0740786235061 | 46.50 | 45.6 |
Исключая часть точек (первые замеры в группе температур слегка выбиваются из последующих, видимо это связано с тем что модуль к началу первых замеров еще не достаточно термостатировался) получаем зависимости коэффициентов от кода температурного канала.
Зависимость температуры от кода температурного канала (3-й канал cs1238) аппроксимируем линейной зависимостью:
Коэффициент мкВ/код в зависимости от кода температурного канала аппроксимируем зависимостью второго порядка, для примера приведен 1-й канал:
Смещение ноля каналов 1 и 2 примем константой, т.к. разброс не превышает 1 мкВ.
Таким образом получаем следующие коэффициенты в зависимости от кода температурного канала:
K1(CT) = -3.788712696323720E-15*CT2 + 4.347611549088180E-09*CT + 7.323084189812140E-02 мкВ / код;
K2(CT) = -3.795516417335000E-15*CT2 + 4.368142312542810E-09*CT + 7.307031291260290E-02 мкВ / код;
T (CT) = 3.502402389918730E-04*CT — 2.455608246967150E+02 ° C;
OFFSET1=46.73 мкВ;
OFFSET2=46.65 мкВ.
Ввиду того что каналы 1 и 2 подключены по разному (канал 2 подключен через делитель 100К-200 Ом) коэффициенты мкВ/код для каналов 1 и 2 отличаются. Отношение коэффициентов K1/K2 = 1.002 + 400.4/RВХ, где RВХ — входное сопротивление одного канала АЦП. Отсюда можно косвенно оценить величину входного сопротивления АЦП: RВХ = 400.4/(K1/K2–1.002) ≈ 70 М.
Шум входного сигнала
Для начала сравним уровни шума mcp3424 и cs1238. Делаем это следующим образом:
На DAC задаем уровень тестируемого сигнала;
Выдерживаем паузу 1с;
Производим 200 замеров mcp3424 и параллельно производим замеры с каналов 1,2,3 cs1238;
Пересчитываем показания cs1238 в микровольты с применением калибровочных коэффициентов;
Пересчитываем показания mcp3424 в микровольты;
Рассчитываем плотность вероятности для дискретных интервалов [U-1 мкВ, U+1 мкВ), где U — середина интервала, задается с шагом 2 мкВ.
В итоге получаем следующие распределения для разных уровней тестового сигнала:
1) для кода DAC=0 (начало интервала тестирования):
2) для кода DAC=64:
3) для кода DAC=128:
4) для кода DAC=192:
5) для кода DAC=255 (конец интервала тестирования):
Как видим распределения cs1238 и mcp3424 практически не отличаются и отдаленно напоминает нормальное распределение. Амплитуда шума тестового сигнала составляет порядка 8 мкВ.
Запускаем поток измерений
Далее на вход модуля подавался ступенчатый тестовый сигнал, соответствующий линейно нарастающим от 0 до 255 кодам DAC. После подачи очередного значения на DAC выдерживалась пауза 1с, после чего считывались показания mcp3424 и трех каналов cs1238. Ниже приведены графики разницы показаний cs1238 и mcp3424. Параллельно производился нагрев/охлаждение модуля в камере.
Обозначения на графиках:
deltaC1, uV — разница между показаниями первого канала cs1238 и mcp3424, мкВ;
deltaC2, uV — разница между показаниями второго канала cs1238 и mcp3424, мкВ;
T, C — температура, рассчитанная по показаниям третьего канала cs1238, °C.
Шаг сетки по оси OX — 256 секунд, или 256 измерений.
Первый участок, от 0 до 5120с:
Второй участок, от 5120с до 10240с:
Третий участок, от 10240с до 15360с:
Четвертый участок, от 15360с до 22016с:
Разница в показаниях на интервале времени 13000с-16000с доходящая до 50 мкВ вероятнее всего вызвана нагревом mcp3424. После переключения камеры на охлаждение на ~16000с с корпуса «тестера» была снята крышка для охлаждения внутренностей до комнатной температуры. После чего разница в показаниях mcp3424 и cs1238 не превышала 8 мкВ, т.е. уровня шума входного сигнала.