среднепост, фоток к сожалению, не будет
Закончилась третья рабочая неделя от начала предфинальной отладки электроники и с ней закончилась сама отладка.
Проясню: отладка - это та часть работы, когда у тебя на руках появляются частички того, над чем ты архитектурно и теоретически работал длительное время, и оно впоследствии на практике должно стать единым целым, а самое главное, рабочим и функционирующим; и программа-минимум - просто собрать из этого рабочую версию электроники/софта/конструктива с минимальной "доработкой напильником", программа-максимум - выявить все потенциальные проблемы и заложить пути отступления на следующие ревизии. Если оценивать совсем грубо, отладка - это работа над ошибками.
Я работаю инженером-схемотехником, и мои прямые обязанности заключаются в проектировании печатных плат. Я рисую принципиальную схему (резистор + конденсатор = фильтр нижних/верхних частот, уже некоторая схема), потом эту схему переношу с помощью CAD-систем на печатную плату, это называется разводка. Далее полное сопровождение - заказ компонентов под монтаж, иногда сам монтаж, заготовка оснастки, отладка, передача далее. Конечно, это не полный список выполняемых работ, но это сейчас не важно. За уже 3 года работы здесь я развел, по моим скромным оценкам, 70+ плат (столько в нашей базе данных), и если прикинуть сколько из них были успешными с первого раза (без учета самых простых, коих может треть-половина), то наберется от силы 3-4. Дело не только в уровне компетенции (хотя это один из весовых коэффициентов сложной функции), сюда входят ошибки невнимательности, неправильной архитектуры (считай некорректная логика), ошибки монтажа, даже ошибки, вызванные действиями коллег (использование компонента из базы данных, добавленного в нее с ошибкой), так что если разрабатываешь что-то с плавающими ИТ (исходными требованиями), нужно быть готовым к изменениям и закравшимся ошибкам.
И это нормально. Особенно во времена повсеместного использования различных модных методологий, например Scrum. Для несведущих: Scrum подразумевает обильное общение с заказчиком и предоставление на ранних этапах разработки некоего MVP (Minimal Version of Product), ознакомившись с которым заказчик может внести корректировки: "слишком желтое", "хочу чтобы свистело и гудело под водой", "хочу чтобы на задней крышке был туз пик"; таким образом убирается НЖЯ (нежелательное явление) "после нескольких лет разработки заказчик получил совсем не то, что он хотел, а переделывать поздно".
Так вот, 3 недели назад началась отладка самого сложного элемента в нашей сестеме - сменного модуля.
упрощенно и крптко,
1. сначала было КЗ. Короткое замыкание не так страшно, когда обеспечено грамотное защитное заземление. Можно повторять бесконечно: нужно более ответственно относиться к электричеству и методам защиты от него. Пусть у вас будет контекстная реклама про дифф. автоматы, пусть они мусолят глаза, взять и организовать хорошую качественную систему электроснабжения - стоящее дело.
Мой преподаватель по физике рассказывал, как погиб его друг, доктор технических наук. Это было в советское время, года не запомнил, недалеко от дома произошел обрыв ЛЭП, кабель упал на землю, во дворе играл его маленький ребенок, подбежал, его поразило током от шагового напряжения (гуглится). К ребенку подбежала испуганная мать и получила разряд шаговым напряжением. Подбежал отец семейства (паника против звания доктора наук) и тоже получил разряд шаговым напряжением. Все 3 человека погибли.
Мое КЗ никудышное - по 12 Вольтам, и источники питания с ограничением, поэтому просто загорелась красная лампочка неисправности.
Причина: некорректное преобразование контактных групп по типу ABC-ABC в AB-CA-BC (невнимательность)
2. Потом был сгоревший светодиод. Вот тут запахло жженой изоляцией или тип того. Это уже чутка интересно) главное светодиод после оплавления и починки выжил и продолжил гореть, я бы на это не поставил.
Вот тут как раз можно сказать, что проблема была потенциальной на этапе проектирования; это всегда приятно: если не работает, то хотя бы был к этому готов и есть альтернативный путь
Причина: у единиственного из всех отверстий на плате прямо под ним расположился металл конструктива, защитная маска оказалась слишком тонкой и светодиод без токоограничения встал между 5В и 0В, ему стало нехорошо.
3. Потом было отсутствие прошивки. Не прошивался микроконтроллер и все тут. На это я потратил ооло недели, и результатом остался доволен: комплексная ошибка. Комплексные ошибки отвратительны из за того, что когда проверяешь какую-либо теорию, и ставишь эксперимент, ты чинишь только часть проблемы, а все заработает, только при устранении всех причин. 00, 01, 10 - нерабочие состояния, 11 - рабочее состояние. В моем случае оказалось 111.
Причины: невнимательность, неисправное поведение микросхемы, неожиданное поведение другой микросхемы.
4. Потом были ошибки компонентов и монтажа. Знаете, полупроводниковая электроника в данный момент такая, что на выходе с завода на 10000000000 поставленных условных транзисторов будет бракован 1, так как высокое качество выходного контроля и технологичность, но когда он встает на место использования, он сильно подвержен такому фактору как статика.
Сел на кресло посмотреть что там во флудилке написали, попил чайку, встал, коснулся платы и чувствуешь как немного неприятный для тебя и смертоносный для электроники разряд пошел искать путь наименьшего сопротивления, чтобы убежать на защитное заземление. Благо, если то, куда "выстрелил" хорошо заземлено, если нет - вперед, в поисках пробоя и нового КЗ.
Причина: несвоевременное заземление всей отладочной системы, убито пара компонентов платы, что привело к нарушению функционала.
5. Потом был синий экран смерти. Если делаете что-то с USB-hub`ами, внимательно разберитесь с архитектурой и производителями.
6. Потом было обнаружено еще пара-тройка ошибок внимательности, но они неинтересны и легко устраняются.
хм, если так глянуть, да это вроде короткий список проблем, где челлендж? а вот я понял, что просто не могу рассказать о всем наборе без контекста, а это уже будет за пределами коммерческой тайны. пусть будет односложно: немонтажепригодность, взаимовлияние, нетехнологичность, фальш-недопродуманность, сверхподготовительство и пр.
В целом, отладка крайне важна для выявления всех своих невзгод, и вся ее прелесть в том, что с одной стороны, неприятно обнаруживать глупый ляп, или какую-то простую вещь (ведь ты это сотни раз делал, почему ошибся тут?), с другой - очень приятно, что ты поймал этот баг, и его больше не будет, и на демонстрации перед заказчиком не нужно будет краснеть за какой-то косяк или нестабильную работу. В этом одновременная неприятность и прелесть данного процесса, и если спросить чем я люблю в своей работе больше всего заниматься - это проектировать и отлаживаться.
Эти полмесяца пролетели очень быстро, я был полностью погружен в окружившие меня проблемы, мало играл в покер, и на этой неделе довольно сильно утомлен (цензурная аналогия моему истинному состоянию). Так пусть этот этап закончится на хорошей ноте, по итогу я получил кучу опыта, не потерял сроки (потерянные уже давно), и готов сделать последний рывок, и завершить прекрасный проект. Впереди внесение изменений, заказ платы (ожидание месяц) и финальная отладка, ориентировочно в конце ноября). Во время ожидания месяц возьму недельный отпуск и погружусь в мир 4-х карт. Я пропустил сезон Алексея на Mastermind, но очень хочу это увидеть и плодотворно поработать.
В заключении, мой пост направлен на то, что ошибки - это нормально, и нужно относиться к ним как к этапу пути, и они есть вкупе с мотивацией и (добавьте сами) наша движущая сила. Мы можем изменить цену ошибки, инвестируя время или меняя соотношение risk/reward, где reward - опыт за ошибку.
P.&B.S. Из меня редкий и плохой философ, по настроению