Снятие показаний с датчика тока 4..20 мА на АЦП ESP32

В предыдущих статьях («Сравнение АЦП (ADC) ADS1115 и ESP32«, «Конвертер тока 4..20 mA в напряжение XY-ITOV«) я подробно описал работу с АЦП ESP32 для замеров с датчиков тока 4..20 мА. В схемотехнике использовался простой вариант подключения сопротивления на вход АЦП ESP32 для замера величины падения напряжения.

Улучшим схему, добавив операционный усилитель перед входом АЦП. У операционного усилителя (ОУ) большое сопротивление, что позволит снизить влияние входного сопротивения АЦП на показания. Ну и дополнительно ОУ защитит вход АЦП от перегрузки по напряжению. Схема a) из учебника. 🙂

Если посмотреть техническую документацию на ESP32, то в ней указано, что при напряжении VDD_A = 3.3V:

  • 0dB ослабление (ADC_ATTEN_DB_0) дает диапазон до 800 mV.
  • 2.5dB ослабление (ADC_ATTEN_DB_2_5) дает диапазон до 1100 mV.
  • 6dB ослабление (ADC_ATTEN_DB_6) дает диапазон до 1350 mV.
  • 11dB ослабление (ADC_ATTEN_DB_11) дает диапазон до 2600 mV.

Из-за характеристики АЦП наиболее точные результаты измерений получаются в более узком диапазоне, чем заявлено в документации. На начальном и конечном участке более или менее линейная характеристика АЦП изгибается и становится более пологой, поэтому измерения очень неточные. В документации указаны рекомендуемые диапазоны измерений:

+----------+------------+--------------------------+
|   SoC    | attenuation|   suggested range (mV)   |
+==========+============+==========================+
|          |  0         |     100 ~ 950            |
|          +------------+--------------------------+
|          |  2.5       |     100 ~ 1250           |
|   ESP32  +------------+--------------------------+
|          |  6         |     150 ~ 1750           |
|          +------------+--------------------------+
|          |  11        |     150 ~ 2450           |
+----------+------------+--------------------------+
|          |  0         |     100 ~ 800            |
|          +------------+--------------------------+
|          |  2.5       |     100 ~ 1100           |
| ESP32-S2 +------------+--------------------------+
|          |  6         |     150 ~ 1350           |
|          +------------+--------------------------+
|          |  11        |     150 ~ 2600           |
+----------+------------+--------------------------+

Рассчитаем операционный усилитель, который при максимальном токе на входе 20 mA даст на выходе напряжение меньше 800 mV. Я буду использовать широко распространенный операционный усилитель LM358D. На Aliexpress этот операционный усилитель идет практически наразвес. 🙂

LM358D для снятия данных с датчиков тока 4..20 мА

R2 возьму 10 кОм. На входе перед операционником для конвертации тока в напряжение поставлю сопротивление 15 Ом. Т.е. при токе в 20 мА на входе будет напряжение V = 0,02A * 15 = 0,3 В

По формуле получаем, что R1 = (Vo/V — 1) * R2 = (0,8В / 0,3В — 1) * 10 000 = 16666,67. Ближайший доступный резистор — 16 кОм. Vo = 0,3 * (1 + 16000/10000) = 0,78 В или 780 mV. То, что напряжение на выходе получилось несколько меньше максимального — это хорошо, поскольку у АЦП ESP32 на концах характеристика становится нелинейной, что ухудшает точность измерений. Результаты симуляции.

Моделирование работы преобразователя тока в напряжение для АЦП ESP32

Для АЦП микроконтроллера STM32 можно взять R1 = 9 кОм, а R2 = 1 кОм, поскольку максимальное напряжение на входе АЦП 3.3 В.

Для защиты операционного усилителя от перегрузки можно использовать специализированный чип MAX14626 (4–20 mA Current Loop Protector). Чип позволяет ограничить максимальный ток 30 mA. Кроме того защищает от неправильного подключения («переплюсовки»).

Пример схемы двухканального входа 4..20 mA.

Двухканальный входной каскад датчиков тока 4..20 mA

Площадки R9/R10 для удобства отладки, чтобы не впаивать на этом этапе относительно дорогой чип MAX14626.

Полезные ссылки

Spread the love
Запись опубликована в рубрике IT рецепты с метками , . Добавьте в закладки постоянную ссылку.

Обсуждение закрыто.