Простой способ измерения температуры с использованием одного цифрового вывода GPIO

Добавлено 1 октября 2019 в 01:03

Вопрос: Как я могу выполнить аналоговое измерение, если у меня остался только один цифровой GPIO вывод на FPGA/микроконтроллере в моей системе?

Простой способ измерения температуры с использованием одного цифрового вывода GPIO
Простой способ измерения температуры с использованием одного цифрового вывода GPIO

Ответ: Вместо аналого-цифрового преобразователя может использоваться преобразователь напряжение→частота.

Кратко

По мере того, как потребность в датчиках становится все более распространенной в современных приложениях, ориентированных на исправность машин, и других решения интернета вещей (IoT), возникает необходимость в более простых интерфейсах с меньшим количеством входов/выходов и меньшими размерами устройств. Плотность устройств, подключенных к одному микропроцессору или FPGA, продолжает увеличиваться, в то время как размеры устройства (и, как следствие, количество выводов ввода/вывода) могут ограничиваться. В идеальном мире у всех приложений имеется ASIC (application-specific integrated circuit, интегральная микросхема специального назначения), обеспечивающая небольшое интегрированное решение. Однако разработка ASIC отнимает много времени, стоит дорого и не обеспечивает гибкости, которая может понадобиться для других использований. В результате для своевременной и экономичной разработки продукта всё больше и больше приложений используют микропроцессоры или FPGA небольшого форм-фактора. В данной статье мы рассмотрим преобразователь температура→частота, который может обеспечить точные результаты измерения температуры, используя только один вывод GPIO. Также будет продемонстрировано, как использование преобразователя напряжение→частота можно адаптировать к другим различным приложениям с датчиками.

Мотивация

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

Какое альтернативное решение измерения можно использовать для уменьшения количества компонентов и сложности, связанных с цепочкой аналого-цифрового преобразования сигналов, но при этом измерять аналоговое напряжение? Решением является преобразователь напряжения в частоту, такой как LTC6990, в режиме генератора, управляемый напряжением, (ГУН, VCO), который можно использовать для измерения аналогового напряжения без АЦП. В этом примере AD8494, прецизионный усилитель термопары, используется как датчик температуры окружающей среды, выходное напряжение которого служит входным сигналом для LTC6990, что приводит к цепочке преобразования сигнала температуры в частоту.

Рисунок 1 Простой преобразователь температура-частота
Рисунок 1 – Простой преобразователь температура→частота

Как преобразовать входную температуру в выходную частоту?

Сегодня многие современные электронные приборы требуют встроенной системы контроля температуры. Метод преобразования аналоговых сигналов в сигналы с широтно-импульсной модуляцией или цифровые сигналы хорошо документирован. Однако, если для решения измерения потребуется АЦП, существуют недостатки, связанные с затратами, точностью и скоростью. Как правило, чем точнее измерение, тем дороже решение. Обсуждаемая нами схема обеспечивает недорогое, универсальное и легко интегрируемое решение, точность которого может варьироваться в зависимости от потребностей системы измерения температуры.

AD8494 является прецизионным усилителем термопары, но его также можно использовать в качестве датчика температуры окружающей среды, замыкая его входы на землю. Выходные данные затем определяются как:

\[V_{вых} = T_{окр} \cdot \frac{5 мВ}{^{\circ}\text{C}} \qquad (1)\]

В этой цепи, где используется однополярный источник питания, –VS = земля (0 В), к выводу REF AD8494 должно быть приложено напряжение смещения, чтобы сместить выходное напряжение выше уровня земли, даже если температура окружающей среды отрицательная.

Выходное напряжение датчика температуры Vвых определяется как:

\[V_{вых} = T_{окр} \cdot \frac{5 мВ}{^{\circ}\text{C}} + V_{смещ} \qquad (2)\]

В режиме ГУН (VCO) выходная частота LTC6990 определяется как:

\[F_{вых} = { 1 МГц - \left( {R_{уст} \over R_{ГУН} + R_{уст}} \cdot V_{упр} \right) \cdot \frac{МГц}{В} \over N_{дел} } \qquad (3)\]

Поскольку выходное напряжение AD8494 соответствует Vупр для LTC6990, Vупр в уравнении 2 можно заменить на формулу 1, а настройка Rуст = RГУН дает следующее:

\[F_{вых} = { 1 МГц - \left[ \frac{1}{2} \cdot \left( T_{окр} \cdot \frac{5 мВ}{^{\circ}\text{C}} +V_{смещ} \right) \right] \cdot \frac{МГц}{В} \over N_{дел} } \qquad (4)\]

Отсюда теперь можно найти Tокр. Единицы напряжения сокращаются, что приводит к формуле 5:

\[T_{окр} = { -2 \left( (F_{вых} \cdot N_{дел}) - 1 МГц \right) - ( \text{Смещение} \cdot 1 МГц) \over 0,005 МГц } \; ^{\circ}\text{C} \qquad (5)\]

Хорошо, у меня есть выходная частота. Чем она полезна?

Прелесть частотного выхода в том, что для измерения показаний датчика вы можете использовать один цифровой вывод GPIO. Если используется схема синхронного счетчика (как на рисунке 2), то на входе CLK_IN всегда будет отслеживаться нарастающий фронт тактового сигнала. Если в качестве входного тактового сигнала используется Fвых LTC6990, то счетчик будет инкрементировать значение при каждом обнаружении нарастающего фронта на Fвых, представляя, таким образом, счетчик периодов. Если интервал времени между каждым измерением является постоянным, то число периодов в данном интервале времени может быть подсчитано, и частота может быть определена либо с помощью либо математики с плавающей запятой, либо таблицы поиска. Разделив время подсчета Tподсчет на количество подсчитанных периодов, мы получаем период Fвых. Инвертировав эту связь, мы получаем формулу 6.

Рисунок 2 4-разрядный синхронный счетчик, использующий выходной сигнал LTC6990 в качестве входа тактовой частоты.
Рисунок 2 – 4-разрядный синхронный счетчик, использующий выходной сигнал LTC6990 в качестве входа тактовой частоты.

\[F_{вых} = \frac{\text{Количество периодов}}{T_{подсчет}}, \qquad F_{вых} \geq 2 \cdot \left( \frac{1}{T_{подсчет}} \right) \qquad (6) \]

В примере кода Verilog показана функция, которую можно использовать для подсчета количества периодов, используя один вход GPIO на FPGA. Чем больше длительность интервала сбора данных, тем точнее будет измерение. В примере 16-разрядный счетчик используется для обеспечения дополнительного разрешения. Он также предполагает, что логика, управляющая временем подсчета измерений, выполняется на более высоком уровне в архитектуре.

module tempToFreqCounter (Clk_master, Clk_In, rst, PeriodCount)

input Clk_master, Clk_In, rst;
output PeriodCount;
reg[15:0] PeriodCount;

always @(posedge Clk_master)
begin

    always @(posedge Clk_In)
    begin
        PeriodCount = PeriodCount +1;
    end
    
    always @(posedge rst)
    begin
        PeriodCount = 16'b0;
    end
    
end

endmodule
Рисунок 3 Передаточная функция преобразователя температура-частота.
Рисунок 3 – Передаточная функция преобразователя температура→частота.

Заключение

В данной статье обсуждается новый тип преобразователя температуры в частоту. Он обеспечивает точный и недорогой метод измерения температуры. Если температура превышает промышленный диапазон от –40°C до + 125°C, на входах датчика может быть установлена термопара. В заключение, на следующем графике показана погрешность измерения системы. График демонстрирует линейную зависимость между температурой окружающей среды и выходной частотой, а также точность системы. Хотя это решение не может обеспечить очень точное разрешение измерений температуры, но для приложений, где допустима погрешность примерно ± 2°C, оно предоставляет дешевый и простой интерфейс для измерения температуры. Кроме того, концепция использования преобразователя напряжения в частоту может быть адаптирована для измерения выходных сигналов датчиков других типов без необходимости использования АЦП.

Рисунок 4 Погрешность измерения температуры.
Рисунок 4 – Погрешность измерения температуры.

Теги

FPGAMCUДатчикДатчик температурыИзмерение температурыМикроконтроллер

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.