JOYSTICK CON ASSI X, Y e Z

Tutorial per Spiegare il Funzionamento del Joystick con Assi X, Y e Z e per Illustrare come Interfacciarlo con i Microcontrollori…

 

 
 

 



 

INTRO

Il joystick è un dispositivo che trasforma il movimento di una leva in informazioni di tipo elettrico che permettono di codificare delle informazioni di movimento su due assi. Il modulo della YwRobot  è un joystick detto a tre assi, x, y e z ma in realtà lungo l’asse z ha un pulsante, non codifica nessuna informazione di spostamento, ma può essere usato come pulsante per eseguire qualche azione.

Il sistema utilizza due potenziometri per rilevare la posizione della leva lungo x e y e utilizza un interruttore per la pressione lungo l’asse z.  Il joystick può essere usato per controllare macchinine radiocomandate, robot o droni.  Il joystick ha il seguente aspetto:

I pin possono essere 5 oppure come in questo caso 9.

 




 

SCHEMA INTERNO E FUNZIONAMENTO

Lo schema interno dello joystick è il seguente:

Per la rilevazione lungo gli assi X e Y vi sono due potenziometri che in posizione di equilibrio sono a metà della corsa. Nella foto del modulo è presente una connessione separata per VCC e GND per ogni asse arrivando a 9 pin, nei moduli a 5 pin i pin di VCC e GND sono solo due e sono in comune per tutti e tre gli assi, come mostrato nel seguente schema:

Il funzionamento  è quindi identico, cambiano solo le connessioni.

Il modulo a 9 pin permette però di escludere un canale se non serve risparmiando 100uA, oppure permette di connettere gli assi su diversi microcontrollori con diverse tensioni di alimentazione e permette di alimentare gli assi con tensioni diverse se si hanno esigenze particolari.

Essendo i potenziometri a metà della loro corsa, la tensione presente in uscita sarà VCC/2 quando il joystic è in posizione iniziale e cresce a VCC movendo verso un estremo mentre scende a 0 muovendo verso l’estremo opposto. Per quanto riguarda l’asse Z, il segnale in uscita è a 0V quando il joystick non è premuto mentre è a tensione VCC quando viene premuto.

Ovviamente se si usano 3 VCC diverse vi saranno tre diversi livelli di tensione massimi.

Il discorso fatto in precedenza è ideale, infatti potrebbe succedere che il potenziometro non è perfettamente a metà corsa oppure non sia perfettamente lineare, facendo si che anche quando il joystick è a riposo, la tensione in uscita dagli assi X e Y non sia VCC/2 ma qualche decina di millivolt in più o meno.

Lo stesso discorso si può fare per gli estremi che dovrebbero essere VCC e GND ma in realtà possono essere un valore minore di VCC di qualche decina di mV oppure nel caso dell’altro estremo potrebbero essere qualche decina di mV invece di 0.

Può anche succedere che per via di non linearità del trimmer usato lungo gli assi i valori di tensione crescano più velocemente per un tratto e meno per un altro tratto andando a creare un problema di sensibilità a tratti.

Questi valori sono accettabili e non è detto che siano simmetrici. Questi problemi possono essere risolti in via software anche se il problema di non linearità è difficilissimo da risolvere. Se il dispositivo sotto test ha valori di errore maggiore di 100mV in software un aggiustamento è obbligatorio per non creare problemi.

 

INTERFACCIAMENTO CON MICROCONTROLLORE

Lo schema di interfacciamento è il seguente:

Il modulo joystick è alimentato alla stessa tensione del microcontrollore. Le due uscite del canale X e Y sono connessi a due canali del ADC. Per l’asse Z si può usare un normale pin di input o un pin di interrupt.

Per quanto riguarda l’ADC non è necessario che sia interno al microcontrollore, può anche essere esterno e possono anche essere due diversi per ogni canale poi connessi o in SPI o altro protocollo di comunicazione al microcontrollore. La cosa più semplice è però utilizzare un microcontrollore con ADC integrato.

Per quanto riguarda il codice si può fare una fase iniziale in cui viene tarato il modulo andando a leggere i valori di X e Y e quindi creare due variabili che contengono le posizioni di riposo del joystick. Per applicazioni avanzate si può anche realizzare un breve codice per tarare gli estremi del joystick.

Le uscite del joystick hanno una impedenza di uscita alta, nel caso peggiore di 5Kohm, quindi non bisogna collegare cavi di elevata lunghezza oppure carichi (come ad esempio LED o resistenze), inoltre linee molto lunghe creano rumore all’ingresso dell’ADC.

Per concludere, se vi sono due joystick servono 4 canali dell’ADC, non si possono connettere insieme gli assi X di uno e X dell’altro (stesso discorso per l’asse Y e Z) perché si avrebbe una perdita di informazione di tutti e due i joystick.




 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *