Еще более интересными мне представляются эксперименты по превращению модуля аудиокоммутатора в видеокоммутатор. Я не уверен, что это осуществимо, но попробовать стоит, используя новые цифровые микросхемы серии 1561 или 1564. Собственно, видеокоммутатор в отношении логики ничем не разнится с аудиокоммутатором. Необходимо только согласовав ние нагрузки. Видеоцепи работают на сопротивление 75 Ом, то есть, подразумевается коаксиальный кабель с волновым сопротивлением 75 Ом, и разъемы желательно применять соответствующее. Коммутатор должен быть согласован. Этого можно достигнуть, применяя входные и выходные усилители на микросхемах, хорошо работающих с видеосигналом (я применял, когда возникла необходимость, микросхемы AD8055AN). Его второе отличие от аудио коммутатора - полоса частот. Для видеокоммутатора она должна быть не менее 0-6 МГц при композитном сигнале.
Еще один модуль, который может найти применение в системе, это модуль аудиокоммутатора. В принципе, достаточно коммутации громкоговорителей с помощью релейного модуля. Но можно коммутировать линейный выход, например CD-проигрывателя и радиоприемника, с аудиовходом телевизора. Для этой цели, используя релейный модуль, можно вместо реле включать соответствующие электронные ключи. Дешевле всего использовать ключи цифровой 561 серии. Микросхема К561ТКЗ (функциональный аналог 4066) вполне успешно работает в качестве управляемого ключа.
Микросхема допускает двухполярное питающее напряжение, при этом она передает низкие частоты от «0». Но микросхема допускает и однополярное включение питающего напряжения. При этом сигнал лучше передавать через конденсатор соответствующей емкости. При реализации не следует забы¬вать, что коммутатор должен позволять подключение к одному выходу источника сигнала нескольких входов приемников, но не наоборот. Если вам понадобится сделать микшер (смеситель сигналов), несколько выходов следует подключать к одному входу через развязывающие резисторы.
Для аудиокоммутатора важно проверить, не ухудшается ли в значительной мере соотношение сигнал/шум. Конечно, я не имею в виду применение подобного модуля для аппаратуры класса Hi-End.
Некоторые устройства позволяют управлять ими по интерфейсу RS232, что предпочтительней ИК-управления, если известны команды управления устройством. Это может быть проигрыватель CD-дисков, проектор или видеокамера наблюдения. Модуль позволяет пересылать команды по системной сети к устройству с преобразованием их к интерфейсу RS232.
В данном случае, я думаю, можно применить конвертер RS485-RS232.
Если есть желание расширить возможности модуля, можно сделать модуль с несколькими выходами RS232, добавив контроллер и мультиплексор, переключающий порты RS232. Это только идеи, а не решения. Решения, я думаю, вам интереснее найти самим.
Далее в книге пойдет речь о смешанных системах. При объединении устройств разных систем в единую сеть модуль последовательного интерфейса может избавить вас от поиска сложных решений.
Плавная регулировка яркости света триаком связана с тем, что яркость ламп накаливания зависит от эффективного напряжения. Чем оно ниже, тем меньше яркость. Устройства подобного типа имеют название «диммер».
Тиристор или триак открывается сигналом, подаваемым на управляющий электрод.
В верхней части отображено напряжение, интересующее нас, а внизу - переменное силовое напряжение 220 В.
При подаче управляющего сигнала триак открывается, и напряжение полностью падает на нагрузке. При переходе напряжения через ноль триак закрывается. Напряжение на лампе накаливания появится только после прихода следующего управляющего сигнала. В данном случае частота управляющих сигналов 100 Гц. Усеченное синусоидальное напряжение на лампе накаливания в данном случае равнозначно подключению лампы к напряжению -110 В. Яркость лампы уменьшается.
Сдвигая момент подачи управляющего сигнала ближе к моменту перехода напряжения через ноль, мы получим большую яркость. Удлиняя время подачи управляющего сигнала после перехода напряжения через ноль, мы получим меньшую яркость свечения
Релейный модуль, описанный в самом начале, универсален во многих отношениях. Он позволяет, выбрав соответствующее реле, коммутировать настольные лампы и электрический чайник, переключать громкоговорители и коммутировать входы усилителя (с не очень высоким качеством).На базе релейного модуля можно изготовить выключатель света, который в состоянии заменить обычный. Конечно, в этом случае потребуется подвести провода системной сети. Но, если говорить о замене обычного выключателя света на системный, лучше изменить способ управления светильником. Конечно, если это не лампа дневного света, которую рекомендуется включать с помощью реле.
Есть хороший коммутатор для ламп накаливания - триак. Триак, или семистор - управляемый полупроводниковый прибор, который в отличие от тиристора может использоваться в цепях переменного тока. При мощности нагрузки до 500-600 Вт ему достаточно небольшого радиатора в виде металлической пластины по размерам выключателя света. Задача управления этим коммутатором тока, при всей ее видимой простоте, может оказаться весьма интересной. Очень хорошее решение эта задача получила с появлением оптопары - светодиод и фототриак. Подобные микросхемы, насколько я знаю, выпускает фирма Toshiba в серии TPL (TPL3061, TPL3041) и несколько производителей - серия МОС.
Светодиод оптрона включается в модуль управления светом, как включаются индикаторы, при этом полностью изолируя модуль от силовой сети. Триак оптрона подключается к управляющему электроду мощного триака. Стоимость же микросхемы и триака может оказаться меньше, чем стоимость реле.
Зачем нужен модуль цифровых вводов, я уже говорил. Что же он собой представляет в плане постановки задачи? Модуль должен иметь некоторое количество входов, каждый из которых может быть замкнут на общий провод или разомкнут. В ответ на запрос центрального управляющего устройства модуль передает состояние своих входов. К входам присоединяются датчики. Кроме уже упомянутых это могут быть датчики, регистрирующие состояние бытовой аппаратуры. Например, датчик состояния телевизора, регистрирующий, включен он или выключен. Применение подобного датчика особенно актуально, если телевизор, как это зачастую получается, управляется с помощью ИК-команд. Поясню.
Стандартная ситуация: систему можно построить таким образом, что управление будет происходить по времени су¬ток. В час ночи, если вы ложитесь спать раньше, система мо¬жет выключить все бытовые приборы, весь свет в доме (или квартире), всю аудио- и видеоаппаратуру, которые могли ос¬таться включенными. Однако есть одно «но». ИК-сигнал выключения некоторых телевизоров, многих музыкальных центров и видеомагнитофонов полностью совпадает с сигналом включения. Если одна из команд прошла мимо системы, вместо выключения устройства вы включите его. Обычно в программе управления можно устанавливать флаги состояния. Каждое включение телевизора устанавливает флаг TV__ON, а выключение сбрасывает его. А если телевизор оказался выключен из сети? Флаг будет успешно устанавливаться и сбрасываться, не решая проблемы.
Можно применить релейный модуль, подключая телевизор, музыкальный центр и остальное оборудование к сети через контакты реле. Но хотелось бы иметь запасной вариант. Таким вариантом станет датчик, который фиксирует ток в проводах подключения бытовой техники. Лучше использо¬вать, например, датчик Холла для определения тока в цепи, но можно применить и что-нибудь попроще. Об этом мы поговорим ниже, но подобный датчик подключить к системе разумнее всего с помощью модуля цифровых вводов или сам модуль сделать частью датчика.
В этой части книги я предлагаю расширить набор модулей. В первую очередь, за счет разработки модуля цифровых вводов.
Почему я не включил модуль цифровых вводов в первую часть?
Модуль, в основном, предназначен для подключения датчиков с «сухими контактами» или аналогичным выходом, имеющих два состояния - включено и выключено. Это противопожарные датчики, датчики охраны. К модулю цифровых вводов можно подключить пороговые датчики освещенности: освещенность достигла некоторой величины - датчик замы¬кает контакты; освещенность упала - датчик выключает контакты. Такими могут быть датчики температуры, влажности, давления, положения, термостаты и т.д. Большой интерес в этом ряду представляют датчики движения. С их помощью легко организовать автоматическое управление светом в коридоре, прихожей или на лестнице.Часть датчиков, например датчики освещенности и температуры, достаточно просто изготовить самостоятельно. Но пирометрические датчики движения даже в собственном исполнении могут оказаться слишком дорогими. Использовать противопожарные или охранные датчики в самостоятельном исполнении я не вижу смысла - они должны быть очень надежны, так как требования к устройствам, обрабатывающим их сигналы, очень жесткие.
Любого из нас ошибки сердят, вызывают раздражение, могут подорвать веру в собственные силы. Не принято в книге,источнике знаний, делать множество ошибок. Но, если вдуматься, не наши ли ошибки, как наши глаза и уши, ведут нас к знаниям? Как палка слепого, они позволяют определять препятствия, заставляют задуматься, правильным ли путем двигаешься? Собственные ошибки запоминаются лучше и служат дольше. Когда я попадаю в безвыходную ситуацию, когда отсутствие решения подобно беспросветному мраку, мне помогает простой прием - я не пытаюсь найти правильное решение, я принимаю заведомо ошибочное. С ним я работаю до того момента, когда оно либо трансформируется в правильное решение, либо подсказывает путь к нему. Самое плохое, что поджидает меня в этом случае, - напрасно потраченное время. Но напрасно ли оно потрачено? Двигаясь неверным путем, я все-таки делаю многое, что позже применяю в других случаях, но в схожих ситуациях. Со временем, с накопленным опытом приходит интуитивное видение решений. Но это относится, в первую очередь, к узкой области деятельности. Стоит выйти за пределы этой области - и вашей интуиции понадобится тросточка, чтобы пройти весь путь без болезненных падений. Я не люблю ошибаться, не люблю признаваться в ошибках. Я вообще не люблю ошибки! Но понимаю их пользу, как необходимость и пользу горьких лекарств.
До начала работы еще раз перечислим модули, которые мы разработали для системы:
релейный модуль;
модуль приема системных ИК-команд (от старого пульта);
модуль трансляции ИК-команд для управления бытовой аппаратурой.
Модулей немного. Но даже на их основе можно создать множество очень интересных версий системы, например «Умный кукольный домик» (Барби - достаточно богатая кук¬ла, чтобы иметь свой умный домик) для дочери или младшей сестренки.
Если не усложнять задачу по созданию управляющей программы, в качестве среды разработки основной программы и отладки системы я предлагаю использовать Visual Basic или любую доступную и удобную для вас среду разработки. Я выб¬рал Visual Basic только по той причине, что «это у меня есть». Вдобавок, вариант Visual Basic упрощает работу с СОМ-портом. Я пробовал создание подобной среды программирования на языке С++ в KDevelop под управлением операционной системы Linux. Все работает. Все удобно. Среда разработки KDevelop входит в дистрибутив Linux, который стоит около 350 рублей. Тоже, как мне кажется, очень хороший вариант.
Перечислим команды модулей, которые могут потребоваться при написании основной программы.
Релейный модуль. Возможно, мы не будем запрашивать статус реле, используя только команды включения и выключения.
Прототип я делаю на той же макетной плате, на которой собирал релейный модуль. По этой причине я включаю фотоприемник на вход RB3. Для индикации приема ИК-команд дополнительно использую вывод RA0, к которому уже подключен светодиод. Когда устанавливается флаг прихода ИК-команды, светодиод включается. Флаг снимается - светодиод выключается.Я выделил добавленный фрагмент. У прототипа фотоприемник подключен к выводу RB3. Смысл добавленного фрагмента в том, что на сетевые запросы ответ будет, если модуль не занят приемом ИК-команд, то есть RB3 = 1.
Неплохо было бы защитить модуль от помех по RB3. При включении может «проскочить» короткий нулевой импульс (на чем я и споткнулся), и модуль перейдет в режим приема ИК-команды, которой нет. Поправил я это так:
start: if (RB3&0x01) // Нет ИК сигнала. {
PHOTOCOME = 0; RAO = 0x00;
break; }
if (!(RB3&0x01)) // Появился ИК сигнал.
{
for (k=0; k<30; ++k); // Поставим задержку.
if (!(RB3&0x0D) // ИК сигнал не пропал? {
PHOTOCOME = 1; RAO = 0x01;
}
} else {