Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
products:laboratory_iot:exp32 [2020/05/21 12:57] – создано labuser29 | products:laboratory_iot:exp32 [2021/05/23 13:59] (текущий) – [Эксперимент 32. Преобразование сигнала терморезистора] labuser29 | ||
---|---|---|---|
Строка 5: | Строка 5: | ||
Для начала давайте еще раз определимся что это за цифры мы получили. Аналого- цифровой преобразователь преобразует напряжение с цифровую форму. Получается, | Для начала давайте еще раз определимся что это за цифры мы получили. Аналого- цифровой преобразователь преобразует напряжение с цифровую форму. Получается, | ||
- | Как мы помним у терморезистора изменяется сопротивление в зависимости от температуры. Получается, | + | Как мы помним у терморезистора изменяется сопротивление в зависимости от температуры. Получается, |
+ | |||
+ | {{ : | ||
+ | |||
+ | Формула для расчета напряжения на выходе делителя: | ||
+ | {{ : | ||
+ | | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Теперь разберемся что есть что. Напряжение на выходе делителя мы получаем от АЦП и записываем его, например, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Теперь вычислить сопротивление R2 не составит труда так как в правой части формулы все операнды известны. Сопротивление R1 это 10 килоом у нас, '' | ||
+ | |||
+ | Таким образом сопротивление терморезистора мы смогли вычислить. Но нам нужна температура. Температура зависит от этого сопротивления, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Это достаточно сложное уравнение, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Для этой зависимости нам надо знать To (этот параметр для комнатной температуры (25 °C) = 298.15 K), B (для нашего терморезистора равен 3950 - коэффициент, | ||
+ | |||
+ | ==== Схема эксперимента ==== | ||
+ | Оставляем схему собранную на прошлом эксперименте. | ||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | ==== Программный код эксперимента ==== | ||
+ | <file python Exp32.py[enable_line_numbers=" | ||
+ | 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)/ | ||
+ | |||
+ | temp = 1 / (math.log(R2 / Rtnom) / Bcoef + 1/(25+T0)) -T0 | ||
+ | |||
+ | print(temp) | ||
+ | time.sleep(1) | ||
+ | </ | ||
+ | |||
+ | Теперь программа в терминал печатает температуру в градусах по Цельсию. Ты можешь измерить температуру окружающей среды, собственного тела, воды и даже почвы в цветочном горшке. Терморезистор в водонепроницаемом нержавеющем корпусе все это легко переживет. |