Pull to refresh

Разбор тестового задания по электронике в Яндекс

Level of difficultyHard
Reading time9 min
Views36K

Сегодня в очередной раз наткнулся на вакансию старшего инженера - схемотехника в Яндекс. Решил, что это знак и настало время разобрать их тестовое задание. Звучит оно следующим образом:

Есть:
Сенсор температуры на основе Pt1000, где Rt = 1000 Ом при 0 °С, Rt = 1385 Ом при 100 °С. АЦП с входным диапазоном 0–3 В и эквивалентным входным сопротивлением не более 10 кОм.
Требуется:
Разработать схему согласования сенсора и АЦП так, чтобы температуре 0 °С соответствовало напряжение 0 В на входе АЦП, температуре 100 °С соответствовало 3 В. Мощность, рассеиваемая на Pt1000, не должна превышать 1 мВт.

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

1. Трактование условий

Начнем с выгодного для нас трактования задания, условимся, что датчик расположен на удалении от схемы в 2м и и подключен проводами сечением 0.03мм^2 к плате. Соответственно, нет надобности функционирования схемы в температурном диапазоне 0-100°С. Считаем, что температура резко не изменяется, к примеру, не быстрее чем 1°С/1мс. За минимизацией стоимости я не гонюсь, поэтому не буду рассматривать китайские аналоги микросхем. Будем считать, что печатная плата спроектирована идеально и не оказывает никакого влияния на схему.

Поскольку не все модели выбранных компонентов есть в среде моделирования, буду выбирать похожие, дополнительно комментируя выбор. Также я не буду подробно разбирать базовые схемы, про них можно почитать в интернете и в даташитах производителей.

2. Подготовка

Начнем с датчика и сопротивления его проводов.

Исходя из таблицы выше при длине кабеля 2м из меди сопротивление составит 1.067 Ом. Предположим что 0.2м кабеля расположена в зоне, где температура 100°С, тогда получим:

1.067Ом + 0.1 * (1 + 4.3 * 10^-3 * (100°С - 20°С)) = 1.1 Ом.

С учетом, что у нас есть еще и возвратный кабель, умножаем на 2, итого 2.2 Ома, что составляет 0.22% от минимального сопротивления. Много это или мало, зависит от требований по точности измерительной схемы, однако мы попробуем снизить ошибку до минимума.

Какие схемы измерения можно применить?

Мост Уитстона. Мост состоит из 4 сопротивлений, причем R1 = R2, Pt1000 в нашем случае - Rx, при температуре 0°С его сопротивление равно R3. При повышении температуры сопротивление Rx растет, таким образом появляется разность потенциалов между точками соединения R1, R2 и R3, Rx.

Мост Уитстона
Мост Уитстона

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

Измерение с помощью источника тока. Идея простая: источник тока подключается к резистивному датчику, падение напряжения на датчике измеряется операционным усилителем и масштабируется.

Пример двухпроводного подключения термдатчика
Пример двухпроводного подключения термдатчика

Выделяют три вида подключения: 2-, 3- и 4-проводное.

Виды подключения термодатчика
Виды подключения термодатчика

2-х проводное самое простое, но обладает наименьшей точностью за счет отсутствия полной компенсации сопротивления проводов. 4-х и 3-х проводное более точные, но требует дополнительных измерительных компонентов в схеме. Попробуем скомбинировать два этих способа в один, конечно, с некоторыми допущениями.

3. Расчет схемы

Источник тока

Начнем с источника тока, используем схему зеркала тока Вилсона, Q4 держит напряжение Vce Q5 примерно на напряжении 2*Vbe, работая как каскод. Добавим R15, R17 для создания большей стабильности при вариациях Vbe от транзистора к транзистору 100 Ом, 1% вполне достаточно. В качестве Pt1000 у нас выступает R2. Для большей точности используем pnp транзисторы с высокой бета BC807-40:

Токовое зеркало Вилсона
Токовое зеркало Вилсона

Чем больше тока, тем больше падение напряжения на термодатчике, следовательно, более точные измерения. Однако не забываем про условие ограничения мощности в 1мВт. Зададим ток, равный 800мкА, исходя из графика в документации, считаем Vbe равным 600мВ:

Напряжение Vbe от тока
Напряжение Vbe от тока

Таким образом для 800мкА нам понадобится резистор:

R18 = (3.3В - (0.6В * 2) - (800мкА * 100Ом)) / 800мкА = 2525 Ом

Возьмем 2.49кОм и 34.8Ом 0.1% (на схеме будет указана их сумма как R18).

А теперь нам понадобится еще одно плечо, соединим базы транзисторов, в таком случае ток в R3 будет равен R2 (считаем что Vbe отличается минимально). R3 выберем равным сопротивлению Pt1000 при 0°С, т.е 1кОм 0.1%

Внесение второго плеча
Внесение второго плеча

Подключение термодатчика

Для соединения датчика будем использовать псевдо 3-х проводную схему соединения, два провода для источника тока и один для измерения.

Схема подключения термодатчика с проводами
Схема подключения термодатчика с проводами

Помним, что расчетное сопротивление кабеля 1.1Ом. Оно обозначено резисторами R22, R21, R9. То есть за счет непосредственного подключения входа усилителя к датчику третьим проводом, падение напряжения на сопротивлении верхнего провода (R22) не будет влиять на измерения. Остается вопрос: что делать с возвратным проводником R21? Его я предлагаю компенсировать цепью R10, R6. Внеся их в соседнее плечо - мы создаем дополнительное падение напряжения, которое будет компенсировать падение на R21 (обратном кабеле). R10 - подстрочный резистор, которым можно калибровать измерения, например, при 0 градусов.

Усилитель ошибки

Теперь перейдем к самому усилителю, в данном случае отлично подойдет дифференциальный усилитель. Основные требования: низкое смещение нуля, низкий входной ток, минимальная несимметрия токов между выводами, rail - to rail выход, минимальные отличия усиления каждого из диф. входов. Хорошим кандидатом на эту роль является AD8223:

  • Vos - 160мкВ (0.052% от полного диапазона при температуре от 0 до 100°С)

  • Ib - 28нА (дает падение 38мкВ на Pt1000 и ошибку в 0.012%)

  • Ibos - 2.5нА (дает падение 3.46 мкВ на Pt1000 и ошибку в 0.0011%)

  • Vout - 0.01В от земли и 0.15В от питания при нагрузке 100кОм (дает ошибку в 0.7% при G = 5, поборемся с этим позже)

  • Точность усиления - 0.02% при G = 5

  • CMRR - 100дБ при G = 5

Усилитель хороший, но при работе с ним есть нюансы, например, его не получится напрямую подключить к АЦП, поскольку при нагрузке 10кОм максимальное выходное напряжение будет на 0.5В ниже положительного питания. Также усилитель имеет наименьшую погрешность при усилении G = 5:

The AD8223 defaults to G = 5 when no gain resistor is used. Add the tolerance and gain drift of the RG resistor to the specifications of the AD8223 to determine the total gain accuracy of the system. When the gain resistor is not used, gain depends only on internal resistor matching, so gain error and gain drift are minimal.

То есть, никаких резисторов нам не потребуется. Для ограничения полосы предлагаю добавить на выход фильтр с частотой среза 5кГц (1кОм и 3.3нФ):

Схема термодатчика с дифференциальным усилителем
Схема термодатчика с дифференциальным усилителем

В моей библиотеке нет AD8223, поэтому для модели я использую AD8221 с двуполярным питанием.

Итого:

В R20 и R16 течет одинаковый ток, при росте сопротивления термодатчика падение напряжения на нем увеличивается, на входе дифференциального усилителя растет разность напряжений, поскольку R20 остается все также равным 1кОм.

Выходной каскад

Осталось спроектировать выходной каскад для согласования с АЦП. Теперь наступает самая интересная часть, на что же мы готовы ради милливольт? У rail to rail усилителей есть одна важная особенность: напряжение на их выходе никогда не будет равно абсолютному нулю. Лучшее, что я нашел 30мВ, а это 1% выходного напряжения. Похоже, пора создавать отрицательное питание. Используем для этого ICL7660A, ее внутренняя схема:

Внутренности ICL7660A
Внутренности ICL7660A

Подключение стандартное, для напряжения 3.3В необходимо заземлить 6й вывод LV, диод, исходя из графика производителя, не потребуется.

Подключение микросхемы ICL7660A
Подключение микросхемы ICL7660A

Выберем частоту переключения равной 10кГц, конденсатор Cosc в таком случае не понадобится. Емкость С1 = С2 выберем равной 120мкФ (один танталовый 293D107X96R3B2TE3 и два керамических по 10мкФ). Рассчитаем пульсации при таких условиях

Vripple = 1 / (2 * fpump * C2) = 410мВ

Много? А давайте посмотрим на PSRR (коэффициент ослабления шумов по питанию) усилителей, для которых предназначается это питание. Вот, например график для отрицательной шины AD8223. Итого наши 410мВ при ослаблении в 90дБ превратятся в 13мкВ.

График PSRR для инструментального усилителя
График PSRR для инструментального усилителя

У потенциального претендента (OPA2376) в следующем каскаде график PSRR чуть хуже, но при 75дБ ослабления мы получим 73мкВ пульсаций.

График PSRR для операционного усилителя
График PSRR для операционного усилителя

Однако эти усилители могут быть заменены на аналоги (например, AD8223 -> AD8221) у которых PSRR хуже. Помимо прочего, подобные пульсации создают помехи на плате. Для их устранения потребуется пару элементов, которые не скажутся ни на габаритах платы, ни на стоимости устройства.

Соберем отрицательный линейный регулятор на транзисторе MMBT2907A и стабилитроне PH_BZX884-B3V0 с напряжением 3В. Таким образом, мы сгладим все пульсации выше примерно -3В + 0.7В), т.е -2.3В, отлично! Итоговая схема:

Схема формирования отрицательного напряжения
Схема формирования отрицательного напряжения

Будем использовать полученные -2.3В для выходного каскада, также, раз есть такая возможность, подключим отрицательное напряжение и к дифференциальному усилителю, таким образом обойдем ограничение в 0.01В от земли. Кстати, при двуполярном питании AD8223 производитель рекомендует отрицательное напряжение не больше -2, при сформированных -2.3В будем иметь небольшой запас.

Выходной каскад построим на OPA2376, его параметры

  • Vos - 25мкВ (0.0017% от полного диапазона при температуре от 0 до 100°С)

  • Ib - 10пА (несравнимо малое падение на R12)

  • Ibos - 10пА (несравнимо малое падение на R12)

  • Vout - 30мВ от земли и питания

  • Zin - 0.1ГОм (несравнимо малый делитель с R13)

  • Zol 150Ом

  • Gol 120дБ

Теперь предстоит понять какой коэффициент усиления нам потребуется. Для этого посчитаем какое напряжение при 100°С мы получим на выходе дифференциального усилителя:

Vu2out_max = 800мкА * (1385Ом - 1000Ом) * 5 =1.54В

Для получения 3В при 100°С нам потребуется усиление:

Gcl = 3 / 1.54 = 1.948

Выберем R24 = 200кОм 0.1%, тогда:

R23 = 200кОм * (1.948 - 1) = 189.6кОм

В этом случае можно использовать два резистора 2.61кОм и 187кОм 0.1%.

Выходной импеданс усилителя будет:

Zout = Zol / (1+Gol * R23 / (R24 + R23)) = 0.3мОм

Выходной импеданс создаст несравнимо малую ошибку с 10кОм на входе АЦП. Для спокойствия также рассчитаем падение токов Ib + Ibos на резисторе в обратной связи:

200кОм * (0.1нА + 0.5нА) = 0.12мВ, что составляет 0.008% от 1.54В, думаю можно пренебречь.

Добавим еще один фильтр для ограничения полосы пропускания, для этого достаточно будет установить конденсатор параллельно с R23, R25. Выберем номинал равным 0.1нФ, частота среза будет составлять 8.4кГц. Хочу обратить внимание, что на схеме используется другой ОУ, поскольку OPA2376 нет в моей библиотеке.

4. Моделирование и оптимизация

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

Анализ по переменному напряжению

Проведем AC - анализ, для этого используем источник напряжения V1 вместо R16. Подключим оба входа дифференциального усилителя к источнику. Взглянем на график Боде выходного каскада.

Схема усилителей с двуполярным напряжением
Схема усилителей с двуполярным напряжением
Результаты анализа по переменному напряжению
Результаты анализа по переменному напряжению

Полоса пропускания схемы - 275кГц, видно, что запас по фазе маловат (около 20 градусов), т.е схема может быть не устойчива. Для увеличения запаса увеличим емкость на выходе дифференциального усилителя до 6.8нФ, результат следующий:

Результаты анализа по переменному напряжению, итерация 2
Результаты анализа по переменному напряжению, итерация 2

Отлично! Теперь запас 60 градусов, достаточно для устойчивости, тем более, если учитывать, что максимальная частота сигнала на входе 100Гц, дополнительно зададим требование для частоты семплирования АЦП не более 100к Выб/Cек.

Анализ переходных процессов

Последним шагом протестируем схему, для этого временно уберем источник тока, идущий к термодатчику, заменим термодатчик на источник напряжения, который имитирует синусоидальное изменение сопротивления от 1кОм до 1385Ом с частотой 100Гц. Схема будет выглядеть следующим образом:

Схема для анализа переходных процессов
Схема для анализа переходных процессов
  • Зеленая трасса - напряжение на отрицательном входе U2;

  • Cиняя трасса - напряжение на положительном входе U2;

  • Красная трасса - напряжение на выходе U1.

Переходной процесс при изменении температуры
Переходной процесс при изменении температуры

Последним шагом добавляем конденсатор от помех на положительный вход дифференциального усилителя, на ФЧХ он не скажется, однако спасет от резких выбросов, связанных с индуктивностью кабеля. Также лучшим решением будет добавить подстройку тока. Используем резистор номиналом 2430 Ом и подстрочный резистор номиналом 150 Ом.

5. Анализ погрешностей

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

Пересмотр схемы

Неплохим выходом является использовать готовый источник тока, нам важно, чтобы в нем было два идентичных канала, я нашел REF200. К сожалению, два канала рассчитаны на 100мкА, в этом случае придется пересчитать выходной усилитель. Требуемый коэффициент усиления будет:

Vu2out_max = 100мкА * (1385Ом - 1000Ом) * 5 =0.1925В

Gcl = 3 / 0.1925 = 15.584

В выходном каскаде заменим R24 на 20кОм, R23 тогда будет:

R23 = 20кОм * (15.584 - 1) = 291.68кОм

Схема устройства с REF200
Схема устройства с REF200

Казалось бы, все хорошо, но теперь натыкаемся на такую фразу в даташите REF200:

High accuracy: 100 µA ±0.5%

Для нас 0.5% не считается высокой точностью. Также хочется обратить внимание, что R24 даже при точности 0.1% будет давать ошибку 0.1%*Gcl = 1.5%. К сожалению погрешности не обманешь....

Попробуем самостоятельно построить источник тока с требуемой точностью. У нас остался один свободный операционный усилитель (у OPA2376 два усилителя в корпусе), давайте его применим. Также понадобится опорный источник напряжения, хорошо подойдет AD780BR с напряжением 2.5В и погрешностью 0.08%. Подключение возьмем из документации:

Подключение AD780BR
Подключение AD780BR

Для формирования 800мкА номинал токозадающих резисторов должен быть:

Rcs = (3.3В - 2.5В) / 800 мкА = 1кОм 0.1%

Схема будет выглядеть так:

Схема с источником тока на операционном усилителе
Схема с источником тока на операционном усилителе

И все же два транзистора остались, а это очередной источник погрешности. Помимо прочего, в условии утверждают, что напряжение 3.3В идеально стабильно. В жизни так, конечно, не бывает, и это повлияет на точность. Последний ход, который можно сделать это заменить OPA2376 на OPA4376 (4 усилителя в корпусе). На базе еще одного усилителя создадим отдельный источник тока в левом плече. В этом случае ток будет зависеть только от сопротивления резисторов и напряжения опорного источника (который у нас общий для двух усилителей).

Итоговая схема устройства
Итоговая схема устройства

6. Заключение

Мы рассмотрели несколько вариантов схемы со своими плюсами и минусами и выбрали наиболее подходящий вариант. В любом случае схеме понадобится регулировка, в этом помогут резисторы R2, R10. Кстати, все неуказанные точности элементов считаем некритичными и равными 5%.

Стоимость элементной базы без учета датчика варьируется в диапазоне 7-8тыс. рублей. Еще около 500-1000 будет стоить двухслойная печатная плата при хороших партиях.

Tags:
Hubs:
+154
Comments155

Articles