Espruino:Примеры/Терморегулятор
Терморегулятор[1]
Есть множество ситуаций, в которых может понадобиться возможность изменять температуру. Например:
- Самодельное производство алкоголя
- Выращивание растений
- Готовка еды в стиле sous-vide («под вакуумом»)
- Обогрев дома и так далее
В этом руководстве мы сделаем проект, благодаря которому вам будет очень просто настраивать температуру чего-либо. Конечно, это можно сделать и другими методами (особенно, если управление нагревателем осуществляется не только по принципу «Вкл/Выкл»), но данный метод – хорошая отправная точка в создании подобных проектов.
Нам понадобятся
- Плата Espruino
- Температурный датчик DS18B20
- Резистор на 4.7 кОм (для температурного датчика)
- Что-то типа нагревателя. Я воспользовался автомобильной индикаторной лампочкой P21W и 5-вольтовым источником питания, генерирующим как минимум 1 ампер
- Реле-модуль (для включения и выключения нагревателя)
Подсоединение
![](/ruwiki/images/9/93/Heater_Controller_setup.jpg)
Нам надо будет подсоединить друг к другу три компонента:
Температурный датчик
Инструкции по подключению температурного датчика можно найти тут, но в принципе можно воспользоваться и этой таблицей:
Провод датчика | Espruino | Резистор на 4.7 кОм |
---|---|---|
Чёрный | GND | |
Красный | 3.3v | 1-ый провод |
Белый | A1 | 2-ой провод |
Подключение нагревателя к реле-модулю
Здесь нам надо создать простую цепь «лампочка + батарея», где вместо переключателя будет использоваться реле. Выполните следующее:
Провод от | Провод к |
---|---|
Металлического корпуса лампочки | Контакту GND на источнике питания |
Нижнего конца лампочки | 2-ому контакту реле (он помечен как K1) |
5V на источнике питания | 3-ему контакту реле |
Подключение реле-модуля к Espruino
Снимите с реле-модуля перемычку, соединяющую контакты JD-VCC и VCC.
Реле-модуль | Espruino |
---|---|
GND | GND |
JD-VCC | Bat (5V) |
VCC | 3.3v |
IN1 | A0 |
Код
Код для этого проекта очень простой. Просто скопируйте и вставьте его в правую часть IDE, а затем кликните на кнопку загрузки кода в центре IDE.
// В этой функции мы включаем и выключаем нагреватель
// (в зависимости от значения в «isOn»).
// Кроме того, здесь также будет включаться/выключаться
// служащий индикатором красный светодиод.
function setHeater(isOn) {
digitalWrite(LED1, isOn);
digitalWrite(A0, !isOn); // «0» включает реле, «1» – выключает
}
var ow = new OneWire(A1);
var sensor = require("DS18B20").connect(ow);
// Пороговая температура:
var targetTemp = 30;
// Каждую секунду...
setInterval(function() {
// Считываем температуру:
var temp = sensor.getTemp();
// Если температура слишком низкая, включаем нагреватель:
if (temp < targetTemp-1)
setHeater(true);
// Если температура слишком высокая,
// выключаем нагреватель и даём ему остыть:
if (temp > targetTemp+1)
setHeater(false);
}, 1000);
Теперь, если температура будет ниже 30 °C (значение в targetTemp), лампочка включится и начнёт вырабатывать тепло. Если температурный порог будет немного превышен, лампочка выключится. Если температура упадёт чуть ниже 30 °C, лампочка снова включится.
Возможно, вы заметили, что в коде используются конструкции targetTemp-1 и targetTemp+1 – это нужно для создания такого эффекта как «гистерезис». Он используется во всех термостатах (включая холодильники и системы центрального домашнего отопления) и нужен для того, чтобы избежать ситуации, когда лампочка будет ежесекундно включаться и выключаться.
Когда код будет запущен, вы можете вписать в левой части IDE функцию sensor.getTemp() – это прочтёт текущую температуру. Вы даже можете добавить после строчки var temp = sensor.getTemp(); строчку console.log(temp); (но не забудьте после этого снова загрузить код), в результате чего Espruino начнёт автоматически показывать температуру, и вы сможете наблюдать её падения и взлёты в режиме реального времени.
См.также
Внешние ссылки