Gestione di un switch rotativo 12 posizioni su un ingresso analogico

Salve a tutti,

il mio livello di elettronica è praticamente sotto zero e da qualche mese mi diletto con Arduino cercando di colmare le mie enormi lacune. Il quesito potrà sembrare, alla maggior parte di voi, banale ed elementare ma un eventuale risposta dovrebbe essere facile, rapida e a me risolverebbe un sacco di riserve...

All'interno di un mio progetto ho necessità di conoscere la posizione di un switch rotativo a 12 posizioni e naturalmente ho due soluzioni: utilizzare 12 ingressi digitali o un solo ingresso analogico. Visto che siamo qui per sperimentare ho voluto cimentarmi nella soluzione più difficile...

Il rotary switch che ho scelto è questo preso su Amazon.

Lo schema di collegamento semplificato, su Frizting è il seguente (mi perdonino i più sofisticati non ho trovato il rotary e sono incapace di crearmi un oggetto simile quindi nello schema ci sono 12 pulsanti...):

In pratica, ho creato un partitore di tensione, e calcolato le diverse resistenze per avere degli intervalli più regolari possibili in modo da ottimizzare i valori e avere range uniformi, ovviamente utilizzando valori di resistenze commerciali ho dovuto cedere a qualche compromesso.

I miei dubbi sono sull'assorbimento del circuito e prima di rischiare di fiatare il mio povero Arduino vorrei un parere. Non ho molta fiducia nei valori calcolati di corrente e assorbimento...

I risultati dei miei calcoli è il seguente:

Se qualche buon'anima potesse verificare il lavoro fatto, in rete ho trovato esempi di lavori simili ma solo fino a 6 stati mentre con questo mio progetto mi spingo fino a 12. Spero che se ottimizzato possa un domani essere di aiuto a qualche altro neofita.

A lovoro finito mi sono accorto che forse ho creato un progetto per 13 posizioni, la 13a sarebbe con i cavi scollegati dallo switch, ma l'ho lasciato così per non ricalcolate tutto quanto e avere la possibilità di segnalare in output un bel "hardware error!!!".

Un saluto e un grazie in anticipo a tutta la crew.

Ciao, se hai uno switch rotativo, puoi mettere le resistenze tutte uguali. In pratica fai una serie di 11 resistenze tra +vcc e gnd e prelevi una tensione dallo switch pari a +vcc(posizione/11) dove posizione è da 0 a 11 .

Stefano

Puoi usare questo sistema ... ogni posizione e' un undicesimo di VCC (tranne ovviamente la prima che e' zero) ... la resistenza da 100 ed il condensatore servono solo per eliminare il piu possibile i disturbi da commutazione, e per compensare, se necessario, l'apertura momentanea del pin di uscita (secondo il modello di switch rotativo, alcuni chiudono il contatto successivo prima di aprire il precedente durante la rotazione, altri, anche se pochi, no, per cui il pin di uscita, anche se solo per un'istante, si trova "volante", e con la velocita' della MCU potrebbe essere interpretato come un comando errato ... se dovesse succedere, la presenza del condensatore mantiene il livello di tensione precedente per l'istante di apertura, evitando il problema)

Grazie Etemenanki e cam9500,

decisamente una soluzione più pulita e semplice.

Tra l'altro mi pare di capire che così ci sono solo tre fili invece dell'incubo della ragnatela della mia soluzione... :smiley:

Stasera la provo ma sicuramente sarà un successo!

Grazie

Si, te la cavi con semplicità :wink:
Bella la finezza Ete!

Stefano