Общий зал - это место в доме, где можно уединиться для комфортного просмотра интересного фильма или собраться большой семьей и отпраздновать какое-нибудь торжество.
Интересная мебель, приятная цветовая палитра создают уютное жизненное пространство, а “умные вещи” помогают обустроить это пространство, сделать его удобным.
Существуют межгосударственные стандарты, регулирующие параметры микроклимата в жилых помещениях. Так, например, средняя температура в гостинной должна быть от +19°C до +21°C, а относительная влажность от 30% до 60% в зависимости от периода года. <note tip> Учитывая параметры температуры и влажности, рассчитывают "тепловой индекс" (или “индекс комфортности”), на основании которого удобнее автоматически управлять отопительными приборами, кондиционерами и вентиляторами. </note>
В качестве недорогих измерителей температуры с помощью электрического тока можно использовать датчик DS18B20+ или такой же, но в герметическом корпусе.
Параметры датчика DS18B20:
Наличие и количество жидкости можно определить:
В реальных проектах управления климатом удобно использовать цифровые датчики 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 с аналоговым выходом. Напряжение на выходе датчиков линейно пропорционально температуре в градусах по шкале Цельсия. Дополнительной калибровки не требуется. При этом датчики обеспечивают точность измерения ±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:
Использовать 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 в разные положения мы увидим, что:
Так как ШИМ-порт поддерживает значения от 0 до 255, то выходные данные от датчика TMP36 надо преобразовать в диапазон от 0 до 255. Обычно в “больших” языках программирования для этого используют команду map().
<note>
map(value, fromLow, fromHigh, toLow, toHigh)
Преобразует значение переменной из одного диапазона в другой. Например, значение переменной value, равное fromLow, будет преобразовано в число toLow, а значение fromHigh - в toHigh. Все промежуточные значения value масштабируются относительного нового диапазона [toLow; toHigh].</note>
В блочном языке программирования TinkerCAD есть команда:
Если использовать эту команду для преобразования “данных с аналогового вывода”, то на выходе получаются значения:
Опытным путем можно подобрать рабочий диапазон для команды: от -700 до 4550. В этом случае на цифровой пин (к которому подключен светодиод) при температуре 20°C подается небольшое значение (примерно 33), то есть светодиод еле засветится, а при температуре 40°C подается максимальное значение 255, то есть светодиод будет светиться максимально ярко.
<note important>Мы выбрали диапазон температур исходя из того, что в дальнейшем arduino будет управлять не светодиодом, а двигателем (вентилятора, кондиционера и т.п.). Хотелось, чтобы реальный вентилятор начинал работать при небольшом превышении нормальной температуры и достигал своей максимальной производительности при жаре в 40°C. </note>
Дополненный функцией map() - “СОПОСТАВИТЬ…” программный код управления светодиодом:
Контроллер Arduino обычно выступает в роли логического (командного) устройства. Контроллер выдает команды, а другие, более сильные, более мощные устройства выполняют полезные действия. Представьте, как вы поворачиваете маленький кран рукомойника, а мощный насос продавливает по трубе под напором воду. И, чем больше вы поворачиваете кран, тем мощней струя воды.
В электронных устройствах постоянного тока слабый управляющий (логический) сигнал превращают в сильный “усилители”, которые строятся на основе транзисторов.
<note> Транзистор (от английских слов transfer — переносить и resistor — сопротивление) электронный полупроводниковый прибор, предназначенный для усиления, генерирования и преобразования электрических колебаний различных частот.
Изобретен в 1948 г. американцами У.Шокли, У.Браттейном и Дж.Бардином </note>
На схеме к аналоговому порту A0 подключен датчик температуры TMP36, который определяет температуру окружающей среды. При достижении температуры выше 20°C, контроллер arduino начинает выдавать на цифровой порт D3 ШИМ-сигнал определенной величины.
К порту D3 через резистор 100 Ом подключен контакт Gate (Затвор) полевого N-канального транзистора. К контакту транзистора Drain (Сток) подключен двигатель (вентилятора, кондиционера и т.п.). К другому контакту двигателя подключен мощный источник питания (в нашем случае на 5 вольт). Контакт Gate (Затвор) соединен с контактом arduino GND (Земля) через резистор 10 кОм.
<note>“Резистор на 100 Ом (можно ставить в диапазоне 100-500 Ом, мощность любая) выполняет защитную функцию: затвор полевика представляет собой конденсатор, в момент открытия затвора конденсатор начнёт заряжаться и в цепи пойдёт большой ток (практически короткое замыкание), который может повредить пин Ардуино. Резистор просто ограничивает ток в цепи пин-затвор и спасает пин от скачков тока” (источник AlexGyver)</note>
<note>“Резистор на 10 кОм (можно ставить в диапазоне 5-50 кОм, мощность любая) выполняет подтягивающую функцию для затвора. Если случится так, что плата Ардуино выключена или сигнальный провод от неё отвалился – на затвор будут приходить случайные наводки и он может случайно открыться. Если в этот момент будет подключен источник питания – нагрузка тоже включится! Восстание машин начнётся именно с этого момента. Подтягивающий к GND резистор позволяет “прижать” затвор, чтобы он не открылся сам по себе” (источник AlexGyver)</note>
<note important>Обязательным условием устойчивой работы схемы является соединение контактов GND (земля) всех элементов вместе</note>
На рисунке выше температура датчика TMP36 25°C. При этом обороты двигателя 2846 rpm (обороты в минуты). С помощью программного кода сделаем так, чтобы двигатель начинал вращаться только при температуре выше 20°C и максимальные обороты набирал при температуре окружающей среды 40°C. При дальнейшем росте температуры, на пин D3 выдается значение 255 - максимальные обороты двигателя.
“TMP36_T” и “TMP36_A0” - переменные для сохранения параметров, выдаваемых датчиком температуры TMP36. Заметьте так же, что, в соответствии с задачей, изменены параметры команды [СОПОСТАВИТЬ … С ДИАПАЗОНОМ … ОТ … ДО …]
Если на arduino порты A0 и D3 заняты другим оборудованием. Что необходимо сделать для решения нашей задачи? Выполните необходимые действия и сохраните изменения в виде скриншотов.
[ На главную страницу ]. . . .[ Далее ]