Salve a tutti,
non sono nuovo nel mondo di Arduino, ma ho una problematica (sicuramente banale) che mi blocca a livello di elettronica.
Ho la necessità di utilizzare un classico interruttore, per gestire l'accensione di un relè. La problematica si riscontra quando tra l'arduino e l'interruttore vi sono parecchi metri di cavo(tra andata e ritorno parliamo di circa 8-10 metri), comportando il fatto che la scheda non riesca a rilevare il cambio di stato sul pin in ingresso.
Leggendo un po online e su questo forum, ho capito che il tutto è dovuto alla bassa corrente in uscita (il cavo è collegato su un pin digitale in OUTPUT per poi rientrare in un pin digitale in INPUT).
Tra la marea di informazioni che ho trovato online, ora mi chiedo:
Utilizzando un cavo relativamente poco spesso(magari quelli utilizzati nei citofoni) riuscirei ad aggirare questo problema?
Oppure è necessario recuperare una fonte diversa di tensione con una corrente piu elevata, per poi con un partitore di tensione e partitore di corrente regolarla in ingresso sull'arduino?
Veramente più il cavo è spesso, minore è la sua resistenza (seconda legge di Ohm: R = resistività * lunghezza / sezione), quindi con un cavo più sottile amplificheresti il problema. La soluzione corretta è la seconda che suggerisci, già con 12V dovresti essere a posto, e puoi anche usare un optocoupler per l'ingresso su Arduino.
>enricop6: essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda: - serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - pinout delle varie schede by xxxPighi: Pinout - link generali utili: Link Utili
>SukkoPera: Ti prego, prima di rispondere, di verificare sempre se l'utente abbia effettuato la presentazione, cosa che, ovviamente, NON può essere possibile se il suo numero di post è 1. Grazie anticipatamente per la collaborazione.
Serve una resistenza di pull-up o pull-down sull'ingresso di Arduino, per forzare a livello alto o a livello basso l'ingresso quando l'interruttore è aperto. Senza la resistenza, quando l'interruttore è aperto lo stato dell'ingresso è indeterminato. Puoi attiva un pull-up interno al microcontrollore:
pinMode(pin,INPUT); // Imposta il pin come ingresso
digitalWrite(pin,HIGH); // Attiva il pull-up
Sui pin di ingresso si usa un pulldown da 4K7, con relativo condensatore di debounce da 100n, piu uno zener da 4.9V, ed una resistenza in serie da 100 o 220 ohm verso il pulsante ... che chiudera' sull'alimentazione a 9V o simile con cui si alimenta il jack ... questo dovrebbe garantire sia l'attenuazione dei disturbi ad interruttore aperto, che un segnale "sicuro" ad interruttore chiuso ... poi ovviamente non usare cavi troppo sottili ... se proprio i disturbi sono eccessivi anche cosi, tocca passare al cavo schermato (due poli, con schermo collegato a massa solo da un lato, quello vicino ad arduino, per evitare anelli di massa)
Il mio intento era solo quello di avere un'interrutore di controllo per gestire l'attivazione o meno del sistema, e abbiamo risolto semplicemente interrompendo lallimentazione della stessa scheda.
Si è provato con una fonte esterna recuperata da un alimentatore, e utilizzando un partitore di tensione e successivamente uno di corrente, si è riusciti a fare leggere il valore allo stesso arduino, come suggerito da