СОДЕРЖАНИЕ

Модуль гальванической развязки

17.09.2018

Не сильно вдаваясь в нюансы того, для чего используется финальный результат, хочу поделиться историей того, каким образом проходила в моих руках эволюция модуля гальванической развязки для получения сигналов с внешних датчиков. Модули все делались под Raspberry PI.

Если задаться целью найти какую-то интересную в быту обвязку для RPi, то наиболее полезными, массовыми и бюджетными выглядят релейные модули. Они позволяют получить полноценные выходы, которые управляются со стороны RPi. С этим дальше можно уже работать и пытаться применить это на практике. Упрощённая суть модуля – перевод слаботочного сигнала с ног процессора через гальваническую развязку на вполне серьёзные релейные выходы, которые можно использовать на практике.

Правда есть нюанс, о котором нельзя забывать. Все данные модули собраны приблизительно по одной схеме (оригиналом, если я не ошибаюсь, являлась плата SainSmart), которая кроме всего прочего подразумевает работу не с RPi, а с Arduino. И те, кто проектировал эту плату, очень заботились о владельцах Arduino. Поэтому на плате стоит модуль LM2596/2576, который делает из 12VDC на входе платы 5VDC, и дальше пытается подать их в управляющую цепь, через которую всё это счастливо попадает на RPi. Для Arduino это отличный вариант внешнего питания! А для RPi – нет. Некоторое время RPi ещё мучается, но потом всё-таки погибает, поскольку нормальное напряжение на его ногах 3.3VDC. Поэтому, прежде чем использовать данные релейные модули с RPi нужно оторвать одну ногу от LM2596, что приведёт к тому, что управляющая цепь будет питаться только со стороны RPi и работать будет прекрасно и без косяков.

Есть один нюанс подключения релейной платы к RPi в изготовлении волшебного шлейфа. Кто делал, тот поймёт насколько это странное решение. Но в общем – шлейф работает годами без каких-то нареканий.

Вот его схема.

Но хоть это и прекрасный модуль (пусть даже и со своими недостатками), но это модуль выходов. А как быть со входами? Ведь возникает необходимость не только управлять чем-то, но и собирать данные с внешних устройств. С одной стороны – это можно решать напрямую. То есть, поскольку часть это не силовая, то можно просто раскидывать контакты с RPi по объекту и дальше с ними работать. В теории работать должно отлично. Но где-то в глубине моего сознания мучается мысль о том, что в подобном варианте реализации возникает большое количество подводных камней, связанных с тем, что провода могут быть раскиданы на достаточно большое расстояние и на них могут появиться наводки от силовых проводов. И эти наводки могут иметь уже куда большее напряжение и как к этому отнесётся RPi не ясно. Точнее, наверное, ясно – почти наверняка оно сгорит достаточно быстро.

Но найти в природе модуль гальванической развязки входов мне не удалось. Нет, теоретически какие-то решения в той или иной мере встречаются, но они все какие-то очень странные и очень дорогие. И в реальности трудно применимые.

Сдавшись в какой-то момент, я принял волевое решение делать свой модуль входов. Опыта у меня не было никакого, но первая попытка была предельно успешной. На ней построено несколько объектов и нареканий не было никаких.

Декабрь 2015 года. Первый прототип.

Это, собственно, он же, но в собранном состоянии.

Прекрасный модуль. Все платы этого типа служили мне верой и правдой три года. Ни разу ничего на них не выгорело и сбоев тоже не было. Суть модуля была предельно проста – 24 GPIO с RPi выводились на выходы герконовых реле, которые в свою очередь управлялись от отдельного блока на 12VDC и отлично себя чувствовали.

Прошло время, проекты немного разрослись. Стало странно смотреться, когда на одном объекте было установлено 7-8 RPi, каждый из которых управлял своей платой входов или выходов. Смотрелось странно, но поделать толком ничего было нельзя. Нормальных GPIO на борту RPi всего 24. И к ним удавалось подключить или 24 входа, или 16 выходов. Небогато, хотя в целом не так уж и мало.

Какое-то время назад удалось найти более оптимальное решение. Оказалось, что существуют модули на базе MCP23017, которые позволяют без особых сложностей увеличить количество GPIO на борту RPi. Ну вот, например, прекрасный модуль на 32 порта (2*16). Да, он тоже не идеален и требует некоторой доработки напильником, но с его помощью один RPi легко готов управлять уже 128 портами. Что, приблизительно, в 8 раз больше, чем было до него.

Платы релейных выходов удалось на MCP23017 переключить элементарно, только немного подчистив дорожки на IO PI Plus. А вот плату входов переключить было почти невозможно, поскольку её распиновка подразумевала только прямое подключение к GPIO RPi. Так что нужно было переделывать плату заново.

Тут мне показалось, что космические корабли уже давно бороздят и поэтому пора переходить на SMD и оптроны. Мои познания в радиоэлектронике были уже на грани, поэтому я обратился за помощью в проектировании подобной платы на каком-то сайте фриланса. Бюджет мероприятия был небольшим, но после кучи согласований и нервов я получил схему в Altium, которую можно было слегка доделав, отдавать в производство. На этом этапе косяков не возникло, всё вроде прошло благополучно.

Но когда готовая PCB попала ко мне в руки нужно было начинать монтаж – я понял, что это находится за гранью моих способностей. На плату нужно было смонтировать 160 SMD-элементов размером 0805 и ещё 8 SMD-микросхем оптронов по 16 ножек. Нет, нельзя сказать, что я не попытался. Но делать это паяльником с моей аккуратностью и моим счастьем оказалось невозможно. Элементы уплывали и слипались. Зазор между соседними контактными площадками был сильно меньше миллиметра и нужно обладать неслабым талантом и опытом, чтобы это нормально смонтировать.

Я решил, что это почти тупик. Нужно было искать другое решение. Решил попробовать бытовую духовку. Кажется, на 240 градусов. Теоретически – это возможно. Первая попытка закончилась не очень удачно, но в этом был явный косяк китайской паяльной пасты. Подвела явно она. Вторую попытку уже делал на пасте Kester. С ней всё получилось на порядок лучше.

Но что значит лучше… Это нереально мучительно расставить 168 микроскопических деталей, перед этим ещё и нанеся 168 кусочков пасты шприцем. Наверное, нужно было заказать трафарет, но для первого в жизни заказа платы для SMD (и второго в жизни вообще заказа PCB) это был перебор.

Короче говоря – да, в духовке паять SMD можно. Непросто, но можно.

После духовки оставалось подправить паяльником пару элементов и можно было уже пользоваться. В целом почти нигде не накосячено, вроде даже завелось на объекте и живёт. Но через пару дней на первом же порту сгорел индикационный диод. Перестал гореть. Но, спасибо ему, не перестал пропускать через себя ток. Схема была сделана так, что диод находился в цепи и при его полном выгорании цепь должна была отключиться. Но тут он просто перестал гореть. Странно это. Диод, который защищён резистором в 4.7k, по заверениям знающих людей должен служить вечно. Единственный причина случившегося, которую удалось придумать – перегрев диода в печи при пайке. Да, и если долго читать манул на диод, то там будет написано, что не так его нужно впаивать. Но это было понятно и без мануала.

Во всей этой плате меня ещё сильно беспокоило то, что ток срабатывания оптрона почти нулевой. Какие-то помехи и наводки могли, по моим представлениям, вызвать ложно срабатывание. От специалистов я получил рекомендацию поставить в цепь конденсатор в 10nF, но меня всё равно смущало подобное решение.

В какой-то момент мне пришло в голову заказать у кого-нибудь сборку этой платы. Но конкретного кандидата не было. Опросив тех, кто в теме, я нашёл людей, которые были готовы взяться за сборку. За сборку платы попросили 4800 рублей. За штуку. Это не вручную, а на каком-то мегастанке, который сам всё это припаяет. $70 за штуку. Диалог не клеился…

Да, конечно же можно было бы заказать эти платы вместе со сборкой у китайцев. Но у меня на столе уже лежала пачка готовых PCB, и хотелось собрать именно их. Ну не отправлять же из в Китай на сборку? :) Так что если заказывать у китайцев, то нужно было что-то менять в лучшую сторону…

Ну и окончательно отказаться от продолжения этой бесперспективной затеи я решил после того, как понял, что конструкция на оптронах не даёт мне возможности работать с коммутируемым плюсом или с коммутируемым минусом на выбор. В некоторых случаях это оказалось достаточно полезным, а городить внешнее непонятно что, для перехода их минуса в плюс – было некрасиво.

И я сдался. Решил переделать старую плату на новый лад.

Отличная получилась плата. От самой первой версии её отличает немногое.

1. Размеры. Она стала в два раза уже, при том что вместо 24 портов на ней теперь 16.

2. Самозажимные клеммники.

3. Возможность работы как с коммутируемым плюсом, так и с коммутируемым минусом.

Как раз сегодня она приехала с производства и я решил о ней написать. Похвалить её и похвалиться ею. Заработала она без косяков с первой попытки. Есть небольшие косяки в шелкографии, но их, я думаю, в следующий раз исправим.

Цена реле на плате в районе $7, диоды и резисторы думаю ещё около $2, клеммники $5. $9 половина IO Pi Plus (на ней 32 порта). Итого цена в районе $25-$30 без работы. За 16 полноценных, красивых, защищенных цифровых входов. Чудо, а не устройство. :)