Показания резистивного датчика АЦП

Я должен сделать преобразование АЦП с микроконтроллером ATXmega в приложении качества воздуха.

Вход представляет собой делитель напряжения между источником опорного напряжения. Чувствительный резистор варьируется в зависимости от концентрации газа. Я читаю напряжение между нагрузочным резистором и землей. Поскольку преобразование не является высокоточным (12 бит), мы не хотим терять ни одного бита. Чувствительный резистор может достигать максимального значения 60 кОм: в этом случае V на нагрузочном резисторе будет минимальным.

Решение, которое мы нашли, состоит в том, чтобы вычесть это минимальное напряжение из Vin с помощью операционного усилителя.

А теперь вопросы: Делитель напряжения взаимодействует с резисторами схемы дифф ОУ ( https://en.wikipedia.org/wiki/Differential_amplifier )?

Будет ли полезно разместить буфер единичного усиления между Vref_min и отрицательным входным выводом операционного усилителя?

Достижима ли эта идея с помощью обычного малошумящего операционного усилителя?

http://it.farnell.com/texas-instruments/tl072ip/ic-op-amp-jfet-pdip8/dp/1459704 ?

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Вот схема. Я должен поставить буфер единичного усиления вместо "???" узел?

Цепь в порядке?

Можете ли вы включить принципиальную схему (отредактируйте свой вопрос, затем нажмите Ctrl-M и нарисуйте ее) и ссылку на техническое описание датчика?
Добавив усилитель с единичным коэффициентом усиления (буфером), вы решите проблему сопротивления источника, особенно если сопротивление меняется. tl072 — хороший операционный усилитель общего назначения, но вы можете рассмотреть что-то с более низким уровнем шума, например LT1012 или аналогичный.
С вашим резистором на землю, какое минимальное напряжение вы получаете (датчик при 60 кОм) и какое максимальное напряжение вы ожидаете (датчик при минимальном сопротивлении)?
@Andyaka, это зависит от Vref и Rload. При Vref 2,048 В и Rload 10 кОм напряжение на Rl изменяется от 0,293 В до 1,575. Если я вычту 0,293 В с дифференциатором без усиления, как на схеме, диапазон будет 0–1,282 В, и я смогу использовать все 12 бит преобразования АЦП.

Ответы (3)

Если у вас есть опорное напряжение (скажем) 3 В, диапазон, который увидит ваш вход, будет: -

  • 3 В * 10 кОм/13 кОм = 2,307 В (датчик на 3 кОм)
  • 3 В * 10 кОм/70 кОм = 0,428 В (датчик на 60 кОм)

Если вы использовали ток возбуждения 50 мкА и заземленный датчик, диапазон, который увидит ваш вход, будет: -

  • 50е-6*3к= 0,15В (датчик на 3кОм)
  • 50е-6*60к= 3,0В (датчик на 60кОм)

При токовом возбуждении процент используемого опорного диапазона 3 В составляет 95% . При возбуждении напряжением и резистором вы получаете только 63% диапазона.

Если ваше опорное напряжение ниже или выше, приведенные выше утверждения о «диапазоне» остаются верными.

введите описание изображения здесь

Вот пример. Вход АЦП напрямую подключен к датчику. На датчик подается 50 мкА через транзистор PNP. 50 мкА измеряется на «R» и сравнивается с «V» операционным усилителем. Операционный усилитель поддерживает ток через R на уровне, который генерирует напряжение «V» на нем. Значения могут быть R=10k и V=0,5V или R=20k и V=1V. Следует выбрать операционный усилитель с производительностью ввода/вывода, близкой к характеристикам ввода/вывода на любой из шин, например, AD8605 (много раз использовавшийся мной в этой же конфигурации для возбуждения тензометрическим датчиком).

Вот краткое моделирование постоянного тока для нагрузок 60k и 3k:

введите описание изображения здесь

Используемый транзистор BC547C или BC847C для тех, у кого хорошее зрение.

Обратите внимание, что из-за малых токов базы в транзисторе ток составляет не 50 мкА, а 49,846 мкА при нагрузке 60 кОм и 49,849 мкА при нагрузке 3 кОм. Обратите также внимание на напряжение на датчике — 2,991 В при нагрузке 60 кОм и 149,5 мВ при нагрузке 3 кОм.

Проблема в том, что внутренний опорный сигнал АЦП равен 1 В, поэтому мне нужно сконцентрировать выход операционного усилителя в диапазоне [0–1 В] или [0–2 В] (последний с внутренним коэффициентом усиления 0,5). У меня нет опыта с текущим возбуждением..
@Mark - Для возбуждения тока подумайте об источнике постоянного тока, который создает низкий уровень тока в резисторе датчика. Как указал Энди, другая сторона резистора датчика заземлена. Эта схема позволяет полностью использовать диапазон аналогово-цифрового входа, поскольку ток возбуждения можно настроить так, чтобы он создавал максимальный аналого-цифровой вход, когда резистор датчика имеет максимальное значение. Источник тока должен быть смещен от некоторой шины напряжения, которая выше диапазона аналогово-цифрового входа, чтобы источник тока имел достаточную согласованность, чтобы справляться с изменениями нагрузки на него.
@MichaelKaras Я не мог бы выразиться лучше.
Звучит отлично. Я прошу вас еще один шаг. В вашей схеме я поставил резистор R 20 кОм и V, равный 1. Когда Rsense имеет максимальное значение val = 60 кОм, общее сопротивление составляет 80 кОм, поэтому ток составляет 12,5 мА. я не вижу роли операционного усилителя в этой схеме. Между двумя контактами R должна быть разница напряжений, поэтому PNO всегда возбужден. Или нет? Спасибо ребята!
@ Марк, ты, должно быть, неправильно подключил это. 1В необходимо соотнести с положительной шиной питания (5В). Потребляемый ток должен составлять 50 микроампер, а не миллиампер. Операционный усилитель необходим для стабилизации напряжения на резисторе точно до 1 В, а 1 В, деленный на 20 кОм, составляет 50 микроампер. Вы симулируете это?
Вы правы, я сделал неправильный расчет. Это кажется отличным решением. В этом случае при токе 50 мкА и резисторе 60 кОм я получу 3 В на входе АЦП. А при Rsensse=3k Vin=0,15В. Моя цель — получить диапазон Vin как можно ближе к [0-1V]. Какие-нибудь советы?
@Mark - используйте меньшее напряжение (скажем, 0,3333 В) или увеличьте резистор до 60 кОм - при напряжении 1 В он будет генерировать 16,667 мкА через 60 кОм, что даст вам 1 В !!! Если у вас есть коэффициент усиления 0,5, я бы подумал об использовании этого и работал на 33,333 мкА (эмиттерный резистор 30 кОм). См. также симуляцию, которую я прикрепил в конце своего ответа (50 мкА).
Ты мой спаситель (не знаю, правильно ли это сказать). Как видите, мой английский очень плохой. Спасибо!
Извините, последний вопрос: как я могу получить значения 1 В и 5 В? С опорным напряжением? С зенером? Наконец, возможно ли сместить диапазон Vin между [0-1] В, а не между [0,15-1] В?
Ваш АЦП на ATMega должен выдавать 5 В. Если это 3V3, дайте мне знать. Для 1 В вы должны использовать приличный «шунт опорного напряжения», такой как REF1112 - это 1,25 В, но это не беспокоит, потому что вы вернете ток к тому, что вам нужно, увеличив резистор эмиттера на 25%. Положительный конец (называемый Vo) REF1112 подключается к 5 В, а отрицательный конец можно подключить через резистор 1 кОм к земле. Соединение резистора 1k и отрицательного конца REF1110 питает операционный усилитель.
Что касается смещения напряжения, я бы не стал этого делать. Вы обнаружите, что если вы усредните несколько показаний внутри атмеги, вы получите большое разрешение — это называется «дизеринг» и может увеличить разрешение на пару бит. Об этом есть статьи в Интернете.
@Andyaka - Он не использует ATmega, он использует AT x mega. Внутреннее значение vRef для них действительно равно 1,0 В, а максимальное значение vRef, поддерживаемое деталями, на самом деле составляет Vcc-0,6 В, что составляет 2,7 В (Vcc Max составляет 3,3 В — они не поддерживают работу при напряжении 5 В).
@ConnorWolf - я думаю, что оператор должен это понять - я дал пару комментариев выше, что если бы это было 3V3, он должен сообщить мне, но основной принцип остается прежним - схема Ilimit будет работать от 3V3, и он может управлять это с 16,7 мкА.
Микросхема — это ATXMega256A3BU, а напряжение Vcc — 3,3 В. Я не добавлял никаких комментариев, потому что принцип работы тот же. Спасибо!
Во-первых, я не хочу переносить этот разговор в чат, потому что думаю, что это будет полезно для других пользователей. @Andyaka еще одна вещь, мой коллега сказал мне, что 3,3 В Vcc не очень точно. Это мешает прецизионной цепи тока? Я думаю да. Решения?
@Mark Нет, это вообще не зависит от точности 3V3. Так что, если бы это было 3,1 или 3,5 В, это не имело бы значения. REF1112 определяет точное значение 1,25 В, а операционный усилитель в замкнутом контуре выдает 1,25 В на эмиттерном резисторе. Однако шумное питание может вызвать проблемы, поэтому развязывайте REF1112 с помощью конденсатора 100 нФ. Однако, даже если станет шумно, средний ток останется стабильным, и, как я упоминал ранее, вы можете отфильтровать шум в коде. Вы также можете добавить 100 нФ или 1 мкФ + на датчик.
@Andyaka, можешь объяснить мне роль транзистора? Нельзя ли добиться того же эффекта с опорным напряжением и резистором? Спасибо!
Коллектор транзистора является реальным источником тока, и ток его коллектора определяется напряжением на эмиттерном резисторе. Это напряжение эмиттера из-за резистора обратной связи операционного усилителя поддерживается ровно на 1 В ниже положительной шины 5 В, и это означает, что ток в эмиттере постоянный. Я не понимаю вашу идею об опорном напряжении и резисторе - поможет новый вопрос. Не помешает предложить что-то, что может сработать.
А транзистор не усиливает ток?
@Марк, я не понимаю твоего вопроса. Конечно, транзистор усиливает ток, потому что это то, что делают биполярные транзисторы — коэффициент усиления биполярного транзистора равен Ic/Ib.
@Andyaka Благодарю вас за терпение. И другой вопрос: не лучше ли связать отрицательную обратную связь на Ic, а не на Ie, учитывая падение напряжения на биполярном транзисторе?
Нет, это не сработает — отрицательная обратная связь «измеряет» напряжение на эмиттерном резисторе. Операционный усилитель поддерживает напряжение на эмиттерном резисторе на уровне 1 В. Он делает это с помощью транзистора, и оказывается, что ток эмиттера практически такой же, как ток коллектора.
@Andyaka Хорошо, теперь я убежден. В понедельник буду реализовывать свою схему на стрипборде. Последнее сомнение вызывает шум. Столь малый ток может быть нарушен окружающим шумом, а также самой схемой платы.
Если вы видите некоторый шум, который влияет на результаты, сначала убедитесь, что все, что вы используете для генерации 1 В между Vin + и положительной шиной питания (5 В?), имеет приличный конденсатор, например, 100 нФ. Единственным другим источником шума, о котором стоит упомянуть, является операционный усилитель. Если вы можете подключить конденсатор от коллектора к земле, шум будет очень низким.

Хотя это не относится напрямую к вашему вопросу, оно описывает проблему, с которой вы столкнетесь в ближайшем будущем.

По сути, АЦП ATxmega практически невозможно использовать при подключении к внутреннему источнику опорного напряжения 1,0 В xmega. Вы получаете ~ 16 единиц шума независимо от того, что вы делаете.

Общее мнение заключается в том, что если вы хотите использовать внутренний АЦП ADxmega, вам действительно нужно использовать внешний эталон. В идеале вы могли бы использовать весь диапазон 0–3,3 В, но АЦП поддерживает опорные значения только до Vcc — 0,6 В, так что 2,5 В, вероятно, лучшая идея.

Недавно я работал над проектом, в котором было несколько пользовательских интерфейсов, подключенных к АЦП xmega. У меня действительно были проблемы с шумом. Я смог решить их с помощью массивной передискретизации (в 4096 раз!), но это все равно дало мне только 10 бит полезного разрешения.
Итак, мой макет был действительно, действительно неидеален (материал пользовательского интерфейса был добавлен после того, как я отправил платы на сборку, он был подвешен к тому, что должно было быть просто портом отладки, и везде были провода и еще много чего).

Предположительно , Atmel «исправил» проблемы с АЦП на частях с суффиксом «u» (например, ATxmega32A4U и ATxmega32A4), но у меня не было изменений для работы с частями «U».

Большое спасибо, я читал на avrfreaks об этих проблемах с внутренней ссылкой 1V. Моя идея состоит в том, чтобы протестировать его и выяснить, имеет ли ATXMega256A3BU фиксированный внутренний опорный сигнал АЦП. Я думаю, что если схема согласования и драйвер хорошо спроектированы, можно будет во второй раз вставить внешний источник, заменив резисторы и несколько строк кода. Вы согласны с этим планом? Вы испытали показания напряжения АЦП на резисторе? Вы использовали ток возбуждения или делитель напряжения?
@Mark - я просто снимал показания АЦП прямого делителя напряжения, несимметричного режима, без внешнего опорного сигнала (у меня не было контактов!), Поэтому я не могу комментировать жизнеспособность других вариантов. из первых рук.
Если бы я был в вашей ситуации, я бы добавил посадочные места на печатной плате для добавления недорогого источника опорного напряжения 2,5 В на печатной плате и имел бы несколько дополнительных посадочных мест резистора 0 Ом, чтобы вы могли установить его и подключить, если ваш план преобразования сигнала не подходит. вне. Стоит отметить, что фильтрация на аналоговом входе, вероятно , мало поможет, так как шум является внутренним для АЦП . Ваши варианты действительно просто: 1. Используйте внешний vRef, 2. Используйте внутренний делитель напряжения с Vcc и 3. Используйте внутренний vRef и уничтожьте его.
Есть очень, очень дешевые источники опорного напряжения. LM336Z25 стоит 0,51 доллара за штуку на digikey. Это, резистор и колпачок - это все, что вам нужно.

Да, вы можете буферизовать входы дифференциального усилителя, и для этого могут быть причины. Однако инструментальный усилитель, такой как AD620 , уже предварительно буферизован и имеет легко регулируемое усиление. Если вам нужна односторонняя функциональность Rail-to-Rail (один блок питания), есть AD623.

Низкая стоимость является важной особенностью этого проекта. Очевидно, не убивая производительность. Я предложил TL072IP, потому что он имеет два канала и можно использовать один канал для буферизации отрицательного входа, а другой канал для дифференциальной операции. И это стоило 0,68 евро против 5,14 евро у AD623.