Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

в 20:46, , рубрики: arduino, Atmega, diy или сделай сам, ЛУТ, микроконтроллеры avr, печатная плата, Программинг микроконтроллеров, проектирование, своими руками, умный дом, метки: , , , , , , ,

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

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

Примерный план (посмотрим по ходу действия) ожидается следующий:

  1. Hardware выключателя
  2. Software выключателя
  3. «Центр управления»


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

Начало

На текущий момент имеются следующие вводные:

  1. Хочется реализовать удаленное управление светом и вытяжкой.
  2. Выключатели есть одно- и двух-секционные (свет и свет+вытяжка).
  3. Выключатели установлены в стене из гипсокартона.
  4. Вся проводка — трехпроводная (присутствует фаза, нуль, защитное заземление).

С первым пунктом — все понятно: нормальные желания надо удовлетворять.

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

Третий пункт — обуславливает некоторую гибкость в выборе форм-фактора выключателя (реально снимается существующий выключатель, демонтируется монтажная коробка, внутрь стены монтируется готовое устройство, возвращается монтажная коробка и монтируется выключатель назад).

Четвертый пункт — существенно облегчает поиск источника питания (220В есть «под рукой»).

Вводные данные ясны, можно двигаться дальше.

Принципы и элементная база

Выключатель хочется сделать многофункциональным — т.е. должна остаться «тактильная» составляющая (выключатель физически должен остаться и должна сохраниться его обычная функция по включению/выключению нагрузки, но при этом должна появиться возможность управления нагрузкой через радиоканал.

Для этого обычные двухпозиционные (включено-выключено) выключатели заменим на аналогичные по дизайну выключатели без фиксации (кнопки):

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

Эти выключатели работают примитивно просто: когда клавиша нажата — пара контактов замкнуты, когда клавишу отпускаем — контакты размыкаются. Очевидно, что это обычная «тактовая кнопка» (собственно так ее и будем обрабатывать).

Теперь практически становится понятно, как это реализовать «в железе»:

  • берем МК (atmega8, atmega168, atmega328 — использую то, что есть «прямо сейчас»), в комплекте с МК добавляем резистор для подтяжки RESET к VCC,
  • подключаем две «кнопки» (для минимизации количества навесных элементов — будем использовать встроенные в МК резисторы подтяжки), для коммутации нагрузки воспользуемся реле с подходящими параметрами (у меня как раз были припасены реле 833H-1C-C с 5В управлением и достаточной мощностью коммутируемой нагрузки — 7A 250В~),
  • естественно, нельзя обмотку реле напрямую подключить к выходу МК (слишком высокий ток), поэтому добавим необходимую «обвязку» (резистор, транзистор и диод).

Микроконтроллер будем использовать в режиме работы от встроенного осциллятора — это позволит отказаться от внешнего кварцевого резонатора и пары конденсаторов (чуть сэкономим и упростим создание платы и последующий монтаж).

Радиоканал будем организовывать с помощью nRF24L01+:

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

Модуль, как известно, толерантен к 5В-сигналам на входах, но требует для питания в 3.3В, соответственно, в схему добавим еще линейный стабилизатор L78L33 и пару конденсаторов к нему.

Дополнительно добавим блокировочные конденсаторы по питанию МК.

МК будем программировать через ISP — для этого на плате модуля предусмотрим соответствующий разъем.

Собственно, вся схема описана, осталось только определиться с выводами МК, к которым будем подключать нашу «периферию» (радиомодуль, «кнопки» и выбрать пины для управления реле).

Начнем с вещей, которые уже фактически определены:

  • Радиомодуль подключается на шину SPI (таким образом, подключаем пины колодки с 1 по 8 на GND, 3V3, D10 (CE), D9 (CSN), D13 (SCK), D11 (MOSI), D12 (MISO), D2 (IRQ) — соответственно).
  • ISP — вещь стандартная и подключается следующим образом: подключаем пины разъема с 1 по 6 на D12 (MISO), VCC, D13 (SCK), D11 (MOSI), RESET, GND — соответственно).

Дальше остается определиться только с пинами для кнопок и транзисторов, управляющих реле. Но не будем торопиться — для этого подойдут любые пины МК (как цифровые, так и аналоговые). Выберем их на этапе трассировки платы (банально выберем те пины, что будут максимально просто развести до соответствующих «точек»).

Теперь следует определиться с тем, какие «корпуса» будем использовать. В этом месте начинает диктовать правила моя природная лень: мне очень не нравится сверлить печатные платы — поэтому выберем по максимуму «поверхностный монтаж» (SMD). С другой стороны, здравый смысл подсказывает, что использование SMD очень существенно сэкономит размер печатной платы.

Для новичков поверхностный монтаж покажется достаточно сложной темой, но реально это не так страшно (правда, при наличии более-менее приличной паяльной станции с феном). На youtube очень много видео-роликов с уроками по SMD — очень рекомендую ознакомиться (сам начал использовать SMD пару месяцев назад, учился как раз по таким материалам).

Сформируем «список покупок» (BOM — bill of materials) для «двухканального» модуля:

  • микроконтроллер — atmega168 в корпусе TQFP32 — 1 шт.
  • транзистор — MMBT2222ALT1 в корпусе SOT23 — 2 шт.
  • диод — 1N4148WS в корпусе SOD323 — 2 шт.
  • стабилизатор — L78L33 в корпусе SOT89 — 1 шт.
  • реле — 833H-1C-C — 2 шт.
  • резистор — 10кОм, типоразмер 0805 — 1 шт. (подтяжка RESET к VCC)
  • резистор — 1кОм, типоразмер 0805 — 1 шт. (в цепь базы транзистора)
  • конденсатор — 0.1мкФ, типоразмер 0805 — 2 шт. (по питанию)
  • конденсатор — 0.33мкФ, типоразмер 0805 — 1 шт. (по питанию)
  • электролитический конденсатор — 47мкФ, типоразмер 0605 — 1 шт. (по питанию)

Дополнительно к этому потребуются клеммники (для подключения силовой нагрузки), колодка 2х4 (для подключения радиомодуля), разъем 2х3 (для ISP).

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

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

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

Проектирование

Для этого воспользуемся замечательной программой — EAGLE.

На мой взгляд — очень простая, но в то же время — очень удобная программа для создания принципиальных схем и печатных плат по ним. Дополнительные «плюсы» в копилку EAGLE: мультиплатформенность (мне приходится работать как на Win-, так и на MAC-компьютерах) и наличие бесплатной версии (с некоторыми ограничениями, которые для большинства «самодельщиков» покажутся совершенно несущественными).

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

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

Схема:

  • Создаем новый проект, внутри которого добавляем «схему» (пустой файл).
  • Добавляем МК и необходимую «обвеску» (подтягивающий резистор на RESET, блокировочный конденсатор по питанию и т.п.). Обращаем внимание на корпуса (Package) при выборе элементов из библиотеки.
  • «Изображаем» ключ на транзисторе, который управляет реле. Копируем этот кусок схемы (для организации «второго канала»). Входы ключей — пока оставляем «болтаться в воздухе».
  • Добавляем на схему разъем ISP и колодку для подлючения радиомодуля (делаем соответствующие соединения в схеме).
  • Для питания радиомодуля добавляем в схему стабилизатор (с соответствующими конденсаторами).
  • Добавляем «разъемы» для подключения «кнопок» (один пин разъема сразу «заземляем», второй — «болтается в воздухе»).

После этих действий у нас получается полная схема, но пока остаются неподключенными к МК транзисторные ключи и «кнопки».

Дальше перехожу к созданию платы (в этот раз мысль пошла «слева-направо»):

  • Размещаю клеммники для подключения силовой нагрузки.
  • Правее клеммников — реле.
  • Еще правее — элементы транзисторных ключей.
  • Стабилизатор питания для радиомодуля (с соответствующими конденсаторами) размещаю рядом с транзисторными ключами (в нижней части платы).
  • Размещаю колодку для подключения радиомодуля снизу справа (обращаем внимание на то, в каком положении окажется сам радиомодуль при паравильном подключении к этой колодке — по моей задумке он должен не выступать за пределы основной платы).
  • Разъем ISP размещаю рядом с разъемом радиомодуля (поскольку используются одни и те же «пины» МК — чтобы было проще разводить плату).
  • В оставшемся пространстве располагаю МК (корпус надо «покрутить», чтобы определить наиболее оптимальное его положение, чтобы обеспечить минимальную длинну дорожек).
  • Блокировочные конденсаторы размещаем максимально близко к соответствующим выводам (МК и радиомодуля).

После того, как элементы размещены на своих местах — делаю трассировку проводников. «Землю» (GND) — не развожу (позже сделаю полигон для этой цепи).

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

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

Расположение чипа МК на плате у меня как раз соответствует картинке выше (только повернут на 45 градусов по часовой стрелке), поэтому мой выбор следующий:

  • Транзисторные ключи подключаем на пины D3, D4.
  • Кнопки — на A1, A0.

Внимательный читатель увидит, что на схеме ниже фигурирует atmega8, в описании упоминается atmega168, а на картинке с чипом — вообще amega328. Пусть это вас не смущает — чипы имеют одинаковую распиновку и (конкретно для этого проекта) взаимозаменяемы и отличаются только количеством памяти «на борту». Выбираем то, что нравится/имеется (я в последствии в плату запаял 168 «камушек»: памяти побольше, чем у amega8 — можно будет побольше логики реализовать, но об этом во второй части).

Собственно, на этом этапе схема принимает финальный вид (делаем на схеме соответствующие изменения — «подключаем» ключи и кнопки на выбранные пины):

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

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

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

У меня получилась платка размером 56х35мм.

Архив со схемой и платой для Eagle версии 6.1.0 (и выше) находится по ссылке.

Вуаля, можно приступать к изготовлению печатной платы.

Изготовление печатной платы

Плату делаю методом ЛУТ (Лазерно-Утюжная Технология). В конце поста есть ссылка на материалы, которые мне очень помогли.

Приведу для порядка основны шаги по изготовлению платы:

  • Печатаю на бумаге Lomond 130 (глянцевая) нижнюю сторону платы.
  • Печатаю на такой же бумаге верхнюю сторону платы (зеркально!).
  • Складываю полученные распечатки изображениями внутрь и на просвет совмещаю (очень важно получить максимальную точность).
  • После этого степлером скрепляю листки бумаги (постоянно контролируя, чтобы совмещение не было нарушено) с трех сторон — получается «конверт».
  • Вырезаю подходящего размера кусок двустороннего стеклотекстолита (ножницами по металлу или ножевкой).
  • Стеклотекстолит нужно обработать очень мелкой шкуркой (убираем окислы) и обезжирить (я делаю это ацетоном).
  • Полученную заготовку (аккуратно, за края, не трогая очищенные поверхности) помещаю в полученный «конверт».
  • Разогреваю утюг «на полную» и тщательно утюжу заготовку с двух сторон.
  • Оставляю плату остыть (минут 5), после этого можно под струей воды отмачивать бумагу и удалять ее.

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

Далее плату травлю в растворе хлорного железа (не допуская недо- и пере-травливания).

Тонер смываю ацетоном.

Совет: когда делаете мелкие платы, сделайте заготовку под нужное количество плат, просто разместив изображения верхней и нижней части платы в нескольких экземплярах — и уже это «комбинированное» изображение «накатывайте» на заготовку из стеклотекстолита. После травления достаточно будет разрезать заготовку на отдельные платы.
Только обязательно проверяйте размеры плат при вводе на бумагу: некоторые программы любят «чуть-чуть» изменить масштаб изображения при выводе, а это недопустимо.

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

Контроль качества

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

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

Если все-таки где-то обнаружен ненужный контакт — исправляю это острым ножом. Дополнительно обращаю внимание на возможные «микротрещины» (пока просто фиксирую их — исправлять буду на этапе лужения платы).

Лужение, сверление

Я предпочитаю плату перед сверлением залудить — так мягкий припой позволяет чуть проще сверлить и сверло на «выходе» из платы меньше «рвет» медные проводники.

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

Когда все готово — отмываю плату с обычным жидким мылом.

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

После этого уже можно сверлить плату.
С отверстиями диаметром более 1мм все достаточно просто (просто сверлю и все — надо только вертикальность постараться соблюсти, тогда выходное отверстие попадет в отведенное ему место).

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

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

Монтаж элементов

Сначала распаиваются межслойные перемычки.
Там где это просто переходные отверстия — просто вставляю кусочек медной проволоки и запаиваю его с двух сторон.
Если «переход» осуществляется через одно из отверстий для выводных элементов (разъемы, реле и т.п.): распускаю многожильный провод на тонкие жилы и аккуратно запаиваю кусочки этой жилы с двух сторон в тех отверстиях, где нужен переход, при этом минимально занимая пространство внутри отверстия. Это позволяет реализовать переход и отверстия остаются достаточно свободными для того, чтобы соответствующие разъемы нормально встали на свои места и были распаяны.

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

Устраняю все «залипухи», если такие все-таки появились в процессе лужения. Это гораздо проще сделать сейчас, чем в процессе отладки уже полностью собранной платы.

Теперь можно приступать непосредственно к монтажу элементов.

Мой принцип: «снизу вверх» (сначала распаиваю наименее высокие компоненты, потом те, что «повыше» и те, что «высокие»). Такой подход позволяет с меньшими неудобствами разместить все элементы на плате.

Таким образом, сначала распаиваются SMD-компоненты (я начинаю с тех элементов, у которых «больше ног» — МК, транзисторы, диоды, резисторы, конденсаторы), потом дело доходит и до выводных компонентов — разъемов, реле и т.п.

Таким образом, получаем уже готовую плату.

Радиоуправляемый выключатель своими руками. Часть 1 — Hardware

Продолжение следует...

P.S. «Двухканальный» модуль можно использовать для замены «проходных» выключателей (обычно ставятся в начале и конце лестницы между этажами и т.п. местах).

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

P.P.P.S. Да, этот пост — развитие темы, которую я затронул ранее.

Полезные ссылки:

Автор: avstepanov

Источник

  1. Валерий:

    Сылка -плата и схемы не рабочая. Обновите Пл.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js