KY-040 Rotary encoder per Arduino

Il modulo KY-040 Rotary encoder  fa parte della serie “37 In 1 Sensor Module Board Set Kit For Arduino“. Questo modulo dotato di encoder rotativo  fornisce in dati digitali, secondo il codice Gray a 2bit , la rivoluzione in gradi e quindi la posizione angolare dell’asse dello stesso.

KY-040 Rotary encoder

Come funziona l’encoder rotativo del modulo KY-040

Il KY-040 Rotary Encoder è un modulo molto diffuso nei progetti di elettronica e Arduino, utilizzato per rilevare la rotazione di una manopola e, in molti casi, anche la pressione del pulsante integrato.
A differenza dei potenziometri, l’encoder rotativo non misura una posizione assoluta, ma fornisce informazioni sul movimento: direzione e numero di scatti.

Encoder incrementale a due canali

Il cuore del KY-040 è un encoder rotativo incrementale basato su due interruttori.
Una volta  l’interruttore collega il pin A (CLK) al pin C e l’altro switch collega il pin B (DT) a C.
Questo sfasamento, detto quadratura, è fondamentale per determinare:

  • Il verso di rotazione (orario o antiorario)
  • Il numero di scatti effettuati

Quando la manopola viene ruotata, i contatti interni si chiudono e si aprono in una sequenza precisa. Analizzando quale canale cambia stato per primo, il microcontrollore può capire la direzione della rotazione.

KY-040 Rotary encoder

KY-040 Rotary encoder

Utilizzi dell’encoder

L’encoder è facile da usare per regolazioni incrementali come:

  • controllo del volume
  • navigazione nei menu
  • impostazione di valori numerici

Pulsante integrato

Oltre alla rotazione, il modulo KY-040 Rotary encoder include anche un pulsante attivabile premendo la manopola.
Il pulsante è elettricamente indipendente dall’encoder e viene normalmente collegato a un ingresso digitale separato, spesso utilizzato per confermare una selezione o cambiare modalità di funzionamento.

Segnali di uscita e collegamenti

Il modulo KY-040 Rotary encoder presenta solitamente 5 pin:

KY-040 Rotary encoder - pin

I segnali in uscita sono di tipo digitale e possono essere letti direttamente da un microcontrollore. Tuttavia, trattandosi di contatti meccanici, è comune dover gestire il rimbalzo (debounce) via software o hardware per ottenere letture stabili.

Differenze rispetto a un potenziometro

A differenza di un potenziometro:

  • l’encoder può ruotare infinite volte
  • non ha un valore minimo o massimo assoluto
  • è ideale per interfacce utente e controlli incrementali

 

Descrizione del circuito del modulo KY-040 Rotary Encoder

Sotto è visibile lo schema elettrico tipico del modulo KY-040 Rotary Encoder che integra un encoder rotativo incrementale e un pulsante su una singola scheda, pronto per il collegamento a un microcontrollore.

KY-040 Rotary encoder - circuito

KY-040 Rotary encoder - pcb

Schema e PCB realizzato con EasyEDA: Un servizio per il disegno di circuiti e la loro simulazione, progettazione e produzione di PCB. Provalo è gratuito!

Alimentazione e connettore

Il modulo utilizza un connettore a 5 pin (H1) che semplifica l’uso del modulo evitando cablaggi complessi.
La parte centrale del circuito è l’encoder rotativo meccanico (datasheet), costituito da tre terminali principali:

  • A (CLK)
  • B (DT)
  • C (Common)

Il terminale C è collegato a GND e rappresenta il riferimento comune.
Abbiamo poi i pin 1 e 2  che fanno capo al pulsante momentaneo, elettricamente separato dalla parte rotativa.
Un terminale del pulsante è collegato a GND mentre l’altro è collegato al segnale SW
Gli “X” mostrati sotto l’encoder indicano contatti meccanici non utilizzati elettricamente.

KY-040 Rotary encoder - misure

Resistenze di pull-up

Nello schema troviamo tre resistenze, le prime due collegano i segnali CLK e DT a VCC, mantenendoli normalmente a livello logico HIGH.

R1 (10 kΩ) → pull-up del segnale CLK
R2 (10 kΩ) → pull-up del segnale DT

Quando il contatto interno dell’encoder si chiude, il segnale viene portato a GND (LOW).
In questo modo, i segnali sono stabili quando l’encoder è fermo e si evitano stati flottanti sugli ingressi del microcontrollore.
La terza resistenza R3 (10 kΩ) di pull-up collega SW a VCC  e garantisce un segnale stabile e facilmente leggibile da un ingresso digitale.

  • pulsante rilasciato → SW = HIGH
  • pulsante premuto → SW = LOW

NOTA: non  sempre questa resistenza è saldata sul PCB, nel caso si ovviare, attivando la resistenza interna Arduino tramite il comando pinMode(SW, INPUT_PULLUP)

Funzionamento complessivo del circuito

  • Le resistenze R1, R2 e R3 assicurano segnali digitali definiti
  • L’encoder genera impulsi su CLK e DT durante la rotazione
  • Il pulsante fornisce un ingresso aggiuntivo per selezioni o conferme
  • Tutti i segnali sono compatibili con ingressi digitali standard di Arduino e microcontrollori simili

NOTA:  Poiché i contatti sono meccanici, i segnali possono presentare rimbalzi (bounce); spesso è necessario gestire il debounce via software.

Dove trovare il KY-040 Rotary encoder

Il modulo potrà essere trovato all’interno del Kit 37 Sensori per Arduino (codice HMTKITS) in vendita presso il sito Homotix. Inserire il codice sconto “ADRIROBOT” per ottenere uno sconto del 3%.

Il kit è anche disponibile anche presso il sito Futura Elettronica (codice 1606-SENSORKIT37).


Potrete trovare il Joystick anche presso il sito TechMaker codice SKU: CE482256.
Inserire nel carrello il codice sconto “ADRIROBOT” per ottenere uno sconto del 3%.

Sul sito Amazon tramite lo Store di AZDelivery link https://amzn.to/4q6nCmC

Sul sito Keyestudio  con il codice KS0013

Alcuni esempi di utilizzo

Lettura dati su display

In questo primo esempio, l’Arduino Nano V3.0 con OLED integrato,  gestisce la lettura dell’encoder e la visualizzazione delle informazioni sul display.
Il modulo KY-040 Rotary Encoder viene utilizzato per rilevare rotazioni e pressioni.

KY-040 Rotary encoder - schema collegamento Nano con display

In alternativa si potrà utilizzare un normale Arduino Nano con un display OLED da 0,91″ con SSD1306 e risoluzione 128×32, il codice utilizzabile è lo stesso.

KY-040 Rotary encoder - Collegamento schema con oled

Componenti utilizzati
Nano V3.0 con OLED integrato,

Rotary encoder KY-040 (con pulsante integrato)

 

Breadboard

Cavetti di collegamento

KY-040 Rotary encoder - test con OLED

KY-040 Rotary encoder - test con OLED

Collegamento del rotary encoder KY-040

Pin KY-040ArduinoDescrizione
GNDGNDMassa comune
+5V ArduinoAlimentazione encoder
CLKPin D2Segnale di clock encoder
DTPin D3Segnale dati encoder
SWPin D4Pulsante integrato

Codice utilizzato

Descrizione del programma, pensato per Nano con OLED integrato 0.91″

  • legge un rotary encoder KY-040
  • rileva direzione e conteggio delle rotazioni
  • utilizza il pulsante SW per azzerare il contatore
  • visualizza direzione e valore del contatore su un display OLED I2C

 

Gestione accensione led

In questo secondo esempio, il cui schema è visibile sotto ,  si utilizza un Arduino Nano per leggere il Rotary encoder KY-040 e comandare l’accensione progressiva di una barra LED a 8 segmenti.

KY-040 Rotary encoder- schema collegamenti

Componenti utilizzati

Arduino Nano

Rotary encoder KY-040 (con pulsante integrato)

Modulo LED Bar 8 bit – catodo comune

Breadboard

Cavetti di collegamento

KY-040 Rotary encoder - test con led

KY-040 Rotary encoder - test con led

Collegamento del rotary encoder KY-040

Pin KY-040ArduinoDescrizione
GNDGNDMassa comune
+5V ArduinoAlimentazione encoder
CLKPin D2Segnale di clock encoder
DTPin D3Segnale dati encoder
SWPin D4Pulsante integrato

Collegamento del modulo LED Bar 8 bit (catodo comune)

Il modulo LED Bar è composto da 8 LED con un catodo comune (COM). Ogni LED è pilotato singolarmente da un pin digitale di Arduino. Portando il pin digitale a livello HIGH, il LED corrispondente si accende grazie al catodo comune collegato a massa.

LED BarArduino Nano
LED D1Pin D12
LED D2Pin D11
LED D3Pin D10
LED D4Pin D9
LED D5Pin D8
LED D6Pin D7
LED D7Pin D6
LED D8Pin D5
COMGND

Codice utilizzato

Ruotando il rotary encoder, Arduino legge i segnali CLK e DT e in base al verso di rotazione:

  • orario → aumenta il numero di LED accesi
  • antiorario → diminuisce il numero di LED accesi

La barra LED fornisce quindi un feedback visivo immediato della posizione del rotary encoder.

Conclusione

Il KY-040 Rotary encoder è un componente semplice ma molto potente, che consente di trasformare una rotazione meccanica in segnali digitali interpretabili da un microcontrollore. Grazie alla rilevazione della direzione, agli scatti meccanici e al pulsante integrato, è una soluzione economica e versatile per creare interfacce di controllo intuitive.