Ориентация диодов критична для матрицы клавиатуры. Диод, установленный наоборот, может привести к тому, что клавиши не распознаются, матрица кажется полностью неисправной, а при диагностике появляются непонятные показания напряжения.
Главное: COL2ROW и ROW2COL одновременно описывают направление диода и порядок сканирования матрицы. Их нельзя понимать просто как направление, в котором всегда движется сигнал или ток.
В стандартной матрице в стиле QMK ориентация зависит от стороны, которую сканируют и с которой считывают состояние. QMK определяет COL2ROW как конфигурацию, где маркировка катода обращена к стороне Row, а ROW2COL меняет направление на обратное. Стандартный код матрицы QMK также различает чтение столбцов для COL2ROW и чтение строк для ROW2COL.
Это важно, потому что схема, где Column переводится в LOW и считывается Row, требует противоположной ориентации диода по сравнению со схемой, где Row переводится в LOW и считывается Column.
Ниже электрическая связь разобрана по шагам, чтобы направление диода можно было проверить по реальной схеме, а не только по названию.
Содержание
- Как матрица клавиатуры использует диоды
- Определение анода и катода
- COL2ROW: правильное направление диода и логика сканирования
- ROW2COL: правильное направление диода и логика сканирования
- Самая частая причина путаницы
- PCB-футпринт и принципиальная схема
- Проверка и поиск неисправностей
- Практический список проверки проекта
Как матрица клавиатуры использует диоды
Матрица уменьшает число GPIO микроконтроллера, необходимых для опроса множества переключателей. Вместо отдельного входа для каждой клавиши переключатели размещают на пересечениях строк и столбцов.
Обычная матрица содержит:
- проводники строк;
- проводники столбцов;
- механические или электрические переключатели;
- по одному диоду на каждый переключатель в стандартной схеме защиты от ghosting;
- GPIO микроконтроллера, подключённые к строкам и столбцам;
- прошивку, которая выбирает одну сторону матрицы и считывает другую.
Диод обеспечивает направленную развязку. Без неё ток может пройти через несколько нажатых переключателей и создать нежелательные электрические пути, известные как ghosting.
Поэтому диод задаёт не просто удобное направление монтажа на PCB: его полярность должна соответствовать электрическому направлению сканера матрицы.
Прямое и обратное смещение
Обычный диод проводит ток, когда потенциал анода достаточно выше потенциала катода.
- Прямое смещение: ток идёт от анода к катоду.
- Обратное смещение: диод в значительной степени блокирует ток от катода к аноду.
Правильный вопрос таков:
Когда выбранная линия матрицы активирована и клавиша нажата, может ли диод проводить от управляемой стороны к считываемой?
Это надёжнее, чем пытаться вывести ответ из слов COL2ROW и ROW2COL.
Почему диод предотвращает ghosting
При нескольких одновременно нажатых клавишах одни переключатели могут создать нежелательные пути между разными строками и столбцами. Диод в каждой точке пересечения ограничивает ток одним направлением, устраняет многие паразитные пути и позволяет прошивке определить активные пересечения.
Документация QMK описывает тот же принцип: диод ставится после переключателя и перед линией матрицы, чтобы ток шёл только в одну сторону. В примере COL2ROW чёрная маркировка диода направлена к строке.
Как определить анод и катод диода
До выбора COL2ROW или ROW2COL необходимо правильно определить физическую полярность компонента.
Выводной 1N4148
Для стеклянного 1N4148 в корпусе DO-35:
- чёрное кольцо обозначает катод;
- противоположный вывод является анодом.
При монтаже ориентируйтесь на кольцо. После обрезки или гибки выводов их длина больше не является надёжным постоянным признаком полярности.
SMD 1N4148W и похожие компоненты
У SMD-коммутирующих диодов, например 1N4148W, производитель обозначает катод на корпусе. Внешний вид маркировки зависит от производителя и корпуса.
Например, 1N4148W компании Diodes Incorporated — коммутирующий диод в корпусе SOD-123 с полосой катода. В производстве всегда сверяйтесь с документацией на точную деталь и корпус.
Внешне похожие корпуса не обязательно используют одинаковую маркировку.
Сдвоенный диод BAV70
В стандартном корпусе SOT-23 BAV70 — сдвоенный коммутирующий диод с общим катодом. Для распиновки Nexperia BAV70:
- вывод 1 = анод диода 1;
- вывод 2 = анод диода 2;
- вывод 3 = общий катод.
У других производителей могут быть варианты корпуса и распиновки, поэтому перед созданием футпринта нужно проверить точную документацию. Нельзя считать, что у любого трёхвыводного сдвоенного диода одинаковая распиновка.
Проверка мультиметром
Если маркировка неясна, используйте режим проверки диода:
- красный щуп → анод;
- чёрный щуп → катод.
Обычный кремниевый коммутирующий диод обычно покажет прямое напряжение. При обратном подключении прибор должен показать обрыв или перегрузку. Значение зависит от диода и тестового тока; цель проверки — определить полярность.
COL2ROW: правильное направление диода и логика сканирования
QMK определяет COL2ROW как конфигурацию, в которой чёрная маркировка диода, обозначающая катод, обращена к строке и находится между переключателем и строкой. Соответствующая функция чтения — matrix_read_cols_on_row().
Правило для аппаратуры
COL2ROW: катод → Row
- анод → сторона переключателя/Column;
- катод → сторона Row.
Физическая маркировка направлена к строке.
Типичный электрический путь
Сторона Column
|
Переключатель
|
Анод
|
Диод
|
Катод
|
Сторона Row
Ток должен идти так:
Column → Переключатель → Диод → Row
Состояния GPIO, подтяжки и полярность зависят от прошивки. Важная аппаратная связь — проводимость от стороны столбца к стороне строки.
Конфигурация QMK
#define DIODE_DIRECTION COL2ROW
В keyboard.json:
{
"diode_direction": "COL2ROW"
}
QMK документирует COL2ROW и ROW2COL как два поддерживаемых направления обычной матрицы с диодами.
Важное уточнение о «Column to Row»
Не следует считать, что название COL2ROW означает обязательное постоянное управление Column в LOW. Запомните лучше:
COL2ROW
Катод → Row
После этого проверьте фактическое поведение сканирования. QMK описывает COL2ROW через маркировку, направленную к строкам, а низкоуровневый API — как чтение столбцов по строкам.
ROW2COL: правильное направление диода и логика сканирования
ROW2COL меняет направление диода по сравнению с COL2ROW.
Правило для аппаратуры
ROW2COL: катод → Column
- анод → сторона Row;
- катод → сторона Column.
Маркировка направлена к столбцу.
Типичный электрический путь
Сторона Row
|
Переключатель
|
Анод
|
Диод
|
Катод
|
Сторона Column
Направление прямого тока:
Row → Диод → Переключатель → Column
Порядок переключателя и диода на схеме может отличаться по правилам рисования, но электрическая полярность должна остаться той же.
Конфигурация QMK
#define DIODE_DIRECTION ROW2COL
или:
{
"diode_direction": "ROW2COL"
}
В API матрицы QMK используется matrix_read_rows_on_col(), что явно связывает выбранный столбец со считываемыми строками.
Когда подходит ROW2COL
ROW2COL может быть уместен, если его уже использует существующая клавиатура, обратная ориентация значительно упрощает разводку PCB, прошивка уже рассчитана на ROW2COL, этого требует собственный сканер матрицы или нужно сохранить аппаратный интерфейс существующего проекта. Ни одно направление не является электрически превосходящим: аппаратура и прошивка должны совпадать.
Самая частая причина путаницы: какая сторона управляется?
Для диагностики матрицы ответьте на три вопроса:
- Какой стороной управляет MCU?
- С какой стороны MCU считывает сигнал?
- В каком направлении проводит диод?
Случай A: управляется Column, считывается Row
Column = управляемый выход
Row = вход
Если Column находится в LOW, а на входе Row есть подтяжка:
3.3 V
|
Подтяжка Row
|
Вход ROW
|
Диод
|
Переключатель
|
Выход COLUMN
|
LOW
Чтобы нажатие понизило напряжение Row, диод должен проводить от Row к Column:
Анод → Row
Катод → Column
Это ориентация ROW2COL. Если Row остаётся около 3,3 В, диод может быть установлен в направлении COL2ROW и заперт обратным смещением. Модель SPICE следует фактической полярности, а не названию конфигурации.
Случай B: управляется Row, считывается Column
Row = управляемый выход
Column = вход
Если Row находится в LOW, а вход Column подтянут к HIGH:
3.3 V
|
Подтяжка Column
|
Вход COLUMN
|
Диод
|
Переключатель
|
Выход ROW
|
LOW
Диод должен проводить от Column к Row:
Анод → Column
Катод → Row
Это ориентация COL2ROW.
Правильное сравнение
| Конфигурация матрицы | Управляемая сторона | Считываемая сторона | Анод диода | Катод диода |
|---|---|---|---|---|
| COL2ROW | Row | Column | сторона Column | сторона Row |
| ROW2COL | Column | Row | сторона Row | сторона Column |
Это наиболее безопасное сопоставление. Пользовательский сканер может изменить активную логику LOW, поэтому в нестандартной матрице нужно проверить прошивку.
Если ROW = 3.3 V через подтяжку, COLUMN = 0 V, катод подключён к ROW, а анод к COLUMN, диод смещён в обратную сторону. Ожидаемого пути Row → Column нет, и нажатие не обязано перевести вход Row в LOW.
Почему Row может оставаться на уровне 3,3 В
Если:
ROW = 3,3 V через подтяжку
COLUMN = 0 V
а диод ориентирован так:
Катод → ROW
Анод → COLUMN
то:
ROW = 3,3 V
COLUMN = 0 V
Диод смещён в обратную сторону и не образует ожидаемый путь Row → Column. Поэтому нажатие не обязано переводить вход Row в LOW.
PCB-футпринт и схема с ясным направлением диода
Даже электрически правильный проект может дать сбой при монтаже, если футпринт не показывает полярность однозначно.
Условное обозначение на схеме
Используйте стандартный символ из надёжной CAD-библиотеки и проверьте его выводы. Он должен различать анод, катод и катодную черту. Не называйте символ «стрелкой»: катод обозначает черта, а сам символ не является стрелкой.
Маркировка футпринта
Добавьте полоску шелкографии по катоду, обозначьте катодную площадку, покажите полярность на сборочном чертеже, задайте единое направление компонентов и при необходимости укажите вывод 1 или площадку. Обычный треугольник или неоднозначная форма не должны быть единственной маркировкой.
Единая ориентация
Если разводка позволяет, ориентируйте все диоды одинаково:
Все катоды → Row
для COL2ROW или:
Все катоды → Column
для ROW2COL. Единообразие упрощает AOI, ручной осмотр и поиск неисправностей.
Соответствие реальной детали
Сверяйте футпринт с точным производителем и корпусом, особенно для SOD-123, SOD-323, SOD-523, SOT-23 и сдвоенных диодов. Одно название корпуса не гарантирует одинаковую распиновку или маркировку.
Документы для монтажа
Производственный пакет должен по возможности содержать Gerber, данные pick-and-place, BOM, сборочный чертёж, полярность и специальные указания по ориентации. Схема, PCB, BOM и чертёж должны описывать одну и ту же физическую ориентацию. Именно этот пакет линия SMT-сборки использует для задания ориентации диодов на клавиатурной PCB.
Проверка и поиск неисправностей направления диодов
Проблемы направления обычно локализуются сочетанием визуального осмотра, проверки диода, измерений напряжения и проверки прошивки.
Визуальный осмотр
До подачи питания:
- Найдите маркировку катода на реальном диоде.
- Сравните её с маркировкой футпринта.
- Проверьте направление всех диодов.
- Убедитесь, что ни один диод не повёрнут на 180 градусов.
- Сверьте корпус с BOM.
Для SMD-компонентов часто требуется увеличение.
Проверка отдельного диода
- Отключите питание.
- Изолируйте диод, если измерение в схеме неоднозначно.
- Включите режим проверки диода.
- Подключите красный щуп к предполагаемому аноду.
- Подключите чёрный щуп к предполагаемому катоду.
- Подтвердите прямую проводимость.
- Поменяйте щупы и подтвердите блокировку.
Другие компоненты могут влиять на измерение в схеме; подозрительный результат подтвердите на изолированном диоде.
Измерение напряжения матрицы
Для:
Column = выход LOW
Row = вход с подтяжкой
отпущенная клавиша может оставлять Row в HIGH; при правильной полярности ROW2COL нажатие должно подтягивать Row к выбранному LOW столбцу с учётом GPIO и падения на диоде; при обратной полярности Row может оставаться HIGH. Проверка полезна для SPICE-модели и прототипа.
Проверка прошивки
#define DIODE_DIRECTION COL2ROW
или:
#define DIODE_DIRECTION ROW2COL
"diode_direction": "COL2ROW"
или:
"diode_direction": "ROW2COL"
Настройка должна соответствовать физической матрице. Для пользовательского сканера сначала проверьте его код, а не принимайте стандартное поведение на веру.
Типовые неисправности
Не работают все клавиши: направление в прошивке не совпадает с аппаратурой, неверно настроены GPIO или размеры матрицы, разомкнута общая линия строки/столбца.
Не работает одна клавиша: перевёрнут диод, дефект пайки, оборвана дорожка, неисправен переключатель или установлен не тот компонент.
Не работает строка или столбец: проверьте дорожку, разъём, пайку, назначение вывода MCU, короткое замыкание и конфигурацию матрицы.
Row около 3,3 В при Column LOW: проверьте подтяжку, фактический выход LOW, замыкание переключателя, путь Row → Column и связь сканирования ROW2COL.
Ghosting при нескольких клавишах: проверьте отсутствие диодов, неверную ориентацию, разводку, настройку прошивки и пользовательскую логику матрицы.
- существующая аппаратная часть клавиатуры уже использует это направление;
- обратная ориентация заметно упрощает разводку PCB;
- прошивка уже рассчитана на ROW2COL;
- пользовательский сканер матрицы требует такого электрического направления;
- аппаратный интерфейс существующего проекта нужно сохранить;
- анод;
- катод;
- катодная черта;
- полоска шелкографии по катоду;
- явно обозначенная катодная площадка;
- обозначение полярности на сборочном чертеже;
- единая ориентация компонентов на PCB;
- обозначения вывода 1 или площадки при необходимости;
- корпус SOD-123;
- корпус SOD-323;
- корпус SOD-523;
- корпус SOT-23;
- другие корпуса с двумя диодами;
- файлы Gerber;
- данные pick-and-place;
- BOM;
- сборочный чертёж;
- сведения о полярности;
- специальные указания по ориентации;
- направление прошивки не совпадает с аппаратурой;
- конфигурация GPIO матрицы неверна;
- общая дорожка строки или столбца разомкнута;
- сканер использует неверные размеры матрицы;
- диод установлен наоборот;
- дефект пайки;
- оборвана дорожка;
- неисправен переключатель;
- установлен неверный компонент;
- оборвана дорожка строки или столбца;
- неисправен разъём или паяное соединение;
- неверно назначен вывод MCU;
- короткое замыкание;
- неверная конфигурация матрицы;
- у Row действительно есть подтяжка;
- Column действительно настроен и управляется в LOW;
- переключатель электрически замыкается;
- полярность разрешает ток от Row к Column;
- прошивка использует предусмотренную связь сканирования типа ROW2COL;
- диоды отсутствуют;
- диоды ориентированы неправильно;
- матрица разведена неправильно;
- конфигурация матрицы в прошивке неверна;
- активна пользовательская логика матрицы;
- клавиша отпущена: Row может оставаться HIGH через подтяжку;
- клавиша нажата при правильной полярности ROW2COL: Row подтягивается к Column LOW;
- клавиша нажата при обратной полярности: Row может оставаться HIGH;
- проверить анод на схеме;
- проверить катод на схеме;
- проверить катодную черту;
- подтвердить точный номер компонента;
- подтвердить корпус до производства;
- подтвердить угол установки;
- подтвердить полярность после монтажа;
- выполнить автоматическую оптическую инспекцию;
- выполнить электрическую проверку матрицы;
- сохранить производственные данные с документированной полярностью.
Список проверки направления диодов клавиатуры
Электрическая часть
- Определить COL2ROW или ROW2COL.
- Определить управляемую и считываемую стороны.
- Подтвердить путь тока при нажатой клавише.
- Подтвердить прямое смещение каждого диода.
- Подтвердить блокировку нежелательных обратных путей.
Схема
- Проверить обозначение катода.
- Проверить имена сетей анода и катода.
- Проверить подключение переключателей и диодов к нужным линиям.
- Сверить схему и прошивку.
- Исключить неоднозначные обозначения полярности.
Разводка PCB
- Проверить полярность каждого футпринта.
- Добавить ясную маркировку катода.
- По возможности сохранить единое направление.
- Проверить чертёж точного корпуса.
- Убедиться, что корпус не закрывает шелкографию.
Прошивка
- Проверить
DIODE_DIRECTION. - Проверить
matrix_pins.cols. - Проверить
matrix_pins.rows. - Согласовать направление сканирования с физическими диодами.
- Проверить наличие пользовательского сканирования.
Производство
- Проверить номер детали в BOM и корпус.
- Проверить маркировку катода и поворот на сборочном чертеже.
- Проверить угол поворота pick-and-place.
- Проверить полярность после монтажа.
- Выполнить AOI и электрическую проверку матрицы.
COL2ROW и ROW2COL: краткая справка
| Параметр | COL2ROW | ROW2COL |
|---|---|---|
| Катод | Row | Column |
| Анод | Column | Row |
| Настройка QMK | COL2ROW |
ROW2COL |
| Функция чтения QMK | matrix_read_cols_on_row() |
matrix_read_rows_on_col() |
| Типичный путь тока | Column → Переключатель → Диод → Row | Row → Диод → Переключатель → Column |
| Column LOW, читается Row | стандартное направление не соответствует | соответствует |
| Row LOW, читается Column | соответствует | стандартное направление не соответствует |
Не выбирайте направление только по словам «Column» и «Row». Определите управляемую сторону, сторону считывания и прямое смещение диода при нажатой клавише.
По стандарту QMK при COL2ROW маркировка катода обращена к Row, а ROW2COL меняет её направление к Column. Для этих конфигураций QMK документирует отдельные функции чтения.
Сборка PCB клавиатуры HILPCB
Правильная полярность диодов важна для надёжной клавиатурной PCBA. Производственный процесс должен проверить номер детали, корпус, угол установки, маркировку катода и работу матрицы.
HILPCB поддерживает проверку BOM и компонентов, программирование pick-and-place, SMT-монтаж, автоматическую оптическую инспекцию (AOI), электрические испытания, прототипы, малые партии и серийное производство.
В производственных данных должны быть чётко указаны номер детали диода, корпус, полярность и ориентация монтажа.
Итог
Самый надёжный способ определить направление диода — начать с реальной схемы сканирования.
Column = выход LOW
Row = вход с подтяжкой
Диод должен проводить:
Row → Column
то есть:
Анод → Row
Катод → Column
В стандартной терминологии QMK это ROW2COL.
Если Row управляется в LOW, а Column имеет подтяжку, ток должен идти от Column к Row: анод к Column, катод к Row, то есть COL2ROW.
Row = выход LOW
Column = вход с подтяжкой
Column → Row
Анод → Column
Катод → Row
Поэтому вход Row, остающийся около 3,3 В при Column в LOW, может быть нормальным следствием обратного смещения диода, если аппаратура использует полярность COL2ROW, а сканер ожидает противоположное направление.
Всегда проверяйте реальную реализацию сканирования, особенно при пользовательском сканере матрицы: электрическое поведение определяется тем, какие GPIO прошивка управляет и читает, а не одним названием настройки.

