Например TDA7294

РадиоКот > Схемы > Цифровые устройства > Автоматика

Умный дом

Автор: xkp, x-k-p@mail.ru
Опубликовано 02.09.2013.
Создано при помощи КотоРед.

УМНЫЙ ДОМ или управление 20 нагрузками

После переезда на новое место обитания мои глаза были в шоке. Розетки вылетают из стен, выключатели туда же, еще и стояли далеко не в лучших и удобных местах. При этом виднеются медные провода накрученные на аллюминевые. Решено было немедленно все переделать. После демонтажа старой и монтажа новой проводки мне не хотелось останавливаться на улучшении жилья, да и супруга постоянно гоняла выключить свет на кухне и решено было соорудить систему «умный дом», основной задачей было управление освещением и другими бытовыми приборами (например аквариум с рыбками, в нем много приборов электрических) из любого более менее удобного места в доме.

Для начала необходимо было определиться по какой линии связи вести общение устройств.

Выбор стоял между Iwire и I2C линиями. Но у них у обоих есть недостаток: они могут работать только в одном из режимов: master (ведущий) или slave (ведомый). Чего мне не хотелось. И тут передо мной встали три решения:

Поставить дополнительный МК (микроконтроллер) и установить в нем режим master, а на остальных – slave. Этот вариант не подходил так как требовал дополнительного МК;Установить работу устройств на линии по приоритету. Этот вариант тоже мне не понравился, так как необходима стабильность и точность тактовой частоты МК;Придумать свою линию связи. На этом варианте я и остановился.

Но уходить от существующей линии I2C не стал. Просто удалил все лишнее и немного увеличив задержки написал свою линию связи. НУ не буду вас томить ожиданиями и начну с самого простого.

Как видно из схемы мы имеем минимум деталей (МК, кнопки, резисторы). Работает устройство следующим образом: При свободной линии связи идет опрос кнопок, Далее при обнаружении нажатия на одну из кнопок инвертируется соответствующий бит данных и затем отправляется на линию связи, при занятой линии связи устройство переходит в режим принятия данных.

Разумеется, у вас есть 2 вопроса: Где же тут нагрузки? В названии есть цифра 20, а тут только 3 кнопки.

Ответом на первый вопрос станет следующая схема:

Итак, мы видим, что схема не сильно отличается от первой, единственное отличие в том, что тут вместо кнопок подключены нагрузки (на схеме условно обозначены в виде нагрузок светодиоды). Естественно есть отличия и в программной части: Тут мы принимаем данные по линии связи и выдаем их на нагрузки.

Теперь будем двигаться ближе ко второму вашему вопросу. Вот следующая схема:

Тут мы имеем 8 кнопок и 8 нагрузок (так же условно обозначенные светодиодами). Это устройство может быть как автономно работающим, так и в связке по линии связи с вышеописанными. Здесь алгоритм работы совмещает в себе оба первых: При свободной от линии данных идет опрос кнопок с последующим инвертированием соответствующего бита данных, при занятой линии связи устройство переходит в режим принятия данных, принимает данные и выводит их на нагрузки.

Ну вот и подобрались к вашему вопросу.

Тут мы имеем 20 кнопок. Алгоритм работы такой же как и в первом варианте. Устройство работает в связке по линии данных с любыми вышеописанными. Ну и разумеется вот вам устройство на 20 нагрузок:

Тут уже 20 нагрузок. Алгоритм работы идентичный по описанию со вторым устройством.

Все устройства могут работать в связи с любыми устройствами из данной статьи, ограничения на количество устройств на линии нет, их может быть бесконечное множество. При обнаружении ошибки на линии связи при приеме данных, устройство сбрасывается на изначальные параметры выходов и все нагрузки (на данном устройстве) отключаются. Для вывода в режим работы необходимо включить или выключить любую из нагрузок. Нагрузками может являться все что угодно! Лично я предпочитаю релейный вариант.

Но можно и симисторное управление поставить, или еще что придумать. Только стоит учесть немало важный факт: (!) нагрузки управляются сигналом GND, при логической 1 (+5в) на выходе МК нагрузка должна быть отключена, а при логическом 0 (0в) – включена. Так же на схеме можно увидеть подтяжку кнопок на питающий провод. Это вызвано "левой" партией МК, приобретенных пару лет назад, ибо при программной подтяжке на линию питания самой подтяжки непроисходит, выводы МК остаются в Z состоянии и как входы ловят все наводки, непреднамеренно срабатывают как нажатие кнопки. С тех пор по мимо програмной я везде ставлю принудительную подтяжку на питающий провод.

Фьюзы МК ATMEGA8 устанавливаются на тактирование от внутреннего RC-генератора на 8 мГц, ATTINY13 – 9,6 мГц.


Файлы:
Прошивка МК
исходные коды
схемы и протеус


Все вопросы в Форум.


ID: 1753

Как вам эта статья?

 Нравится
 Так себе
 Не нравится

Заработало ли это устройство у вас?

 Заработало сразу
 Заработало после плясок с бубном
 Не заработало совсем

5
1
Подробно