L’orientamento dei diodi è fondamentale nella progettazione della matrice di una tastiera. Un diodo installato al contrario può impedire il riconoscimento dei tasti, far sembrare guasta l’intera matrice o produrre letture di tensione difficili da interpretare durante il troubleshooting.
Il punto più importante è questo: COL2ROW e ROW2COL descrivono insieme la direzione del diodo e l’organizzazione della scansione. Non vanno interpretati semplicemente come la direzione in cui un segnale o una corrente deve sempre scorrere.
In una matrice standard in stile QMK, l’orientamento dipende dal lato scansionato e da quello letto. QMK definisce COL2ROW come la configurazione in cui la marcatura del catodo è rivolta verso il lato Row, mentre ROW2COL inverte la direzione. Il codice standard QMK distingue inoltre la lettura delle colonne nelle configurazioni COL2ROW e la lettura delle righe nelle configurazioni ROW2COL.
La distinzione è essenziale: un circuito che porta una Column a LOW e legge la Row richiede l’orientamento opposto rispetto a uno che porta una Row a LOW e legge la Column.
Questa guida spiega passo per passo la relazione elettrica, così la direzione può essere verificata sul circuito reale e non solo dal nome.
Contenuti della guida
- Come la matrice della tastiera usa i diodi
- Identificare anodo e catodo
- COL2ROW: direzione corretta e logica di scansione
- ROW2COL: direzione corretta e logica di scansione
- La causa più comune di confusione
- Footprint PCB e schema elettrico
- Test e troubleshooting
- Checklist pratica di progettazione
Come la matrice della tastiera usa i diodi
Una matrice riduce il numero di pin GPIO dell’MCU necessari per scansionare molti switch. Invece di collegare ogni tasto a un ingresso dedicato, gli switch sono disposti alle intersezioni di righe e colonne.
Una matrice tipica comprende:
- piste delle righe;
- piste delle colonne;
- switch meccanici o elettrici;
- un diodo associato a ogni switch nella configurazione standard anti-ghosting;
- pin GPIO dell’MCU collegati alle linee di righe e colonne;
- firmware che seleziona un lato della matrice e legge l’altro.
Il diodo fornisce isolamento unidirezionale. Senza isolamento adeguato, la corrente può attraversare più switch premuti e creare percorsi elettrici indesiderati, chiamati ghosting.
Il diodo quindi non indica soltanto un orientamento preferito sul PCB: la sua polarità deve concordare con la direzione elettrica usata dallo scanner.
Polarizzazione diretta e inversa
Un diodo convenzionale conduce quando l’anodo si trova a un potenziale sufficientemente maggiore del catodo.
- Polarizzazione diretta: la corrente può scorrere dall’anodo al catodo.
- Polarizzazione inversa: il diodo blocca in larga misura la corrente dal catodo all’anodo.
La domanda corretta è quindi:
Quando la linea selezionata viene pilotata e il tasto è premuto, il diodo può condurre dal lato pilotato verso quello rilevato?
È un criterio più affidabile che dedurre la risposta dalle parole COL2ROW e ROW2COL.
Perché il diodo previene il ghosting
Con più tasti premuti, i soli switch possono creare percorsi non desiderati tra righe e colonne diverse. Un diodo in ogni intersezione limita la corrente a una sola direzione, elimina molti percorsi parassiti e permette al firmware di individuare gli incroci realmente attivi.
La documentazione QMK descrive lo stesso principio: il diodo è posto dopo lo switch e prima della linea di matrice. Nell’esempio COL2ROW la marcatura nera è rivolta verso la riga.
Come identificare anodo e catodo
Prima di scegliere COL2ROW o ROW2COL, identifica correttamente la polarità fisica del componente.
1N4148 con montaggio passante
Per una 1N4148 in vetro con package DO-35:
- la banda nera identifica il catodo;
- il terminale opposto è l’anodo.
La banda è il riferimento più sicuro in fase di montaggio. Dopo aver tagliato o piegato i reofori, la loro lunghezza non è un riferimento permanente affidabile.
1N4148W SMD e componenti simili
Per diodi di commutazione SMD come 1N4148W, il produttore indica il catodo sul package. L’aspetto della marcatura varia in base a produttore e package.
La 1N4148W di Diodes Incorporated è, per esempio, un diodo SOD-123 con banda del catodo. In produzione verifica sempre il datasheet del codice e del package esatti.
Package visivamente simili non usano necessariamente la stessa marcatura.
Doppio diodo BAV70
Nella versione standard SOT-23, BAV70 è un doppio diodo di commutazione con catodo comune. Per il pinout Nexperia:
- pin 1 = anodo del diodo 1;
- pin 2 = anodo del diodo 2;
- pin 3 = catodo comune.
Altri produttori possono offrire varianti con package o pinout diversi: controlla il datasheet esatto prima di creare il footprint. Non tutti i doppi diodi a tre pin hanno lo stesso pinout.
Verifica con il multimetro
Se la marcatura non è chiara, usa la modalità test diodo:
- puntale rosso → anodo;
- puntale nero → catodo.
Un tipico diodo al silicio mostra una tensione diretta. Invertendo i puntali, il multimetro dovrebbe indicare circuito aperto o overload. Il valore dipende dal componente e dalla corrente di test; lo scopo è identificare la polarità.
COL2ROW: direzione corretta del diodo e logica di scansione
QMK definisce COL2ROW come la configurazione in cui la marcatura nera del diodo, cioè il catodo, è rivolta verso la Row e si trova tra switch e Row. La funzione di lettura associata è matrix_read_cols_on_row().
Regola hardware
COL2ROW: catodo → Row
- anodo → lato switch/Column;
- catodo → lato Row.
La marcatura fisica punta verso la Row.
Percorso elettrico tipico
Lato Column
|
Switch
|
Anodo
|
Diodo
|
Catodo
|
Lato Row
La corrente deve scorrere così:
Column → Switch → Diodo → Row
Livelli di riposo e attivi, pull-up, pull-down e polarità GPIO dipendono dal firmware. La relazione hardware essenziale è la conduzione dal lato Column al lato Row.
Configurazione QMK
#define DIODE_DIRECTION COL2ROW
In keyboard.json:
{
"diode_direction": "COL2ROW"
}
QMK documenta COL2ROW e ROW2COL come le due direzioni supportate per una matrice tradizionale a diodi.
Chiarimento su “Column to Row”
Non dedurre dal nome COL2ROW che l’MCU porti sempre la Column a LOW. Ricorda piuttosto:
COL2ROW
Catodo → Row
e verifica il comportamento effettivo dello scanner. QMK descrive la marcatura rivolta verso le righe, mentre l’API a basso livello descrive una lettura delle colonne basata sulle righe.
ROW2COL: direzione corretta del diodo e logica di scansione
ROW2COL inverte la direzione del diodo rispetto a COL2ROW.
Regola hardware
ROW2COL: catodo → Column
- anodo → lato Row;
- catodo → lato Column.
La marcatura fisica punta verso la Column.
Percorso elettrico tipico
Lato Row
|
Switch
|
Anodo
|
Diodo
|
Catodo
|
Lato Column
La corrente diretta segue:
Row → Diodo → Switch → Column
Lo schema può rappresentare switch e diodo in ordine diverso secondo la convenzione grafica, ma la polarità elettrica deve restare identica.
Configurazione QMK
#define DIODE_DIRECTION ROW2COL
oppure:
{
"diode_direction": "ROW2COL"
}
L’API di matrice QMK usa matrix_read_rows_on_col(), rendendo esplicito il rapporto tra colonna selezionata e righe lette.
Quando conviene ROW2COL
ROW2COL può essere appropriato se l’hardware esistente usa già questa direzione, se il routing inverso semplifica molto il PCB, se il firmware è già predisposto, se lo richiede uno scanner personalizzato o se bisogna conservare l’interfaccia di un progetto esistente. Nessuna direzione è intrinsecamente superiore: hardware e firmware devono concordare.
La causa più comune di confusione: quale lato viene pilotato?
Per diagnosticare una matrice, rispondi a tre domande:
- Quale lato pilota l’MCU?
- Quale lato legge?
- In quale direzione conduce il diodo?
Caso A: Column pilotata, Row letta
Column = uscita pilotata
Row = ingresso
Se la Column è LOW e l’ingresso Row ha un pull-up:
3.3 V
|
Pull-up Row
|
Ingresso ROW
|
Diodo
|
Switch
|
Uscita COLUMN
|
LOW
Per abbassare la Row quando si preme il tasto, il diodo deve condurre da Row a Column:
Anodo → Row
Catodo → Column
Questa è l’orientazione ROW2COL. Se la Row resta intorno a 3,3 V, il diodo può essere montato in direzione COL2ROW e quindi polarizzato inversamente. Una simulazione SPICE segue la polarità reale, non il nome della configurazione.
Caso B: Row pilotata, Column letta
Row = uscita pilotata
Column = ingresso
Con Row LOW e ingresso Column tirato HIGH:
3.3 V
|
Pull-up Column
|
Ingresso COLUMN
|
Diodo
|
Switch
|
Uscita ROW
|
LOW
Il diodo deve condurre da Column a Row:
Anodo → Column
Catodo → Row
Questa è l’orientazione COL2ROW.
Confronto corretto
| Configurazione | Lato pilotato | Lato letto | Anodo | Catodo |
|---|---|---|---|---|
| COL2ROW | Row | Column | lato Column | lato Row |
| ROW2COL | Column | Row | lato Row | lato Column |
È il riferimento più sicuro. Uno scanner personalizzato può però cambiare la logica active-low; in quel caso va verificato il firmware reale.
Se ROW = 3.3 V tramite pull-up e COLUMN = 0 V, con catodo verso ROW e anodo verso COLUMN, il diodo è in polarizzazione inversa: non crea il percorso Row → Column atteso e la pressione potrebbe non portare l’ingresso Row a LOW.
Perché una Row può restare a 3,3 V
Se:
ROW = 3,3 V tramite pull-up
COLUMN = 0 V
e il diodo è orientato così:
Catodo → ROW
Anodo → COLUMN
allora:
ROW = 3,3 V
COLUMN = 0 V
Il diodo è polarizzato inversamente e non fornisce il percorso Row → Column previsto. La pressione quindi non porta necessariamente l’ingresso Row a LOW.
Footprint PCB e schema per un’orientazione chiara
Un progetto elettrico corretto può fallire in assemblaggio se il footprint non mostra chiaramente la polarità.
Simbolo schematico
Usa un simbolo standard di una libreria CAD affidabile e verifica i nomi dei pin. Deve distinguere anodo, catodo e barra del catodo. Non chiamare il simbolo “freccia”: la barra rappresenta il catodo e il simbolo non è una freccia.
Marcatura del footprint
Prevedi una barra serigrafica allineata al catodo, un pad identificato, un’indicazione di polarità nel disegno di assemblaggio, un orientamento uniforme e, quando necessario, riferimenti al pin 1 o al pad. Un triangolo generico o una forma ambigua non deve essere l’unico riferimento.
Orientamento coerente
Se il routing lo consente, orienta tutti i diodi nello stesso modo:
Tutti i catodi → Row
per COL2ROW, oppure:
Tutti i catodi → Column
per ROW2COL. La coerenza facilita AOI, ispezione manuale e troubleshooting.
Corrispondenza con il componente reale
Verifica il footprint rispetto a produttore e package esatti, soprattutto per SOD-123, SOD-323, SOD-523, SOT-23 e doppi diodi. Lo stesso nome del package non garantisce lo stesso pinout o la stessa marcatura.
Documentazione di assemblaggio
Il pacchetto di produzione dovrebbe includere Gerber, dati pick-and-place, BOM, disegno di assemblaggio, polarità e note di orientamento. Schema, PCB, BOM e disegno devono descrivere la stessa orientazione fisica. Questo è il pacchetto che una linea di assemblaggio SMT usa per impostare l’orientamento dei diodi su un PCB di tastiera.
Test e troubleshooting della direzione dei diodi
I problemi di direzione si isolano normalmente con ispezione visiva, test del diodo, misure di tensione e verifica del firmware.
Ispezione visiva
Prima di alimentare la scheda:
- Identifica la marcatura del catodo reale.
- Confrontala con quella del footprint.
- Controlla la direzione di tutti i diodi.
- Escludi componenti ruotati di 180 gradi.
- Confronta il package con la BOM.
Per i componenti SMD spesso serve un ingrandimento.
Test del singolo diodo
- Scollega l’alimentazione.
- Isola il diodo se la misura in circuito è ambigua.
- Seleziona la modalità test diodo.
- Collega il puntale rosso all’anodo atteso.
- Collega il puntale nero al catodo atteso.
- Conferma la conduzione diretta.
- Inverti i puntali e conferma il blocco.
Altri componenti possono alterare una misura in circuito; conferma quindi ogni risultato sospetto con il diodo isolato.
Test di tensione della matrice
Con:
Column = uscita LOW
Row = ingresso con pull-up
il tasto rilasciato può lasciare Row HIGH; con polarità ROW2COL corretta, la pressione dovrebbe portare Row verso la Column LOW, in base a GPIO e caduta del diodo; con polarità inversa Row può restare HIGH. Il controllo è utile con simulazioni SPICE e prototipi.
Verifica firmware
#define DIODE_DIRECTION COL2ROW
oppure:
#define DIODE_DIRECTION ROW2COL
"diode_direction": "COL2ROW"
oppure:
"diode_direction": "ROW2COL"
Il valore deve corrispondere al progetto fisico. Con uno scanner personalizzato, controlla il codice prima di applicare il comportamento standard.
Problemi ricorrenti
Tutti i tasti non funzionano: direzione firmware incompatibile, GPIO o dimensioni matrice errati, oppure pista comune aperta.
Un solo tasto non funziona: diodo invertito, saldatura difettosa, pista aperta, switch guasto o componente errato.
Una riga o colonna non funziona: controlla pista, connettore, saldatura, pin MCU, corto e configurazione.
Row vicina a 3,3 V con Column LOW: verifica pull-up, uscita LOW, chiusura dello switch, percorso Row → Column e relazione di scansione ROW2COL.
Ghosting con più tasti: controlla diodi mancanti o invertiti, cablaggio, firmware e logica di matrice personalizzata.
- l’hardware della tastiera esistente usa già questa direzione;
- il routing PCB è molto più semplice con l’orientamento invertito;
- il firmware è già progettato per ROW2COL;
- uno scanner di matrice personalizzato richiede questa direzione elettrica;
- l’interfaccia hardware di un progetto esistente deve essere mantenuta;
- anodo;
- catodo;
- barra del catodo;
- barra serigrafica allineata al catodo;
- pad del catodo chiaramente identificato;
- indicatore di polarità nel disegno di assemblaggio;
- orientamento uniforme dei componenti sul PCB;
- riferimenti a pin 1 o pad, quando necessari;
- package SOD-123;
- package SOD-323;
- package SOD-523;
- package SOT-23;
- altri package a doppio diodo;
- file Gerber;
- dati pick-and-place;
- BOM;
- disegno di assemblaggio;
- informazioni sulla polarità;
- note speciali di orientamento;
- la direzione del firmware non corrisponde all’hardware;
- la configurazione GPIO della matrice è errata;
- una pista comune di riga o colonna è aperta;
- lo scanner usa dimensioni di matrice errate;
- diodo invertito;
- difetto di saldatura;
- pista aperta;
- switch difettoso;
- componente errato;
- pista di riga o colonna interrotta;
- connettore o giunto di saldatura difettoso;
- assegnazione errata del pin MCU;
- cortocircuito;
- configurazione della matrice errata;
- la Row ha realmente un pull-up;
- la Column è realmente configurata e pilotata LOW;
- lo switch si chiude elettricamente;
- la polarità consente corrente da Row a Column;
- il firmware usa la relazione di scansione prevista in stile ROW2COL;
- diodi mancanti;
- orientamento errato dei diodi;
- cablaggio errato della matrice;
- configurazione della matrice nel firmware errata;
- logica personalizzata della matrice attiva;
- tasto rilasciato: Row può restare HIGH tramite il pull-up;
- tasto premuto con polarità ROW2COL corretta: Row viene portata verso Column LOW;
- tasto premuto con polarità inversa: Row può restare HIGH;
- verificare l’anodo nello schema;
- verificare il catodo nello schema;
- verificare la barra del catodo;
- confermare il codice esatto del componente;
- confermare il package prima della produzione;
- confermare la rotazione di montaggio;
- confermare la polarità dopo l’assemblaggio;
- eseguire l’ispezione ottica automatica;
- eseguire il test elettrico della matrice;
- conservare i dati di produzione con la polarità documentata.
Checklist di progettazione della direzione dei diodi
Progetto elettrico
- Definire COL2ROW o ROW2COL.
- Identificare lato pilotato e lato letto.
- Confermare il percorso della corrente con tasto premuto.
- Confermare la polarizzazione diretta di ogni diodo.
- Confermare il blocco dei percorsi inversi indesiderati.
Schema
- Verificare il simbolo del catodo.
- Verificare i nomi delle reti di anodo e catodo.
- Verificare i collegamenti di switch e diodo alle linee previste.
- Allineare schema e firmware.
- Evitare simboli di polarità ambigui.
Layout PCB
- Verificare la polarità di ogni footprint.
- Aggiungere una marcatura chiara del catodo.
- Mantenere l’orientamento coerente quando possibile.
- Controllare il disegno del package esatto.
- Assicurarsi che il corpo non copra la serigrafia.
Firmware
- Verificare
DIODE_DIRECTION. - Verificare
matrix_pins.cols. - Verificare
matrix_pins.rows. - Far corrispondere direzione firmware e diodi fisici.
- Cercare eventuale scansione personalizzata.
Produzione
- Verificare codice BOM e package.
- Verificare marcatura del catodo e rotazione nel disegno.
- Verificare la rotazione pick-and-place.
- Ispezionare la polarità dopo il montaggio.
- Eseguire AOI e test elettrico della matrice.
Riferimento rapido COL2ROW e ROW2COL
| Voce | COL2ROW | ROW2COL |
|---|---|---|
| Catodo | Row | Column |
| Anodo | Column | Row |
| Direzione QMK | COL2ROW |
ROW2COL |
| Funzione di lettura | matrix_read_cols_on_row() |
matrix_read_rows_on_col() |
| Percorso tipico | Column → Switch → Diodo → Row | Row → Diodo → Switch → Column |
| Column LOW, Row letta | direzione standard non corrispondente | corrispondente |
| Row LOW, Column letta | corrispondente | direzione standard non corrispondente |
Non scegliere la direzione solo dalle parole “Column” e “Row”. Determina il lato pilotato, quello letto e la polarizzazione diretta quando il tasto è premuto.
Secondo la definizione standard QMK, COL2ROW porta la marcatura del catodo verso Row e ROW2COL la porta verso Column. QMK documenta funzioni di lettura separate per le due configurazioni.
Assemblaggio PCB per tastiere HILPCB
La polarità corretta dei diodi è essenziale per una PCBA affidabile. Il processo produttivo deve verificare codice, package, rotazione di montaggio, marcatura del catodo e funzionamento della matrice.
HILPCB supporta verifica BOM e componenti, programmazione pick-and-place, assemblaggio SMT, ispezione ottica automatica (AOI), test elettrici, prototipi, piccoli lotti e produzione in volume.
I dati di produzione devono indicare chiaramente codice, package, polarità e orientamento di assemblaggio del diodo.
Conclusione
Il metodo più sicuro è partire dal circuito reale di scansione.
Column = uscita LOW
Row = ingresso con pull-up
Il diodo deve condurre:
Row → Column
quindi:
Anodo → Row
Catodo → Column
Nella terminologia QMK standard questo corrisponde a ROW2COL.
Se invece la Row è pilotata LOW e la Column ha un pull-up, la corrente deve andare da Column a Row: anodo verso Column e catodo verso Row, cioè COL2ROW.
Row = uscita LOW
Column = ingresso con pull-up
Column → Row
Anodo → Column
Catodo → Row
Perciò una Row vicina a 3,3 V mentre Column è LOW può essere il normale risultato di un diodo polarizzato inversamente quando l’hardware usa COL2ROW ma lo scanner si aspetta la direzione opposta.
Verifica sempre l’implementazione reale dello scanner, soprattutto con matrici personalizzate: il comportamento elettrico dipende dai GPIO pilotati e letti dal firmware, non dal solo nome.

