Эксперимент 32. Преобразование сигнала терморезистора

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

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

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

Формула для расчета напряжения на выходе делителя: Согласно (1) напряжение на выходе делителя равно напряжению на входе умноженному на R1 и деленному на сумму R1 и R2. Но нас интересует не напряжение н выходе делителя. Мы хотим найти сопротивление термиорезистора. Он включен в нижнее плечо делителя, которое обозначено как R2. Следовательно нам нужно выразить R2 из формулы.

Теперь разберемся что есть что. Напряжение на выходе делителя мы получаем от АЦП и записываем его, например, в переменную value. А напряжение на входе делителя, как видно из схемы, равно напряжению питания. Если напряжение питания подать на вход нашего АЦП результатом преобразования станет число 1023 - максимально возможное. Зная подставим в формулу (2) наши данные.

Теперь вычислить сопротивление R2 не составит труда так как в правой части формулы все операнды известны. Сопротивление R1 это 10 килоом у нас, value у нас получается в результате преобразования, а 1023 вообще константа.

Таким образом сопротивление терморезистора мы смогли вычислить. Но нам нужна температура. Температура зависит от этого сопротивления, значит зная сопротивление мы сможем вычислить температуру. Для этого можно использовать уравнение Стейнхарта-Харта, которое позволит вычислить температуру достаточно точно.

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

Для этой зависимости нам надо знать To (этот параметр для комнатной температуры (25 °C) = 298.15 K), B (для нашего терморезистора равен 3950 - коэффициент, который зависит от используемого термистора), и Ro (сопротивление при комнатной температуре. В данном случае он равен 10 КОм). Подставляем R2 (измеренное сопротивление) и получаем значение T (температура по Кельвину), которую преобразовываем в °C. Чтобы получить температуру по Цельсию, нужно отнять от полученного результата температуру абсолютного нуля (273.15).

Схема эксперимента

Оставляем схему собранную на прошлом эксперименте. Рисунок 1. Электрическая принципиальная схема эксперимента

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp32.py
  1. from machine import Pin
  2. import time
  3. import math
  4. _init()
  5.  
  6. Bcoef = 3950
  7. R1 = 10000
  8. Rtnom = 10000
  9. T0 = 273.15
  10.  
  11. adc = machine.ADC(0)
  12.  
  13. while True:
  14. value = adc.read()
  15.  
  16. R2 = (-R1 * value)/(value-1023)
  17.  
  18. temp = 1 / (math.log(R2 / Rtnom) / Bcoef + 1/(25+T0)) -T0
  19.  
  20. print(temp)
  21. time.sleep(1)

Теперь программа в терминал печатает температуру в градусах по Цельсию. Ты можешь измерить температуру окружающей среды, собственного тела, воды и даже почвы в цветочном горшке. Терморезистор в водонепроницаемом нержавеющем корпусе все это легко переживет.