Светофор для макета железной дороги: три светодиода, кнопка переключения режимов, зуммер. Одиннадцать деталей, вечер работы. Собрал по картинке из блога — и получил три дня отладки: кнопка срабатывала через раз, красный светодиод не горел вовсе, зуммер пищал вместе с кнопкой в обоих режимах. Код я переписал четырежды и один раз всерьёз собирался заказать новые детали.
Спасла бумага. Я выписал все узлы схемы списком, присвоил каждому столбец макетки и собрал заново — за сорок минут, вычёркивая узлы карандашом. Кнопка «через раз» оказалась ножкой, воткнутой мимо столбца, мёртвый красный — ножкой резистора в чужом узле, а зуммер — контактом кнопки, повисшим в воздухе без подтяжки. Ни одной правки кода: схема была правильной, монтаж — нет.
Разбираем порядок, при котором такое ловится за минуты, а не за вечера: нетлист, назначение столбцов, шины, якорная деталь, по одной детали с вычёркиванием, питание последним. Перевод схемы в узлы мы уже делали в уроке про обозначения и узлы — здесь применяем его к проекту целиком.
Шаги переноса: от бумаги до питания
Шаг первый — нетлист на бумаге. Каждый узел схемы получает строчку: номер, участники, будущий столбец. Пять отверстий в столбце — ограничение жёсткое: если в узел собирается больше выводов, дели его на два столбца и связывай перемычкой. На этом шаге видно всё заранее: нехватку столбцов, узлы-перекрёстки и детали, у которых слишком много связей. Полный процесс чтения схемы мы прогоняли в уроке про чтение схем.
План столбцов рисуй прямо на распечатке: узел N2 — столбец 10, узел N3 — столбец 12. Назначай их с запасом по обе стороны от якоря: резистор занимает два узла, светодиод ещё два — и к краю платы подступаешься незаметно. Я однажды распланировал вплотную, и кнопке не хватило столбца: пришлось переносить половину сборки. Десять минут с карандашом дешевле, чем переустановка расшатавшихся ножек.
Шаг второй — шины. Минусовую рейку соединяю с GND платы, плюсовую с 5V, и если плата большая — перемычка между половинами рейки. Разрыв посередине — самая частая причина «полосатой» сборки, когда левая половина работает, правая молчит; мы его ловили ещё в первом уроке про макетку. Сразу после шин — прозвонка омметром: между красной и синей рейками не должно быть нуля, от GND до любого конца синей — около нуля.
Шаг третий — якорная деталь. Это деталь с наибольшим числом связей: модуль, микросхема, клеммник. Её сажают по центру и от неё раскладывают соседние столбцы. Якорь ставит геометрию всей сборки, поэтому его место выбирают до первых перемычек, а не после — переставлять его дороже всего.
Шаг четвёртый — детали по одной. Вставил деталь — вычеркнул её узлы из списка. Следующая. Список — карта, плата — территория, и вычёркивание не даёт забыть узел, который на бумаге есть, а в железе повис. Пятый шаг — сигнальные провода к пинам: короткие, по цветам из урока про перемычки — чёрный только в минус, красный только в плюс, сигнальные — свой цвет на каждую цепь.
Шестой шаг — ревизия глазами по узлам, а не по деталям: идёшь по списку и для каждого узла отвечаешь, что в этом столбце должно лежать и лежит ли. Седьмой — питание, всегда последним и всегда после прозвонки: рейки между собой, рейки к пинам, детали на землю. Ритуал из урока про короткое замыкание тут обязателен: питание — красный провод, который втыкается последним.
Время на примере из сцены: нетлист с планом — десять минут, сборка пульта — сорок, ревизия — пять. Против трёх вечеров слепой сборки. Разница не в скорости рук, а в том, что ошибка ловится на бумаге, где она ничего не стоит, а не в железе, где стоит вечера.
| Узел схемы | Кто в нём | Место на макетке |
|---|---|---|
| N1: пин 12 — R1(1) | выход 12 и левая ножка резистора | столбец 8 |
| N2: R1(2) — LED1(A) | правая ножка резистора, длинная ножка светодиода | столбец 10 |
| N3: LED1(K) — минус | короткая ножка светодиода | столбец 12, провод в синюю рейку |
| N4: пин 11 — R2(1) | выход 11 и левая ножка второго резистора | столбец 16 |
| N5: R2(2) — LED2(A) | правая ножка резистора, анод второго светодиода | столбец 18 |
| N6: LED2(K) — минус | короткая ножка второго светодиода | столбец 20, провод в синюю рейку |
| N7: пин 2 — кнопка — минус | выход 2, контакт кнопки, второй контакт в минус | столбцы 24 и 26, кнопка перекидывает |
Плохой контакт выглядит как баг в коде
Самая коварная категория ошибок — не перепутанные узлы, а шатающиеся контакты. На макетке они выглядят как глюки программы: кнопка срабатывает через раз, данные приходят нулями, сервопривод дёргается. Подозреваешь скетч, правишь логику — а в это время ножка в столбце болтается, потому что вывод детали оказался тоньше пружины лепестка или провод выдернулся на миллиметр.
Отсюда моё правило трёх узлов: раньше, чем открыть IDE, прозвони три последних смонтированных узла. Если сборка шла по списку, «последние» известны точно. Прозвонка — режим омметра, зуммером на скорость: каждый узел должен звенеть от первой точки до последней. У меня это занимает меньше минуты, и именно она отгрызла большинство моих «багов в коде». Мультиметр для этого подходит любой — режимы разобраны в уроке про мультиметр.
Есть и обратная ловушка: прозвонка пищит, а контакта всё равно нет. Сопротивление в единицы ом зуммером неотличимо от нуля — но для линии на 2 ампера это уже лишние вольты из прошлого урока. Поэтому спорные узлы смотри в режиме омметра, а не только пищалки: цифры честнее звука.
Дребезг тоже маскируется под глюк, но лечится иначе: контакт кнопки на макетке замыкается не мгновенно, и скетч видит десяток переходов за двадцать миллисекунд. Отличить просто: прозвони узлы — если всё звонится, а кнопка всё равно «двоит», это дребезг, и место ему в коде с проверкой по millis(). Подтяжка при этом обязательна: висячий вход ловит помехи от рук и соседних проводов, и кнопка «срабатывает» от одного приближения пальца.
// Мигает светодиодами по очереди и печатает кнопку.// Каждый светодиод — свой узел из таблицы переноса.int ledy[2];int knopka = 2; void setup() { ledy[0] = 12; ledy[1] = 11; pinMode(ledy[0], OUTPUT); pinMode(ledy[1], OUTPUT); pinMode(knopka, INPUT_PULLUP); Serial.begin(9600);} void loop() { for (int i = 0; i < 2; i = i + 1) { digitalWrite(ledy[i], HIGH); delay(250); digitalWrite(ledy[i], LOW); delay(250); } Serial.print("klyuch="); if (digitalRead(knopka) == LOW) Serial.println(1); else Serial.println(0);}Когда метод применять обязательно: деталей больше пяти. Меньше — держу схему в голове и собираю напрямую, бумага тратит больше времени, чем сборка. Граница честная: пульт из сцены я пересобрал за сорок минут вместе с выписыванием нетлиста — на одиннадцати деталях бумага уже экономит, на трёх ещё нет.
Про якорную деталь мнения расходятся: некоторые сначала втыкают все резисторы. Я ставлю якорь первым, потому что у него самый длинный список связей и его переставлять дороже всего; резисторы и провода подстроятся под него, а не наоборот. Если якорь — модуль с двумя рядами выводов, помни про канавку: ряды должны лечь по разные стороны.
И последнее: список узлов сохраняй. Через месяц, когда захочешь перенести проект с макетки на настоящую плату — паяльник ждёт в уроке про пайку, — этот список станет готовым заданием для разводки. Бумага, которая спасла вечера, сэкономит и следующие.
- 1. С чего начинается перенос схемы на макетку по методу урока?
- 2. Что подключают самым последним шагом?
- 3. Кнопка срабатывает через раз. Что проверить первым делом?
- 4. Якорная деталь — это...
- 5. Зуммер прозвонки пищит на узле, но под током линия всё равно «глючит». Почему?
- Сначала нетлист на бумаге, потом детали: сборка идёт по узлам, а не по картинке.
- Минусовая шина — первый шаг, питание к рейкам — последний, всегда после прозвонки.
- Якорная деталь — та, у которой больше всех связей: она задаёт раскладку столбцов.
- «Глючит кнопка» — звони три последних узла раньше, чем править код.
- Вычёркивай узлы карандашом: незачёркнутых быть не должно, список сохраняй для будущей платы.
Частые вопросы по теме урока
- С чего начинается перенос схемы на макетку по методу урока?
- Сначала список узлов с назначенными столбцами. Бумага ловит нехватку столбцов и узлы-перекрёстки за минуты, железо — за вечера. С втыкания якорной детали
- Что подключают самым последним шагом?
- Питание — всегда после прозвонки и ревизии. Тогда короткое замыкание не успевает случиться прямо во время сборки. Питание к рейкам
- Кнопка срабатывает через раз. Что проверить первым делом?
- Плохой контакт имитирует глюки кода. Правило трёх узлов: прозвони последние смонтированные узлы раньше, чем открывать IDE. Контакт кнопки: узел, подтяжку, лепесток
- Якорная деталь — это...
- Якорь задаёт геометрию сборки: у него больше всех связей, переставлять дороже всего, поэтому он встаёт первым и по центру. Деталь с наибольшим числом связей
- Зуммер прозвонки пищит на узле, но под током линия всё равно «глючит». Почему?
- Звук ловит только грубый обрыв. Для силовых линий смотри цифры в режиме омметра: лишний ом при двух амперах — уже потерянные вольты. Единицы ом сопротивления зуммер не отличает от нуля