Direzione dei diodi per tastiere: guida all’orientamento COL2ROW e ROW2COL

Scopri come funzionano COL2ROW e ROW2COL, come riconoscere anodo e catodo e come far corrispondere l’orientamento del diodo al metodo di scansione della matrice.

Direzione dei diodi per tastiere: guida all’orientamento COL2ROW e ROW2COL

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

  1. Come la matrice della tastiera usa i diodi
  2. Identificare anodo e catodo
  3. COL2ROW: direzione corretta e logica di scansione
  4. ROW2COL: direzione corretta e logica di scansione
  5. La causa più comune di confusione
  6. Footprint PCB e schema elettrico
  7. Test e troubleshooting
  8. 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:

  1. Quale lato pilota l’MCU?
  2. Quale lato legge?
  3. 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:

  1. Identifica la marcatura del catodo reale.
  2. Confrontala con quella del footprint.
  3. Controlla la direzione di tutti i diodi.
  4. Escludi componenti ruotati di 180 gradi.
  5. Confronta il package con la BOM.

Per i componenti SMD spesso serve un ingrandimento.

Test del singolo diodo

  1. Scollega l’alimentazione.
  2. Isola il diodo se la misura in circuito è ambigua.
  3. Seleziona la modalità test diodo.
  4. Collega il puntale rosso all’anodo atteso.
  5. Collega il puntale nero al catodo atteso.
  6. Conferma la conduzione diretta.
  7. 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.