Пайка модулей uni_v2
Почти всю зиму я провёл за компом, программируя автоматизацию в автобусе. Пареллельно с этим, потихоньку, спаял необходимый мимимум модулей, которыми буду управлять системами внутри. В первую очередь, дело касается отопления. Просто удивительно, как много сил занимает решение этой проблемы!
- Видео-версия
- Требования к ноде управления
- Как устроена плата
- Впихнём невпихуемое
- Как много компонент?
- Конечный вид устройства
- Скока стоит?
- Отрефлексируем – что можно было сделать лучше
- Вывод
После длительного забега в программировании было очень здорово обратиться к рутинной механической работе! Когда я уже обо всём подумал (какой же я молодец!), и надо только втупую следовать своим же старым указаним, аккуратно и внимательно всё собирая, и тестируя.
У меня не устоялось разговорного понятия, которым я определяю это устройство. Проектное имя: uni_v<version>
. uni
от uni versal. В тексте и “на пальцах” я её называю:
- Нодой
- Модулем
- Микроконтроллер
- Устройство
А как бы вы назвали эту мелкую смешную штуку?
Видео-версия
Как всегда, публикую видео-версию этой статьи. В этот раз два видео – тайм-лапс с пайкой одной из плат, и второе длинное с говорением.
Тайм-лапс пайки
Статья-самосказ
Требования к ноде управления
Мне хотелось от неё следующее:
- Имела два аналоговых канала для двух датчиков температуры
- Могла измерять напряжение бортовой сети
- Иметь адаптацию под измерение произвольного диапазона напряжений
- Подключение до трёх кнопок. Как подтянутых к питанию 24V, так и подтянутых к земле.
- Общение по CANbus
- Умение коммутировать ШИМ на частоте $>40kHz$ (это за моим пределом слышимости) с током до 5А. Адаптирован под питание индуктивных нагрузок – поэтому, полумостовой1.
- Для альтернатора – все 5А нагрузки
- Для моторов отопителей – мотор потребляет в пике 2.5А
- Помпа отопителя – большая потребляет до 5А, а малая до 2А
- Дискретно коммутировать нагрузку (вкл/выкл) с током не менее 2А
- High-side (когда мой девайс выдаёт положительное напряжение) – для соленоидов пневматических дверей
- Low-side (когда я подключаю нагрузку под напряжению к земле, чтобы через неё пошёл ток) – для прочих устройств
- Минимальные расходы по питанию
- Линейные преобразователи не подходят, так как суммарное потребление составляет десятки мА. При напряжении бортовой сети 24В каждая нода будет “сжигать” пару сотен мВт электричества.
- У меня этих нод до 15 штук, постоянно включённых. Суммарное потребление будет здорово разряжать батарею. Длительные стоянки станут проблемой.
- Линейные преобразователи не подходят, так как суммарное потребление составляет десятки мА. При напряжении бортовой сети 24В каждая нода будет “сжигать” пару сотен мВт электричества.
Как устроена плата
Оказалось, что мне надо несколько уровней напряжения:
- Силовые выходы будут выдавать прямо бортовое напряжение +BATT. Оно 20..30В, волатильно. Оно будет подаваться прямо на нагрузку.
- ~12V – для коммутации двух транзисторов на ШИМ-выходе. Такое высокое напряжение, +12..+20В, минимизирует нагрев транзистора.
- =5V – для CANbus трансивера.
- =3.3V – для питания микроконтроллера, и аналоговой измерительной части.
Впихнём невпихуемое
Коробочка, в которую я хотел вписаться, довольно маленькая – 50х80 mm.
А микросхем и функционала с ответстиями под выводы проводов довольно много! Поэтому, трассировка была довольно интересным занятием! Потребовалось четыре итерации, пока у меня не получилось всё разместить так, что я сказал “И это хорошо!”
Как много компонент?
Это была целая коробка из лент с компонентами. Выглядят они все примерно так.
Перечень компонент оказался довольно компактным – всего пара десятков наименований. Я считаю, что это довольно хороший результат – в каждом месте старался переиспользовать уже имеющиеся номиналы. Просто обходится, скажем, не одним резистором, а подключить несколько таких, чтобы получить нужное сопротивление. Всё равно такие дешёвые пассивные компоненты продают количеством от 200 штук, тогда как на 15 нод мне их может требоваться только 60. Так что, не жалко. Запаиваются они тоже довольно легко, поэтому много времени это не стоило.
На самой плате расписано какой компонент куда впаивать. Только не полное наименование, а всякие абстрактные R10
, C16
, U7
. Так как иначе никакого месте не напасёшься для полного имени STM32F042F6
.
Остаётся обустроить рабочее место, и приступить к работе! Удивительно много мелочей требуется для работы над этими мелкими негодниками.
Конечный вид устройства
Вот так оно выглядит. Довольно хорошо, как по мне! Компактный такой паучок. Новые провода $0.35мм^2$ здорово помогли сделать всё ещё более компактным!
Скока стоит?
Базовая версия, с питанием, CAN-трансивером и микроконтроллером, плата стоит около 1 круб. Дооснастить её до полного функционала стоит ещё почти тысячу.
Я совсем не ожидал таких цен, когда начинал! Ведь, идёшь на сайты – и там компоненты по 40-200 рублей стоят. А когда начинаешь рисовать принципиальную схему – тут надо другое питание, здесь надо побольше чего-то, тут нужно несколько однотипных микросхем. И, вот, набегает приличная сумма! А потом ещё трассировка, и заказ платы. При заказе её цена может меняться в разы, в зависимости от сроков исплонения.
Отрефлексируем – что можно было сделать лучше
Что можно было сделать лучше? Давайте подумаем!
Потенциометры аналоговой части
Для аналоговой части я зазря сделал ставку на потенциометр. Тем более такого большого сопротивления – 100кОм. Я брал такой большой номинал для измерения напряжения бортовой сети. Но, в большинстве мест, мне надо измерять температуру с помощью терморезистора на 10кОм. Для него оптимальным является делитель полным сопротивлением 6.7кОм. Рассчёт можно увидеть в отдельной статье. Они дорогие, и чёрта-с-два ты добьёшься от них точной и стабильной настройки! Лучше ставить два резистора. Даже если это будет 5% точности – ты всё равно будешь победителем! Небольшая калибровка, и мы имеем как минимум 3 значащих цифры в измеренной температуре!
Больше входов/выходов!
Появилось ощущение, что хочется побольше входов/выходов. Для этого стоит использовать более крупный корпус микроконтроллера с LQDFP48 с полусотней выводо вместо имеющихся 20-ти у TSSOP20. Я пока не столкнулся явно с недостатком выводов – мне удалось изначально очень точно оценить свои хотелки и применение!
Однако, мне хочется вставить одну такую коробочку в панель приборов – а там уйма дискретных входов. А у кухни с котельной – много аналоговых входов. И хотя бы дискретных выходов низкочастотных хочется побольше. Чтобы можно было побезумствовать совершенно развязанными руками.
Необязательный ОУ
Для термистора, и ещё пары применений, достаточно только входного делителя. Второго делителя и ОУ не требуется. Но сейчас без установки ОУ я никак не смогу доставить напряжение с первого делителя ко входу микроконтроллера – только если паять поверх платы отдельный проводок.
Надо добавить перемычек, чтобы можно было подключать вход первого делителя прямо на аналоговый вход МК.
Больше индикаторов
Как минимум – добавить один-два светодиода, чтобы можно было между ними разделить индикацию разных фукнций. Например, активность по CAN, текущую скважность ШИМ, и текущее состояние системы с кодом ошибки.
Как среднее – цифровой сегментный индикатор. Это как 8 светодиодов в одном, из которых можно зажечь конкретную цифру.
Как максимум – добавить ЖК дисплей. Необязательно на все – только на самые нагруженные, и которые регулярно доступны для грозного взора. Остальным достаточно оставить один-три светодиода для пусконаладки.
Более крупные компоненты
В первую очередь речь про конденсаторы в типоразмере 0603 – 1.6х0.8мм. Работа с ними – это взгляд в бездну, стоя на краю. Захватывает! Но, очень скоро, нервы сдают, и начинаешь от них шарахаться.
Резисторы приемлемо паяются в размере 0805.
Микросхемы стоит с торчащими как можно дальше лапками – TSSOP20 регулярно слеплял лапки припоем. Но не под отверстия – монтаж в отверстия занимает уйму места. И компоненты такие стоят гораздо дороже, чем SMD!
Вывод
Ну, тут вообще не жалею о пройденном пути! Для меня всегда было загадкой множество нюансов того, как именно происходит изготовление электроники. Теперь, у меня есть понимание как выполняется тот или иной этап работы, и сколько это может стоить. Теперь я смотрю на всё это совсем иначе.
На самой заре работы с электрикой я возился с пайкой на макетной плате. Чёрта-с-два я бы сделал на ней хотя бы вполовину столь же крутое, не перейди я на поверхностный монтаж с готовой платой! Сама наивность!
-
“Полумост” означает, что положительное питание к мотору мы подаём одним транзистором. Затем, во второй полупериод ШИМ, мы его отключаем, и коммутируем положительный вывод мотора на землю. Таким образом, энергия электрической индукции не генерирует высокое напряжение, а продолжает работать на совершение механической работы. Такого эффекта обычно добиваются подключая диод, но от него я решил отказаться из-за относительно больших тепловых потерь на нём. Транзистор же почти не обладает сопротивлением, и, потому, не будет на себе сжигать никакого электричества. ↩︎