Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp32 [2020/05/21 13:14] labuser29products:laboratory_iot:exp32 [2021/05/23 13:59] (текущий) – [Эксперимент 32. Преобразование сигнала терморезистора] labuser29
Строка 15: Строка 15:
 {{ :products:esp-iot:f2.png?nolink |}} {{ :products:esp-iot:f2.png?nolink |}}
  
-Теперь разберемся что есть что. Напряжение на выходе делителя мы получаем от АЦП и записываем его, например, в переменную ''value''. А напряжение на входе делителя, как видно из схемы, равно напряжению питания. Если напряжение питания подать на вход нашешл АЦП результатом преобразования станет число 1023 - максимально возможное. Зная подставим в формулу (2) наши данные.+Теперь разберемся что есть что. Напряжение на выходе делителя мы получаем от АЦП и записываем его, например, в переменную ''value''. А напряжение на входе делителя, как видно из схемы, равно напряжению питания. Если напряжение питания подать на вход нашего АЦП результатом преобразования станет число 1023 - максимально возможное. Зная подставим в формулу (2) наши данные.
  
 {{ :products:esp-iot:f3.png?nolink |}} {{ :products:esp-iot:f3.png?nolink |}}
 +
 +Теперь вычислить сопротивление R2 не составит труда так как в правой части формулы все операнды известны. Сопротивление R1 это 10 килоом у нас, ''value'' у нас получается в результате преобразования, а 1023 вообще константа. 
 +
 +Таким образом сопротивление терморезистора мы смогли вычислить. Но нам нужна температура. Температура зависит от этого сопротивления, значит зная сопротивление мы сможем вычислить температуру. Для этого можно использовать уравнение [[https://ru.wikipedia.org/wiki/Уравнение_Стейнхарта_—_Харта|Стейнхарта-Харта]], которое позволит вычислить температуру достаточно точно.
 +
 +{{ :products:esp-iot:f4.png?nolink |}}
 +
 +Это достаточно сложное уравнение, требующее большое количество параметров, которые могут быть неизвестны для конкретного терморезистора. Поэтому обычно применяют упрощенную формулу:
 +
 +{{ :products:esp-iot:f5.png?nolink |}}
 +
 +Для этой зависимости нам надо знать To (этот параметр для комнатной температуры (25 °C) = 298.15 K), B (для нашего терморезистора равен 3950 - коэффициент, который зависит от используемого термистора), и Ro (сопротивление при комнатной температуре. В данном случае он равен 10 КОм). Подставляем R2 (измеренное сопротивление) и получаем значение T (температура по Кельвину), которую преобразовываем в °C. Чтобы получить температуру по Цельсию, нужно отнять от полученного результата температуру абсолютного нуля (273.15). 
 +
 +==== Схема эксперимента ====
 +Оставляем схему собранную на прошлом эксперименте.
 +{{ :products:esp-iot:exp13.1_sch.png?nolink |}}
 +//Рисунок 1. Электрическая принципиальная схема эксперимента//
 +
 +{{ :products:esp-iot:exp13.1_mont.png?direct&600 |}}
 +//Рисунок 2. Монтажная схема эксперимента//
 +
 +==== Программный код эксперимента ====
 +<file python Exp32.py[enable_line_numbers="2", start_line_numbers_at="1"]>
 +from machine import Pin
 +import time
 +import math
 +_init()
 +
 +Bcoef = 3950
 +R1 = 10000
 +Rtnom = 10000
 +T0 = 273.15
 +
 +adc = machine.ADC(0)
 +
 +while True:
 +    value = adc.read()
 +
 +    R2 = (-R1 * value)/(value-1023)
 +
 +    temp = 1 / (math.log(R2 / Rtnom) / Bcoef + 1/(25+T0)) -T0
 +
 +    print(temp)
 +    time.sleep(1)
 +</file>
 +
 +Теперь программа в терминал печатает температуру в градусах по Цельсию. Ты можешь измерить температуру окружающей среды, собственного тела, воды и даже почвы в цветочном горшке. Терморезистор в водонепроницаемом нержавеющем корпусе все это легко переживет.
 +