Pagina 1 di 4

Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 15:02
da dadothebest
Ciao a tutti, vorrei collegare tre interruttori ad arduino in un solo pin in ingresso per controllarci tre diversi dispositivi. Ho eseguito il collegamento abbinando ad ogni interruttore una resistenza diversa (10 - 15 - 20kOhm mi sembra) e mettendone una in serie a tutti gli interruttori da 10kOhm. Ogni volta che si innesca un'interruttore essendo collegati in parallelo ho un valore di resistenza sempre diverso che va dai 15kOhm ai 50kOhm. Ho cosi collegato il tutto su arduino (pin analog 4 e +5Vcc) e avviato lo sketch che mi permette i vedere sulla seriale i valori in ingresso al pin dove sono collegati gli interruttori e ho notato che i valori non sono stabili ma oscillano di qualche valore e anche cambiando combinazione di interruttori si trovano tutti tra 700 e 800 rendendo inutile ogni utilizzo.
La parte hardware non dovrebbe essere sbagliata, quindi credo sia un problema di arduino, secondo voi cosa potrebbe essere?

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 15:06
da IsidoroKZ
Schema (ovviamente in fidocadj)? Attivi un solo interruttore per volta o hai tutte le 8 combinazioni possibili?

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 16:08
da dadothebest
Spiego lo schema che è molto semplice. Ogni interruttore è formato da due morsetti: il primo morsetto di ogni interruttore è collegato tra loro, mentre il secondo ha una resistenza di un valore diverso collegata in serie e ogni capo è collegato insieme. Quindi ho un morsetto (con i tre interruttori in parallelo) che collego a +Vcc e un altro morsetto (con le 3 resistenze in parallelo) che collego all'ingresso analogico di arduino inserendoci una resistenza in serie.
In questo modo per ogni combinazione di interruttori aperto-chiuso ho uno specifico valore di resistenza.
Se non sono stato chiaro riporto lo schema disegnato su fidocadj

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 16:24
da mir
dadothebest ha scritto:Se non sono stato chiaro riporto lo schema disegnato su fidocadj

offro io .. :D

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 16:38
da EcoTan
Comincerei a provare la tensione sul pin analog4 col tester, se il valore sia quello previsto per ciascun comando. Poi se le letture digitali, sia pure sballate, siano almeno ripetibili. Quanti bit ha lo ADC? A questo punto guarda il programma, io non conosco Arduino ma se non va ci deve essere l'errore.

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 16:45
da claudiocedrone
dadothebest ha scritto: ...ogni interruttore una resistenza diversa (10 - 15 - 20kOhm mi sembra) e mettendone una in serie a tutti gli interruttori da 10kOhm. Ogni volta che si innesca un'interruttore essendo collegati in parallelo ho un valore di resistenza sempre diverso che va dai 15kOhm ai 50kOhm...

Con i valori citati e se lo schema è quello che ha dedotto Foto Utentemir ciò non è possibile, il massimo valore ottenibile è 30 k... (e il minimo 14,6 k...)... 14,6 k, 16,7 k, 18,6 k, 20 k, 25 k e 30 k le combinazioni ottenibili (fatte salve le tolleranze sui valori nominali). O_/

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 17:33
da edgar
Se lo schema è quello il risultato è sempre di portare a +5V l'ingresso analogico, cambia solo la resistenza in serie.

Così dovrebbe andare meglio


Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 17:40
da WALTERmwp
dadothebest ha scritto:Spiego lo schema che è molto semplice (...)
no, lo schema non si spiega se si può evitare di farlo, lo dovresti disegnare, a maggior ragione se è semplice, e non fare il pigro, almeno tu non abbia difficoltà d'altro genere.
Quindi leggi subito qui, se poi hai problemi puoi sempre chiedere.

Saluti

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 17:44
da PietroBaima
Non capisco lo schema dell'OP.

Se il pin è configurato come ingresso analogico, allora l'impedenza di ingresso deve essere trascurabile rispetto a 10kOhm, che significa che quello schema non potrà mai funzionare senza un inseguitore di tensione.

Inoltre, cosa più rilevante, il pin collegato all'ingresso andrebbe collegato a GND e l'ingresso andrebbe preso nel punto intermedio fra le resistenze.

Anche facendo così, comunque, il circuito non funziona molto bene, perché il coefficiente di partizione alpha segue una legge del tipo \alpha=\frac{1}{R_{eq}(sw1,sw2,sw3)/R+1}, dove R_{eq}(sw1,sw2,sw3) è la legge con la quale varia la resistenza equivalente del ramo "di sopra" in funzione dello stato degli interruttori (gli interruttori sono SW1,SW2,SW3) e R è la resistenza connessa a GND.

Questo è importante perché significa che la tensione di uscita è non lineare in funzione dello stato degli interruttori e quindi diventerai facile preda del rumore.

Per esempio, se metti le R in serie agli interruttori seguendo la regola R,2R,4R, avendo il convertitore A/D di Arduino 12 bit, dovresti ottenere questi valori digitali, in funzione dello stato degli interruttori:

Codice: Seleziona tutto
{0, 819, 1365, 1755, 2048, 2275, 2457, 2606}


facendo il rapporto incrementale del vettore ottengo:

Codice: Seleziona tutto
{819, 546, 390, 293, 227, 182, 149}


Come previsto fra gli ultimi due c'è un salto di soli 149 valori. Come progetto fa abbastanza pena, considerando che fra i primi due ce ne sono 819. Inoltre non sfrutti tutta la dinamica dell'ADC.

Naturalmente non puoi usare uno switch (nel software intendo) per vedere quale valore digitale ti arriva, perché non ti arriverà mai davvero il valore che ti ho calcolato, perché c'è il rumore e la tolleranza delle resistenze. Dovresti fare un rilevatore a scarto quadratico medio o perlomeno, per farla brutale, controllare quale valore della mia tabella è più vicino al valore letto.

Se, però, come ti è stato chiesto, gli interruttori si dovessero chiudere uno alla volta, allora sarebbe diverso.

Ciao,
Pietro

Re: Collegare tre interruttori in un unico pin?

MessaggioInviato: 31 lug 2017, 17:48
da edgar
PietroBaima ha scritto: avendo il convertitore A/D di Arduino 12 bit

Ne ha solo 10 ahimè :?