Доброго времени суток, Хабр!
Хочу затронуть тему тестирования готовых изделий. Что такое стенд, что он должен в себя включать и почему же тестирование необходимо?
Введение
В этой статье я расскажу о реализации одного из способов функционального тестирования готовых модулей на производстве (и не только). Справедливости ради, стоит заметить, что существует несколько видов тестирования партий устройств. Выбор конкретного метода зависит от нескольких критериев: количества устройств в партии, особенностей производства, выводов соответствующих интерфейсов, особенностей приемки, и т. д. Давайте об этом немного подробнее, но не углубляясь в детали, так как статья не об этом.
Количество устройств в партии. За время свой работы в области электроники я был на нескольких предприятиях по монтажу печатных плат. Условно разделим их на два типа: мелкосерийное и серийное производство. Безусловно, завод, занимающийся мелкими сериями, почти всегда может собирать крупные партии, и наоборот. Приведу несколько конкретных примеров.
На одном заводе было установлено 3 линии по монтажу печатных плат, а также отдельный цех «отверточной» сборки (когда платы устанавливаются в корпуса, прошиваются и тестируются). Каждая линия адаптирована под конкретное устройство, и сборка выполняется непрерывно. Это относится к большим партиям электроники. Если не говорить о процессе запуска производства новой продукции (это отдельная тема), то тестирование происходит в несколько этапов. Кратко. Методом автоматической оптической инспекции контролируется количество паяльной пасты, положение установленных и запаянных компонентов, качество пайки, наличие коротких замыканий (образованных припоем) и т. д. Выборочно несколько плат просматривают на рентгене, чтобы проверить качество установки BGA компонентов. Отбракованные платы проходят визуальный осмотр монтажниками с целью нахождения и устранения дефектов (если это возможно). Был забавный случай, когда транзисторы в корпусе SOT23 на платах были повернуты на 180 град (соответственно не запаяны, а платы отбракованы). Далее платы в специальных паллетах едут в отдельный цех, в котором происходит сборка, тестирование, прошивка и упаковка. Это порядка 15 рабочих мест с конвейерной лентой. Выполняется установка платы в корпус, заливка тестовой прошивки, проверка интерфейсов в несколько этапов. Например, тестовая прошивка, на выход звука выдает тестовый сигнал sin, на одном из рабочих мест подключают осциллограф в разъем и фиксируют амплитуду и форму сигнала, следующий тестировщик оценивает качество картинки на тестовом изображении подключив дисплей, и т. д. В конце – тест на пробой, заливка рабочей прошивки и печать наклейки штрих-кода. Единичная упаковка. Да-да, и так каждое устройство на огромных партиях. Упаковка в транспортировочную тару (групповая упаковка по несколько устройств в коробке). Далее следует выборочное тестирование. Например, из каждой 20-й коробки (групповой упаковки) вытаскивают одно изделие, проверяют комплектность, качество сборки, работоспособность и т. д. Данный случай не предполагает тестирование стендом, так как все обкатано. Кратко не получилось, ну и ладно.
Также были заводы с 1 – 3 линиями, на которых выполнялся монтаж различной аппаратуры мелкими партиями для различных заказчиков. Имеется в виду, например, монтаж 50 устройств одного типа, смена элементной базы, монтаж 1000 устройств, затем снова 100 новых устройств, и так по кругу. Различные платы (с BGA, на алюминии, с разным количеством слоев и т. д.) и каждый раз новый набор компонентов, подготовка производства, отладка техпроцесса и т. д. После сборки происходит визуальная инспекция и рентген (по необходимости). Упаковка. Вот этот вариант как раз нам интересен. Был случай, когда нам собрали десяток устройств и перепутали номиналы резисторов (в станок установили не ту катушку). Один раз горели синем пламенем якобы супервизоры питания, то есть в катушке со склада оказались «намотаны» другие компоненты. Это просто человеческий фактор и от этого никто не застрахован.
Особенности производства. Как известно далеко не все производства паяют мелкие партии устройств (до 1000 шт.) волной. То есть штыревые компоненты устанавливаются монтажником. Тут могут оказаться не пропаянные выводы и вышедшие из строя компоненты от перегрева и воздействия статики. Снова случай из практики – перевернутые (анод/катод) SMD светодиоды 0402. Глазами увидеть ошибку не получится, не подав питание на плату. Такие платы лучше прогнать через стенд.
Вывод соответствующего интерфейса. Имеется в виду вывод тестовых точек для тестирования на игольчатом стенде, периферийное сканирование (JTAG), внутрисхемное тестирование («летающие щупы») и т. д., но это не наш случай.
Особенности приемки. В нашем случае модуль входит в состав изделий и может выполнять различные функции. В конечном устройстве могут быть задействованы не все интерфейсы. То есть существует, например, 10 устройств, в состав которых входит процессорный модуль. На одних задействован LVDS и CAN, в других MIPI и UART, и т. д. Таким образом, чтобы проверить все интерфейсы нужно какое-то универсальное устройство, на котором можно произвести тестирование всего и сразу.
Итак, для чего нужен стенд.
Подача питания. По возможности проверка всех интерфейсов с выдачей отчета о тестировании.
Прошивка тестового и релизного программного обеспечения. В нашем случае происходит прошивка u-boot на SPIFlash и Linux на eMMC.
Поиск и устранение неисправностей, связанных с монтажом модуля (платы). Необходима возможность оперативного доступа к интерфейсам и источникам питания (DC/DC, LDO).
Постановка модуля на длительное нагрузочное тестирование. Особенно актуально, если вносятся доработки в плату, например, замена DC/DC снятого с производства, либо изменение стека платы (что происходит довольно часто).
Отладка программного обеспечения в части графики, USB, SATA и других интерфейсов, выведенных на плате. Может понадобиться, если основная плата находится на стадии разработки.
Желательно, чтобы стенд был транспортабелен (нам дважды приходилось его отправлять самолетом на производство).
Разработка стенда
Первая версия стенда разрабатывалась силами другого инженера и ее я рассматривать в статье не буду. Были учтены недостатки и проведена оптимизация. На серийном модуле нам нужно проверять интерфейсы:
2xLVDS – вывод независимых изображений.
HDMI – вывод изображения с учетом EDID.
Ethernet – получение IP.
MIPI_CSI – работа с камерой.
PCIE – получение ID устройства.
SATA – попытка чтения данных.
2xUSB – обмен данными.
Около 50 GPIO. Так как нам необходимо проверить только корректность монтажа, то интерфейсы: I2C, UART, SPI, CAN, SDIO, SAI, будут опрашиваться как обычные GPIO.
Таких больших плат я еще не делал. Габариты 425х265мм. Очень хотелось разместить три дисплея, чтобы проверять сразу всю графику. Конструктивно стенд состоит из двух плат. Основная плата с микроконтроллером для опроса GPIO и переходная плата под конкретную модель модуля. Имея переходную плату можно будет довольно легко тестировать различные модули (в некоторых случаях даже не меняя ПО) – меняем переходник и все. Помимо дисплеев на основной плате расположена MIPI_CSI камера, модуль PCIE, USB накопитель, светодиоды индикации процесса тестирования и кнопки. На другой стороне установлены SATA HDD и роутер, который выдает IP для теста сети Ethernet.
На переходной плате выведен светодиод питания модуля и пять светодиодов индикации подключения шлейфов. При подключении шлейфов на светодиоды интерфейсов подается GND (так как земельных контактов несколько). Если какой-то интерфейс не проверяется (например, модификация без установки разъема), то устанавливается джампер и светодиод не зажигается. Один модуль, в среднем, тестируется 2-3 минуты – этого времени как раз хватает на распаковку нового и упаковку проверенного модуля.
Сразу оговорюсь, что вставлять FPC разъем еще то удовольствие, но другого варианта практически нет. Можно было выводить тестпоинты на модулях и городить прижимные игольчатые контакты, но эта затея не из лучших. Во-первых, совсем нет места на bottom, во-вторых, там дифференциальные пары. Прошлой версией стенда было оттестировано более 700 модулей и так как разовые партии обычно от 20 до 100 шт. такой вариант оказался самым приемлемым.
Ниже фото стенда с обратной стороны.
Для проверки HDMI я использовал готовый дисплейный модуль. На фото выше видно подключение интерфейса и питания (USB). Под разъем HDMI сделал вырез в плате.
Модуль и микроконтроллер связаны между собой по UART. Для прогона GPIO микроконтроллер последовательно выставляет высокий уровень на выходах и ждет (по UART) подтверждения считанного сигнала от процессора. После окончания тестирования на экранах отображается краткий лог, в котором можно посмотреть протестированные интерфейсы и возникшие ошибки. Полный лог и процесс загрузки и лог ошибок можно посмотреть через консоль на mini-USB.
Еще необходимы некоторые программные доработки, чтобы оптимизировать процесс тестирования с камерой, и сделать переворот экранов LVDS, но в целом получилось неплохо. Толщина платы 1,5 мм, буду устанавливать ее на оргстекло, чтобы можно было транспортировать. Также еще в процессе прижимные планки для дисплеев – буду печатать на принтере. Стенд был разработан еще в 2020 году, но до сборки руки дошли только сейчас, когда увеличилось количество модулей для тестов.
Ранее я разрабатывал стенд для тестирования модулей под пайку на плату. Тоже довольно успешно. Если кому-то будет интересно, то напишу об этом. Для тестирования таких плат уже не получится использовать обычные разъемные соединители, так как их попросту нет на модуле. Нужна прочная фиксация модуля в стенде и хорошее позиционирование с прижимными контактами.
Спасибо за внимание!
Комментарии (12)
StDmitriev
06.09.2022 14:54+2Про тестирование модулей под пайку очень интересно почитать. Как там обеспечить контакт?
the_bat Автор
06.09.2022 17:22+3Напишу статью, если будут еще желающие. Там интересная реализация всего стенда.
VT100
06.09.2022 22:41+1Да, интересно.
На ум приходит "контактный лепесток, как в панельке PLCC". Но это как-то хлипковато выглядит.
Или — 4 гребёнки с pogo-pin приводимые в горизонтальное двение неким кулисным механизмом.the_bat Автор
07.09.2022 12:06Нет - это не PLCC. С pogo-pin долго думал как реализовать, но качественного соединения не получилось бы. Малый размер контактных площадок под пайку не позволит реализовать хорошего соединения и сложно будет позиционировать модуль. Если pogo упереть в полуотверстие пада, то они (pogo) быстро будут выходить из строя так как не рассчитаны на боковой нажим.
checkpoint
07.09.2022 13:50С помощью pogopin-ов. Я пишу статью про наш модуль на СКИФей и оснастку к нему.
the_bat Автор
07.09.2022 14:47На Вашем модуле сделаны вытянутые пады для пайки + отверстия. pogopin самое то.
checkpoint
07.09.2022 20:55Там самое интересное это как запаять почти 200 pogopin-ов, что бы они все стояли ровно "как у волка на морозе". В общем, обо всем расскажу.
the_bat Автор
09.09.2022 11:18Можете попробовать сделать рамку такого типа. В нее вставить pogopin. Я делал нечто подобное, заказывал в виде плат из текстолита, набирая нужную высоту. Если на плате предусмотреть отверстия для позиционирования рамки (и в ней тоже предусмотреть), тогда будет вообще норм. Наносите паяльную пасту, ставите бутерброд и снизу феном.
dvbondarev
07.09.2022 11:37Можете ли подробнее описать, на какой программно-аппаратной платформе у вас реализована система сбора данных стенда?
the_bat Автор
07.09.2022 11:48На модулях крутится Linux. Процессоры iMX6D и iMX6Q. На стенде микроконтроллер STM32F103VCT6. Долговременного сбора данных нет. Если тест долгий то просто повторно запускаем процесс тестирования, чтобы проверить что ничего не отвалилось. В консоли смотрим/пишем лог, чтобы понимать как ведет себя модуль. Если вопрос был в этом.
nikitaGlobal
к приветствию "доброго времени суток" не хвает обращения - "лица определенного пола"
nikitaGlobal
s/хвает/хватает