Qual è la modalità di interfaccia dell'encoder arduino

2022-09-08
Classificazione dell'encoder:

Secondo il principio di funzionamento: tipo fotoelettrico, tipo magnetoelettrico e tipo a spazzola di contatto;

Secondo il metodo di incisione del disco codice: tipo incrementale e tipo assoluto;


Questa è una breve introduzione da Internet. Ho contattato solo ilArduinocodificatore e gli altri non sono stati ancora utilizzati.

Gli encoder di Arduino sono incrementali. Ha un totale di 5 fili.

Sono rispettivamente "CLK", "DT", "SW", "+", "GND".

"+", "GND":

Inutile dire che VCC e GND possono essere collegati al VCC e GND della scheda.

"SW":

Secondo Arduino, quando la manopola completa un giro, il pin emette un segnale di salto di livello, che è equivalente al segnale "Z" spesso indicato dal codificatore rotante. In effetti, questo che ho comprato è solo un interruttore, ovvero la parte della manopola può premerlo verso il basso (simile al pulsante di regolazione del volume su un'auto) e l'interfaccia genererà un bordo di discesa. Quindi l'MCU esegue l'elaborazione pertinente.

"CLK", "DT":

I nomi della serigrafia visualizzati su questo modulo sono questi due. Non capisco perché questa serigrafia lo sia. Dovrebbe effettivamente corrispondere ai segnali "A" e "B" comunemente usati dall'encoder. I due segnali sono generati come segue:

Quale ècodificatore arduinomodalità interfaccia

Qual è la modalità di interfaccia dell'encoder arduino
rotazione positiva

Come mostrato nella figura sopra, quando la manopola inizia a ruotare in avanti, "A" passa da livello basso a livello alto e "B" rimane invariato; quando la manopola viene ruotata nella posizione predeterminata, "A" rimane al livello alto e "B" Quindi seguito da una transizione dal basso all'alto. Vale a dire, nella rotazione in avanti, "A" inizia sempre il cambio di livello con "B" prima.

Qual è la modalità di interfaccia dell'encoder arduino
anti-rotazione

Rotazione inversa: contrariamente alla rotazione in avanti, "B" inizia sempre il cambio di livello con "A" prima.
Quindi qui, la serigrafia di questi due fili come "CLK", "DT" mi confonde un po'. Non ho trovato alcuna informazione rilevante, quindi la metto da parte per ora e saprò perché quando avrà un'applicazione pratica la prossima volta.

In base alla suddetta legge di rotazione in avanti e rotazione inversa, il senso di rotazione dell'encoder e il suo angolo di rotazione possono essere determinati in base alle informazioni emesse dall'encoder. I metodi specifici sono i seguenti:
Collegare "CLk" e "DT" a qualsiasi porta IO dell'MCU con interrupt esterni. Il metodo di elaborazione è il seguente:

Configurare le due porte IO come interrupt esterni double-edge.
Quando una delle porte IO rileva un fronte di salita o di discesa, lo stato del livello dell'altra porta IO viene rilevato nella funzione di interrupt. Prendendo ad esempio la rotazione in avanti, durante la rotazione in avanti, il fronte di salita di "A" provoca prima un'interruzione e lo stato di livello ottenuto di "A" e "B" è "10", quindi il fronte di salita di "B " rileva "A". ", Lo stato del livello "B" è "11".
Se continua a funzionare, lo stato del livello di "A" e "B" è "10 - 11 - 01 - 00 - 10 - ...".
Se è sempre invertito, lo stato del livello di "A" e "B" è "01 - 11 - 10 - 00 - 01 - ..."
In questo modo è possibile determinare il senso di rotazione dell'encoder e, una volta completata la transizione simultanea di "A" e "B", è possibile aumentare o diminuire il conteggio di rotazione dell'encoder in base al senso di rotazione dell'encoder.