Sens des diodes de clavier : guide d’orientation COL2ROW et ROW2COL

Comprenez le fonctionnement des directions COL2ROW et ROW2COL, identifiez l’anode et la cathode et faites correspondre l’orientation de la diode au balayage de la matrice.

Sens des diodes de clavier : guide d’orientation COL2ROW et ROW2COL

L’orientation des diodes est essentielle dans la conception d’une matrice de clavier. Une diode montée à l’envers peut empêcher la détection des touches, donner l’impression que toute la matrice est en panne ou produire des tensions déroutantes pendant le diagnostic.

Le point principal est le suivant : COL2ROW et ROW2COL décrivent ensemble le sens de la diode et l’organisation du balayage. Il ne faut pas les interpréter comme le sens dans lequel un signal ou un courant circule toujours.

Dans une matrice QMK standard, l’orientation dépend du côté balayé et du côté lu. QMK définit COL2ROW avec le repère de cathode tourné vers les lignes, tandis que ROW2COL inverse cette direction. Le code de matrice standard QMK distingue aussi la lecture des colonnes par ligne de la lecture des lignes par colonne.

Cette différence est importante : une conception qui force une Column à LOW et lit la Row exige l’orientation opposée à celle qui force une Row à LOW et lit la Column.

Ce guide décrit la relation électrique étape par étape afin de vérifier la diode sur le circuit réel plutôt qu’à partir de son seul nom.

Contenu du guide

  1. Utilisation des diodes dans une matrice de clavier
  2. Identifier l’anode et la cathode
  3. COL2ROW : sens correct et logique de balayage
  4. ROW2COL : sens correct et logique de balayage
  5. La source de confusion la plus fréquente
  6. Empreinte PCB et schéma
  7. Tests et dépannage
  8. Liste de contrôle de conception

Utilisation des diodes dans une matrice de clavier

Une matrice réduit le nombre de broches GPIO du MCU nécessaires pour lire de nombreux interrupteurs. Au lieu de relier chaque touche à une entrée dédiée, les interrupteurs sont placés aux intersections des lignes et des colonnes.

Une matrice typique comprend :

  • des pistes de lignes ;
  • des pistes de colonnes ;
  • des interrupteurs mécaniques ou électriques ;
  • une diode par interrupteur dans une conception standard anti-ghosting ;
  • des GPIO du MCU reliés aux lignes et aux colonnes ;
  • un firmware qui sélectionne un côté et lit l’autre.

La diode assure l’isolement directionnel. Sans cet isolement, le courant peut traverser plusieurs touches pressées et former des chemins électriques indésirables appelés ghosting.

La diode ne sert donc pas seulement à indiquer une orientation préférée sur le PCB : sa polarité doit correspondre au sens électrique utilisé par le balayage.

Polarisation directe et inverse

Une diode classique conduit lorsque le potentiel de son anode est suffisamment supérieur à celui de sa cathode.

  • Polarisation directe : le courant va de l’anode vers la cathode.
  • Polarisation inverse : la diode bloque largement le courant de la cathode vers l’anode.

La question utile est donc :

Lorsque la ligne sélectionnée est pilotée et qu’une touche est pressée, la diode peut-elle conduire du côté piloté vers le côté mesuré ?

C’est plus fiable que de déduire la réponse des termes COL2ROW et ROW2COL.

Pourquoi la diode évite le ghosting

Avec plusieurs touches pressées, des interrupteurs seuls peuvent créer des chemins entre lignes et colonnes différentes. Une diode à chaque intersection limite le courant à un seul sens, supprime de nombreux chemins parasites et permet au firmware d’identifier les intersections réellement actives.

La documentation QMK décrit ce même principe : la diode se trouve après l’interrupteur et avant la ligne de matrice. Dans l’exemple COL2ROW, sa marque noire est dirigée vers la ligne.


Identifier l’anode et la cathode

Avant de choisir COL2ROW ou ROW2COL, identifiez correctement la polarité physique du composant.

1N4148 traversante

Pour une 1N4148 en verre dans un boîtier DO-35 :

  • la bande noire indique la cathode ;
  • la patte opposée est l’anode.

La bande est la référence physique la plus sûre lors du montage. Après découpe ou formage, la longueur des pattes ne constitue plus une référence fiable.

1N4148W CMS et composants similaires

Pour une diode de commutation CMS telle que la 1N4148W, le fabricant indique la cathode sur le boîtier. L’aspect exact du marquage varie selon le fabricant et le boîtier.

La 1N4148W de Diodes Incorporated est par exemple une diode SOD-123 avec bande de cathode. Vérifiez toujours la fiche technique du composant et du boîtier réellement utilisé en production.

Des boîtiers visuellement similaires n’ont pas forcément le même marquage.

Double diode BAV70

Dans la version SOT-23 standard, la BAV70 est une double diode de commutation à cathode commune. Pour le brochage Nexperia :

  • broche 1 = anode de la diode 1 ;
  • broche 2 = anode de la diode 2 ;
  • broche 3 = cathode commune.

Les variantes d’autres fabricants peuvent avoir un autre boîtier ou brochage : consultez la fiche technique exacte avant de créer l’empreinte. Toutes les doubles diodes à trois broches n’ont pas le même brochage.

Vérification au multimètre

Si le marquage est incertain, utilisez le mode test de diode :

  • pointe rouge → anode ;
  • pointe noire → cathode.

Une diode silicium de commutation affiche généralement une tension directe. En inversant les pointes, le multimètre doit normalement indiquer une ouverture ou une surcharge. La valeur dépend du composant et du courant de test ; l’objectif est d’identifier la polarité.


COL2ROW : sens correct de la diode et logique de balayage

QMK définit COL2ROW comme une configuration où la marque noire de la diode, qui identifie la cathode, est dirigée vers la ligne et placée entre l’interrupteur et celle-ci. La fonction de lecture associée est matrix_read_cols_on_row().

Règle matérielle

COL2ROW : cathode → Row

  • anode → côté interrupteur/Column ;
  • cathode → côté Row.

La marque physique pointe vers la Row.

Chemin électrique typique

Côté Column
    |
  Interrupteur
    |
  Anode
    |
  Diode
    |
  Cathode
    |
 Côté Row

Le courant doit circuler ainsi :

Column → Interrupteur → Diode → Row

Les niveaux de repos et d’activation, les résistances de rappel et la polarité des GPIO dépendent du firmware. La relation matérielle importante est la conduction de Column vers Row.

Configuration QMK

#define DIODE_DIRECTION COL2ROW

Dans keyboard.json :

{
    "diode_direction": "COL2ROW"
}

QMK documente COL2ROW et ROW2COL comme les deux directions d’une matrice à diodes classique.

Clarification sur « Column vers Row »

Ne déduisez pas du nom COL2ROW que le MCU force toujours la Column à LOW. Retenez plutôt :

COL2ROW
Cathode → Row

puis vérifiez le comportement réel du balayage. QMK décrit la marque tournée vers les lignes, tandis que son API bas niveau décrit une lecture des colonnes commandée par les lignes.


ROW2COL : sens correct de la diode et logique de balayage

ROW2COL inverse le sens de la diode par rapport à COL2ROW.

Règle matérielle

ROW2COL : cathode → Column

  • anode → côté Row ;
  • cathode → côté Column.

La marque physique pointe vers la Column.

Chemin électrique typique

Côté Row
    |
  Interrupteur
    |
  Anode
    |
  Diode
    |
  Cathode
    |
Côté Column

Le courant direct suit :

Row → Diode → Interrupteur → Column

Le schéma peut dessiner l’interrupteur et la diode dans un autre ordre, mais la polarité électrique reste inchangée.

Configuration QMK

#define DIODE_DIRECTION ROW2COL

ou :

{
    "diode_direction": "ROW2COL"
}

L’API QMK utilise matrix_read_rows_on_col(), ce qui explicite la colonne sélectionnée et les lignes lues.

Quand utiliser ROW2COL

ROW2COL convient lorsque le matériel existant l’utilise, que le routage inversé simplifie nettement le PCB, que le firmware est déjà prévu ainsi, qu’un scanner personnalisé l’exige ou qu’une interface matérielle existante doit être conservée. Aucune direction n’est intrinsèquement meilleure : matériel et firmware doivent correspondre.


La source de confusion la plus fréquente : quel côté est piloté ?

Pour dépanner la matrice, répondez à trois questions :

  1. Quel côté le MCU pilote-t-il ?
  2. Quel côté lit-il ?
  3. Dans quel sens la diode conduit-elle ?

Cas A : Column pilotée, Row lue

Column = sortie pilotée
Row    = entrée

Si la Column est à LOW et que la Row possède un pull-up :

3.3 V
  |
Pull-up Row
  |
Entrée ROW
  |
Diode
  |
Interrupteur
  |
Sortie COLUMN
  |
LOW

Pour abaisser la Row lors de l’appui, la diode doit conduire de Row vers Column :

Anode   → Row
Cathode → Column

C’est l’orientation ROW2COL. Une Row qui reste près de 3,3 V peut donc indiquer une diode montée en COL2ROW et polarisée en inverse. Un modèle SPICE suit la polarité réelle, pas le nom de la configuration.

Cas B : Row pilotée, Column lue

Row    = sortie pilotée
Column = entrée

Avec la Row à LOW et la Column tirée à HIGH :

3.3 V
  |
Pull-up Column
  |
Entrée COLUMN
  |
Diode
  |
Interrupteur
  |
Sortie ROW
  |
LOW

La conduction doit aller de Column vers Row :

Anode   → Column
Cathode → Row

C’est l’orientation COL2ROW.

Comparaison correcte

Configuration Côté piloté Côté lu Anode Cathode
COL2ROW Row Column côté Column côté Row
ROW2COL Column Row côté Row côté Column

Cette correspondance est la référence la plus sûre. Un scanner personnalisé peut cependant modifier la logique active-LOW ; il faut alors vérifier le firmware réel.

Si ROW = 3.3 V via pull-up et COLUMN = 0 V, avec cathode vers ROW et anode vers COLUMN, la diode est en inverse. Elle ne crée pas le chemin Row → Column attendu et l’appui ne force pas nécessairement l’entrée Row à LOW.

Pourquoi une Row peut rester à 3,3 V

Si :

ROW = 3,3 V via pull-up
COLUMN = 0 V

et que la diode est orientée ainsi :

Cathode → ROW
Anode   → COLUMN

alors :

ROW = 3,3 V
COLUMN = 0 V

La diode est en polarisation inverse et ne fournit pas le chemin Row → Column attendu. Une pression ne force donc pas nécessairement l’entrée Row à LOW.


Empreinte PCB et schéma pour une orientation claire

Une conception électrique correcte peut échouer en assemblage si l’empreinte n’indique pas clairement la polarité.

Symbole du schéma

Utilisez un symbole standard issu d’une bibliothèque CAO fiable et vérifiez ses noms de broches. Il doit distinguer anode, cathode et barre de cathode. Ne décrivez pas le symbole comme une flèche : seule la barre représente la cathode, et le symbole n’est pas une flèche.

Marquage de l’empreinte

Ajoutez une barre de sérigraphie alignée sur la cathode, un pad identifié, une indication de polarité sur le dessin d’assemblage, une orientation homogène et, si nécessaire, des repères de broche 1 ou de pad. Un triangle générique ou une forme ambiguë ne doit pas être le seul repère.

Orientation homogène

Si le routage le permet, alignez toutes les diodes. Pour COL2ROW :

Toutes les cathodes → Row

Pour ROW2COL :

Toutes les cathodes → Column

Cette constance facilite l’AOI, l’inspection manuelle et le dépannage.

Empreinte et composant réel

Vérifiez l’empreinte selon le fabricant et le boîtier exacts, notamment SOD-123, SOD-323, SOD-523, SOT-23 et les doubles diodes. Un même nom de boîtier ne garantit ni le même brochage ni le même marquage.

Documentation d’assemblage

Le dossier de fabrication devrait comprendre Gerber, données de placement, BOM, dessin d’assemblage, polarités et consignes d’orientation. Schéma, PCB, BOM et dessin doivent décrire la même orientation physique. C’est le dossier qu’une ligne d’assemblage SMT utilise pour définir l’orientation des diodes sur un PCB de clavier.


Tester et dépanner le sens des diodes

Les problèmes de sens se localisent généralement par inspection visuelle, test de diode, mesures de tension et vérification du firmware.

Inspection visuelle

Avant la mise sous tension :

  1. Repérez la marque de cathode réelle.
  2. Comparez-la au marquage de l’empreinte.
  3. Vérifiez la direction de toutes les diodes.
  4. Écartez toute rotation de 180 degrés.
  5. Comparez le boîtier à la BOM.

Un grossissement est souvent nécessaire pour les composants CMS.

Test d’une diode

  1. Débranchez l’alimentation.
  2. Isolez la diode si la mesure en circuit est ambiguë.
  3. Sélectionnez le mode test de diode.
  4. Placez la pointe rouge sur l’anode attendue.
  5. Placez la pointe noire sur la cathode attendue.
  6. Confirmez la conduction directe.
  7. Inversez les pointes et confirmez le blocage.

Les autres composants peuvent fausser une mesure en circuit ; confirmez donc tout résultat suspect avec la diode isolée.

Mesure de la matrice

Column = sortie LOW
Row    = entrée avec pull-up

Pour Column = sortie LOW et Row = entrée avec pull-up : touche relâchée, Row peut rester HIGH ; touche pressée avec la polarité ROW2COL correcte, Row doit être tirée vers la Column LOW selon la configuration GPIO et la chute de diode ; polarité inverse, Row peut rester HIGH. Ce contrôle est utile avec une simulation SPICE ou une carte prototype.

Vérification du firmware

#define DIODE_DIRECTION COL2ROW

ou :

#define DIODE_DIRECTION ROW2COL
"diode_direction": "COL2ROW"

ou :

"diode_direction": "ROW2COL"

La valeur doit correspondre au matériel. Avec un scanner personnalisé, vérifiez le code avant d’appliquer le comportement standard.

Causes fréquentes

Toutes les touches sont inactives : direction firmware incompatible, GPIO mal configurés, piste commune ouverte ou dimensions de matrice incorrectes.

Une touche est inactive : diode inversée, défaut de soudure, piste ouverte, interrupteur défectueux ou mauvais composant.

Une ligne ou colonne est inactive : piste, connecteur, soudure, broche MCU, court-circuit ou configuration à contrôler.

Row proche de 3,3 V avec Column LOW : vérifier pull-up, sortie LOW, fermeture du switch, sens Row → Column et relation de scan ROW2COL.

Ghosting multipression : vérifier diodes absentes ou inversées, câblage, configuration et logique de matrice personnalisée.

  • le matériel de clavier existant utilise déjà cette direction ;
  • le routage PCB est nettement plus simple avec l’orientation inversée ;
  • le firmware est déjà conçu pour ROW2COL ;
  • un scanner de matrice personnalisé exige cette direction électrique ;
  • l’interface matérielle d’une conception existante doit être conservée ;
  • anode ;
  • cathode ;
  • barre de cathode ;
  • barre de sérigraphie alignée sur la cathode ;
  • pastille de cathode clairement identifiée ;
  • indicateur de polarité sur le dessin d’assemblage ;
  • orientation uniforme des composants sur le PCB ;
  • repères de broche 1 ou de pastille si nécessaire ;
  • boîtier SOD-123 ;
  • boîtier SOD-323 ;
  • boîtier SOD-523 ;
  • boîtier SOT-23 ;
  • autres boîtiers à double diode ;
  • fichiers Gerber ;
  • données pick-and-place ;
  • BOM ;
  • dessin d’assemblage ;
  • informations de polarité ;
  • consignes d’orientation particulières ;
  • la direction du firmware ne correspond pas au matériel ;
  • la configuration GPIO de la matrice est incorrecte ;
  • une piste commune de ligne ou de colonne est ouverte ;
  • le scanner utilise de mauvaises dimensions de matrice ;
  • diode inversée ;
  • défaut de soudure ;
  • piste ouverte ;
  • interrupteur défectueux ;
  • composant incorrect ;
  • piste de ligne ou de colonne rompue ;
  • connecteur ou soudure défectueux ;
  • affectation incorrecte d’une broche du MCU ;
  • court-circuit ;
  • configuration de matrice incorrecte ;
  • la Row possède réellement un pull-up ;
  • la Column est réellement configurée et pilotée à LOW ;
  • l’interrupteur se ferme électriquement ;
  • la polarité autorise le courant de Row vers Column ;
  • le firmware utilise la relation de balayage de type ROW2COL prévue ;
  • diodes absentes ;
  • orientation incorrecte des diodes ;
  • câblage incorrect de la matrice ;
  • configuration de matrice du firmware incorrecte ;
  • logique de matrice personnalisée active ;
  • touche relâchée : la Row peut rester HIGH via son pull-up ;
  • touche pressée avec la bonne polarité ROW2COL : la Row va vers la Column LOW ;
  • touche pressée avec une polarité inverse : la Row peut rester HIGH ;
  • vérifier l’anode dans le schéma ;
  • vérifier la cathode dans le schéma ;
  • vérifier la barre de cathode ;
  • confirmer la référence exacte du composant ;
  • confirmer le boîtier avant de fabriquer ;
  • confirmer la rotation de placement ;
  • confirmer la polarité après assemblage ;
  • exécuter l’inspection optique automatisée ;
  • effectuer le test électrique de la matrice ;
  • conserver les données de production avec la polarité documentée.

Liste de contrôle de conception

Conception électrique

  • Définir COL2ROW ou ROW2COL.
  • Identifier le côté piloté et le côté lu.
  • Confirmer le trajet du courant à l’appui.
  • Confirmer la polarisation directe de chaque diode.
  • Confirmer le blocage des chemins inverses indésirables.

Schéma

  • Vérifier le symbole de cathode.
  • Vérifier les noms de nets anode/cathode.
  • Vérifier les connexions switch/diode aux bonnes lignes.
  • Faire correspondre schéma et firmware.
  • Éviter les symboles ambigus.

PCB

  • Vérifier la polarité de chaque empreinte.
  • Ajouter un repère de cathode.
  • Uniformiser l’orientation si possible.
  • Contrôler le dessin du boîtier exact.
  • S’assurer que le corps ne masque pas la sérigraphie.

Firmware

  • Vérifier DIODE_DIRECTION.
  • Vérifier matrix_pins.cols.
  • Vérifier matrix_pins.rows.
  • Faire correspondre scan et orientation physique.
  • Rechercher un scan personnalisé.

Fabrication

  • Vérifier la référence BOM et le boîtier.
  • Vérifier cathode et rotation dans le dessin d’assemblage.
  • Contrôler la rotation de placement.
  • Inspecter la polarité après pose.
  • Exécuter l’AOI et le test électrique de matrice.

COL2ROW et ROW2COL : référence rapide

Élément COL2ROW ROW2COL
Cathode Row Column
Anode Column Row
Réglage QMK COL2ROW ROW2COL
Fonction de lecture matrix_read_cols_on_row() matrix_read_rows_on_col()
Chemin typique Column → Interrupteur → Diode → Row Row → Diode → Interrupteur → Column
Column LOW, Row lue direction standard non correspondante correspondante
Row LOW, Column lue correspondante direction standard non correspondante

Ne choisissez pas le sens d’après « Column » et « Row » seuls. Déterminez le côté piloté, le côté mesuré et la polarisation directe lorsque la touche est pressée.

Selon QMK, COL2ROW place la marque de cathode vers Row et ROW2COL l’inverse. Les fonctions de lecture dédiées documentent ces deux relations.


Assemblage de PCB de clavier HILPCB

Une polarité correcte est indispensable à une PCBA de clavier fiable. Le processus de production doit contrôler référence, boîtier, rotation de placement, marque de cathode et fonctionnement de la matrice.

HILPCB prend en charge la vérification BOM/composants, la programmation pick-and-place, l’assemblage SMT, l’inspection optique automatisée (AOI), les tests électriques, les prototypes, les petites séries et la production en volume.

Les données de fabrication doivent préciser la référence, le boîtier, la polarité et l’orientation de montage de chaque diode.


Conclusion

La méthode la plus sûre consiste à partir du circuit de balayage réel.

Column = sortie LOW
Row    = entrée avec pull-up

La diode doit conduire :

Row → Column

donc :

Anode   → Row
Cathode → Column

C’est ROW2COL dans la terminologie QMK standard.

Si la Row est pilotée à LOW et la Column possède un pull-up, le courant doit aller de Column vers Row : anode vers Column, cathode vers Row, soit COL2ROW.

Row    = sortie pilotée à LOW
Column = entrée avec pull-up
Column → Row
Anode   → Column
Cathode → Row

Ainsi, une Row proche de 3,3 V avec une Column à LOW peut simplement résulter d’une diode polarisée en inverse lorsque le matériel est en COL2ROW mais que le scanner attend l’autre sens.

Vérifiez toujours l’implémentation réelle du scan, surtout avec une matrice personnalisée : le comportement électrique dépend des GPIO pilotés et lus par le firmware, pas du nom seul.