Умный дом: боремся (чуть-чуть) с жарой энергоэффективно
1 июля прошел DIY Meetup, на который я подавал заявку с темой «Организация домашнего склада».
Довольно много людей проявило интерес к моей теме и при голосовании я даже занял не последнее место в десятке, так что Mail.ru пригласили меня с этой темой выступить. К сожалению, у меня не было возможности принять участие. В итоге, когда было опубликовано расписание и моего доклада там не оказалось — мне начали писать в личку с просьбой написать статью на тему склада. В общем-то как раз и планировал в эти выходные заняться. Но наконец-то появившееся жаркое солнце напомнило мне, что есть более актуальный проект, о котором сегодня и пойдет речь. О складе я расскажу в следующей статье.
Stay tuned
Еще недавно считалось нормальным, зайдя в дом или офис в жаркий летний день, почувствовать приятную прохладу кондиционера. В то же самое время когда солнце через прозрачные окна жарило в полную силу.
Очевидно низкая энергоэффективность сего действия достаточно быстро дошла до владельцев, оплачивающих счета за электричество. И на окна стали вешать всевозможные штуки, блокирующие свет. Блэкаут-шторы, жалюзи и прочие интересные вещи.
На первый взгляд это выглядит разумно… Но не совсем. Дело в том, что жалюзи, шторы и любые другие размещенные внутри помещения предметы, блокирующие проникновение солнечного света — не столь уж значительно уменьшают нагрев помещения.
Причина вполне очевидна — энергия, которая теперь не греет помещение непосредственно, тратится на нагрев штор/жалюзи. А куда денется энергия нагретых штор? Конечно же в помещение.
В итоге в помещении стало темно, но прохладнее не стало.
Как же быть?
Конечно же повесить жалюзи снаружи…
Но есть «но». И не одно.
Даже самые дешевые современные жалюзи предполагают установку на улице. С этим нет проблем.
Однако хочется как-то ими управлять.
Возможность поднимать-опускать жалюзи мы полностью теряем, т.к. жалюзи должны быть жестко закреплены снизу для противодействия ветру.
В тоже время управление наклоном остается в силе, с помощью ручки, которая передает через редуктор вращение на элементы жалюзи. Однако ручка тоже оказывается снаружи и в лучшем случае для того, чтобы её повернуть — нужно открыть окно…
А если противомоскитная сетка? Снимать каждый раз? Несколько раз в день?
А если окно не открывается? Выходить на улицу чтобы покрутить?
А если окно не на первом этаже???
Все эти «но» заставляют искать решение.
Самое простое и очевидное — проделать в стене отверстие и протянуть через него ручку внутрь помещения. Так себе идея. Отброшена сразу после возникновения.
Беглый осмотр механизмов весьма порадовал.
Единственное, что мешает свободно крутить механизм — тот самый редуктор, идущий к ручке.
К счастью, он достаточно просто снимается.
Выдвигаем ось из редуктора.
Слега раздвигаем профиль в стороны и вынимаем редуктор.
У меня завалялся дешевый пластиковый сервомоторчик Tower Pro SG90.
Изготовил простенькое крепление и переходник на ось жалюзи.
И вуаля — подключаем моторчик к контроллеру и наше жалюзи работает.
Конец.
Нет, на самом деле не конец.
Всю эту красивую конструкцию я в итоге выкинул.
Причин тут две:
1) Серва пластиковая. И хоть моторчик справляется, но есть сомнения в долговечности системы.
2) Моторчик дает поворот лишь 180 градусов. Как оказалось — этого недостаточно, чтобы уверенно закрыть жалюзи в обе стороны.
Пошел на aliexpress в поисках мотора с диапазоном 270 градусов.
И наткнулся вот на такую штуку:
Servo 360 Degree Continuous Rotation Servo MG995 Metal Gear
Радостно побежал покупать, ведь сервы на 360 градусов на металлических шестеренках уж точно хватит!
Господа поопытнее уже смеются надо мной, я слышу. :)
Для тех, кто также мало знает о сервах как и я, спешу рассказать: под названием »360 Degree Continuous Rotation Servo» все и всюду подразумевают совсем не серву. Это сделанный из сервы моторчик, который не умеет управлять положением вообще, зато вращается в указанную сторону с указанной скоростью…
Достигается это отключением датчика положения и установкой вместо него двух резисторов (делитель напряжения) — в итоге этот импровизированный датчик показывает всегда среднее положение и контроллер крутит моторчик непрерывно, думая что никак не может добраться до нужного значения.
В моем случае даже делитель напряжения делать не стали, просто откусили у потенциометра носик и выставили его в среднее положение.
Как же быть, чёрт возьми? Заказывать новые моторчики? Как раз к осени сделаю… Очень актуально будет…
Воткнуть потенциометр вместо испорченного? У меня нет совместимого, поблизости ничего подходящего не продается, а ожидание доставки сводит на нет идею…
Но кто сказал, что датчик положения обязательно должен быть внутри моторчика?
Решение лежит на поверхности — ставим потенциометр с другой стороны жалюзи на ту же ось.
G1 Y0
G1 X0
G1 Y15
G1 X4
G1 Y9
G1 X7.5
G1 X4
G1 Y15
G1 X12.25 Y30
G1 X22.75
G1 X31 Y15
G1 Y9
G1 X27
G1 X31
G1 Y15
G1 X35
G1 Y0
G1 X0
Потенциометр с углом 270 градусов как раз был у меня в наличии.
Первым делом я припаял его к контроллеру моторчика.
Но такое решение мне не понравилось. Основная причина — контроллер не докручивал крайние положения.
В итоге доступно было меньше 270 градусов и жалюзи по прежнему нельзя было закрыть на 100%.
Поэтому я воткнул в моторчик делитель напряжения, а данные с потенциометра анализирую непосредственно на атмеге. Приятным плюсом стала доступность данных о положении жалюзи на уровне атмеги.
В итоге код поворота получился хоть и сложнее управления обычной сервой, но не значительно:
void setServoPos(int pos){
long long startTime = millis();
int targetPos = degreesToSensorPos(pos);
int sensorPos = analogRead(POSITION_SENSOR_PIN);
if (abs(sensorPos-targetPos)sensorPos)
shutter.writeMicroseconds(FORWARD_SPEED);
else
shutter.writeMicroseconds(BACKWARD_SPEED);
while (moveTimePOSITION_PRECISE && sign(newSensorPos-targetPos)==sign(sensorPos-targetPos)){
newSensorPos = analogRead(POSITION_SENSOR_PIN);
moveTime = millis() - startTime;
};
if (pos==0 || pos==180)
delay(200);
shutter.detach();
}
Как можно понять, при установке крайних положений я еще «доворачиваю» в течении 200 мс. Это связано с тем, что потенциометр показывает крайние значения, когда край еще не достигнут. Этой возможности нет, если подключить его напрямую к контроллеру моторчика.
Крепление мотора я делать не стал. Ничего годного и простого в голову не пришло и я решил схалтурить, примотав его на белую изоленту. К тому времени как изолента обветшает, может быть созрею сделать нормальное крепление (ну или заменю на синюю и забуду об этой проблеме на века).
Пока так:
Система работает, ура.
Пришло время поговорить об автоматизации.
Первая мысль — надо сделать два датчика температуры: один — для определения температуры воздуха, второй же разместить непосредственно рядом с окном, чтобы он нагревался прямыми солнечными лучами. Тогда, в случае отсутствия прямых солнечных лучей показания на датчиках будут примерно равны и контроллер будет знать, что всё ок. Когда же солнце придет на эту сторону — показания начнут различаться и контроллер поймет, что пришло время закрыть жалюзи.
Однако, оказалось что это не нужно.
Простого расписания достаточно.
Сейчас расписание выглядит так:
7:00 — 140 градусов (солнце находится с другой стороны дома, хотим чтобы максимально светило в комнату)
13:00 — 0 градусов (солнце жаркое и светит прямо в окно, хотим чтобы полностью блокировалось)
18:00 — 170 градусов (начинает темнеть, блокируем обзор с улицы)
И это покрывает 100% задач жалюзи, которые предполагалось решать датчиками. Не так умно, зато гораздо проще и надежнее.