This is an old revision of the document!
Table of Contents
Зал
Общий зал - это место в доме, где можно уединиться для комфортного просмотра интересного фильма или собраться большой семьей и отпраздновать какое-нибудь торжество.
Интересная мебель, приятная цветовая палитра создают уютное жизненное пространство, а “умные вещи” помогают обустроить это пространство, сделать его удобным.
Существуют межгосударственные стандарты, регулирующие параметры микроклимата в жилых помещениях. Так, например, средняя температура в гостинной должна быть от +19°C до +21°C, а относительная влажность от 30% до 60% в зависимости от периода года. <note tip> Учитывая параметры температуры и влажности, рассчитывают "тепловой индекс" (или “индекс комфортности”), на основании которого удобнее автоматически управлять отопительными приборами, кондиционерами и вентиляторами. </note>
Климатические датчики
а) Температуры
В качестве недорогих измерителей температуры с помощью электрического тока можно использовать датчик DS18B20+ или такой же, но в герметическом корпусе.
Параметры датчика DS18B20:
- Диапазон измеряемых температур: −55…+125 °C
- Точность: ±0,5°C (в пределах −10…+85 °C)
- Время получения данных: 750 мс при 12-битном разрешении; 94 мс при 9-битном разрешении
- Напряжение питания: 3–5,5 В
- Потребляемый ток при бездействии: 750 нА
- Потребляемый ток при опросе: 1 мА
б) Влажности
Наличие и количество жидкости можно определить:
- в воздухе с помощью датчика "дождя" (или водяных брызг)
- в почве ёмкостным или резистивным датчиком
- уровень жидкости датчиком уровня жидкости.
в) Температуры и влажности
В реальных проектах управления климатом удобно использовать цифровые датчики DHT-11 или DHT-22, отличающиеся точностью, скоростью измерений и, соответственно, ценой.
С помощью библиотеки, созданной специально для датчиков DHT можно считывать сразу температуру и влажность.
| Параметры датчиков | DHT-11 | DHT-22 |
|---|---|---|
| определение влажности в диапазоне | 20-80% | 0-100% |
| определение температуры | от 0°C до +50°C | от -40°C до +125°C |
| частота опроса | 1 раз в секунду | 1 раз в 2 секунды |
Датчик температуры в TinkerCAD (TMP36)
В TinkerCAD для измерения температуры используется интегральный датчик TMP36 с аналоговым выходом. Напряжение на выходе датчиков линейно пропорционально температуре в градусах по шкале Цельсия. Дополнительной калибровки не требуется. При этом датчики обеспечивают точность измерения ±1°C при температуре +25°C и точность ±2°C в диапазоне -40°C … +125°C.
Выходной диапазон напряжения TMP36 составляет от 0.1В (-40°C) до 2.0В (150°C), но после 125°C точность измерения уменьшается. Подаваемое напряжение от 2.7В до 5.5В, потребление тока 0.05 мА.
Датчик имеет три контакта для подключения к контроллеру arduino:
- 2.7-5.5V (питание) - подключается к контакту «5V» arduino
- Земля (общий) - подключается к любому контакту «GND» arduino
- Аналоговый выход (сигнальный) - подключается к любому аналоговому пину (A0-A5) arduino.
Использовать TMP36 для измерения температуры достаточно просто, нужно соединить его левый контакт с напряжением 2.7-5.5В, а правый с землей. Тогда на среднем выводе будет присутствовать напряжение, линейно пропорциональное температуре.
Для перевода выходного напряжения в температуру используют формулу (Vout измеряется в милливольтах):
Температура в °C = [Vout - 500] / 10
Например, выходное напряжение составляет 1 В, это значит, что температура равна ((1000 мВ - 500) / 10) = 50 °C.
Схема подключения
Для тестирования датчика TMP36, подключенного к порту A0, будем использовать светодиод, анод которого соединен с цифровым портом D3. Этот порт поддерживает широтно-импульсную модуляцию (ШИМ) и может выдавать значение от 0 до 255 для плавного изменения яркости свечения светодиода.
<note important> В примере для упрощения схемы светодиод подключается без токоограничивающего резистора! Для устойчивой работы светодиода необходимо последовательно с анодом или катодом подключить резистор номиналом от 180 до 220 Ом. </note>
Программный код
Программный код, представленный на рисунке ниже, выводит во встроенный “Монитор последовательного интерфейса” два параметра: “данные температурного датчика на выводе” и данные “с аналогового вывода”.
Запустив моделирование схемы и установив регулятор датчика TMP36 в разные положения мы увидим, что:
- “данные температурного датчика на выводе” изменяются в диапазоне от -40 до +125
- данные “с аналогового вывода” изменяются в диапазоне от 20 до 358.
Так как ШИМ-порт поддерживает значения от 0 до 255, то выходные данные от датчика TMP36 надо преобразовать в диапазон от 0 до 255. Обычно в “больших” языках программирования для этого используют команду map().
<note>
map(value, fromLow, fromHigh, toLow, toHigh)
Преобразует значение переменной из одного диапазона в другой. Например, значение переменной value, равное fromLow, будет преобразовано в число toLow, а значение fromHigh - в toHigh. Все промежуточные значения value масштабируются относительного нового диапазона [toLow; toHigh].</note>
В блочном языке программирования TinkerCAD есть команда:
Если использовать эту команду для преобразования “данных с аналогового вывода”, то на выходе получаются значения:
- при диапазоне от 0 до 255 - от 4 до 89
- при диапазоне от 0 до 512 - от 10 до 179
- при диапазоне от 0 до 1024 - от 20 до 358
Опытным путем можно подобрать рабочий диапазон для команды: от -700 до 4550. В этом случае на цифровой пин (к которому подключен светодиод) при температуре 20°C подается небольшое значение (примерно 33), то есть светодиод еле засветится, а при температуре 40°C подается максимальное значение 255, то есть светодиод будет светиться максимально ярко.
<note important>Мы выбрали диапазон температур исходя из того, что в дальнейшем arduino будет управлять не светодиодом, а двигателем (вентилятора, кондиционера и т.п.). Хотелось, чтобы реальный вентилятор начинал работать при небольшом превышении нормальной температуры и достигал своей максимальной производительности при жаре в 40°C. </note>
Дополненный функцией map() - “сопоставить…” программный код управления светодиодом:



