Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp32 [2020/05/21 13:09] – labuser29 | products:laboratory_iot:exp32 [2021/05/23 13:59] (текущий) – [Эксперимент 32. Преобразование сигнала терморезистора] labuser29 | ||
|---|---|---|---|
| Строка 11: | Строка 11: | ||
| Формула для расчета напряжения на выходе делителя: | Формула для расчета напряжения на выходе делителя: | ||
| {{ : | {{ : | ||
| - | | + | |
| + | |||
| + | {{ : | ||
| + | |||
| + | Теперь разберемся что есть что. Напряжение на выходе делителя мы получаем от АЦП и записываем его, например, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Теперь вычислить сопротивление 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) | ||
| + | </ | ||
| + | |||
| + | Теперь программа в терминал печатает температуру в градусах по Цельсию. Ты можешь измерить температуру окружающей среды, собственного тела, воды и даже почвы в цветочном горшке. Терморезистор в водонепроницаемом нержавеющем корпусе все это легко переживет. | ||