Resistenza pull up interna ed esterna

Buon pomeriggio a tutti, da appassionato e i elettronica, mi sto avvicinando ad arduino per soddisfare le mie necessità in campo domotico. Sto facendo intuire con successo e molto divertimento arduino al mio programma di gestione domotica (programma commerciale). Sto gestendo degli ingressi digitali senza grossi problemi abilitando la resistenza di pull up interna di arduino. Di conseguenza i pinoli in ingresso vengono portati a massa alla pressione del pulsante o interruttore. La domanda è curiosità è questa :
Se per qualsiasi caso dovessi spegnere arduino e togliere alimentazione, immagino che non ci siano problemi se alcuni pin dovessero rimanere collegati a gnd. Il dubbio sorge c'è ho riguarda il periodo di riavvio di arduino. Nel momento in cui lo rialimento, durante la fase di boot dove viene eseguito il programma, ci sono problemi se alcuni pin ri mangono collegati a gnd? Nello specifico, potrebbe succedere qualcosa di dannoso nel tempo impiegato da arduino a settare i pin come input e poi abilitare la resistenza interna di pull up? Per sicurezza potrei utilizzare resistenza esterna ma credo che il dicorso sarebbe lo stesso.
Grazie!
Cristian

Non succede nulla perché all'accensione del micro i pin sono settati come input per cui non crei nessun corto.

Grazie per la risposta!
Effettivamente avevo letto quanto hai detto ma una risposta (come la tua) mi rassicura parecchio. E che risposta!!! Dal "guru" :slight_smile:

Grazie di cuore, continuerò a leggervi e ad imparare.

khriss75:
Grazie per la risposta!

Più in generale, tutti i micro/mcu durante la fase di avvio a freddo, o riavvio dopo un reset, hanno tutti i pin settati in condizioni di alta impedenza, a seconda del processore possono essere come input o in condizione three state, stessa cosa vale per tutte le periferiche interne che sono disabilitate fino a che non vengono inizializzate da software.

Sto avendo problemi con alcuni ingressi.
Nonostante sia abilitata la resistenza di pull up interna, mi ritrovo con falsi contatti (cavi lunghi).
Ci sono problemi se metto anche una R da 10k tra +5V e ingresso?

khriss75:
Nonostante sia abilitata la resistenza di pull up interna, mi ritrovo con falsi contatti (cavi lunghi).

False letture, forse. Un falso contatto lo hai su un contatto non saldato.
Cavi lunghi... quanto? Con le tensioni e le correnti di Arduino non ci fai molta strada, per collegamenti lunghi devi attrezzarti in altro modo. Per cosa ti servono i collegamenti lunghi?

Hai ragione, intendevo false letture...
Lunghezza cavi? Tra andata e ritorno (porto il gnd all'interruttore e poi torno indietro ad Arduino) saranno circa 10-15 metri.
Ho provato a mettere delle resistenze di pull up esterne da 10k per ogni ingresso ma non ho risolto.
Ora sono sceso a 1k, tengo monitorato questa notte ma ho già visto una falsa lettura.
Come potrei risolvere?

Per false letture intendi picchi causati da disturbi captati dal filo ? ... hai provato a mettere il classico RC che si dovrebbe sempre mettere su qualsiasi ingresso digitale in presenza di cavi lunghi (e che fa anche da filtro per i rimbalzi degli interruttori ) ?

Condensatore da 220nF fra il pin e massa, resistenza da 1K fra pin e filo ... prova e vedi se cambia qualcosa (lasciando il pullup da 10K)

A proposito, non e' che stai facendo passare i fili in una canalina insieme a quelli della 220, vero ? ... :stuck_out_tongue:

Inoltre,quale tipo di cavo hai adoperato??.. Io nel mio impianto Domotico ho cavi molto lunghi,che per necessità passano dentro tubi con la 220,che sono tutti cavi,schermati da antifurto. Gli schermi sono tutti collegati insieme e a massa e l'unico problema di false letture era sul filo,collegato all'ingresso di interrupt dell'arduino.
Ho risolto con un semplice filtro passa alto software.

Prima di tutto un doveroso ringraziamento a voi che mi state supportando.
Non essendomi mai imbattuto in problematiche simili, brancolo nell'ignoranza totale nella materia "disturbi/false letture".
Il fine è quello di risolvere il mio problema (e ci mancherebbe!) ma la cosa che reputo più importante è l'insegnamento che mi state offrendo: grazie.

@Etemenanki: si, le false letture sono captate da segnali che probabilmente vengono captati dal filo. Non ho provato a mettere nessun filtro RC in quanto durante le simulazioni (cavi corti) non avevo avuto di questi problemi. Seguirò il tuoi consigli: condensatore da 220nF fra il pin e massa, resistenza da 1K fra pin e filo ... prova e vedi se cambia qualcosa (lasciando il pullup da 10K).
Domanda: nello sketch ho già abilitato la pull up interna, la lascio (aggiungendo quella esterna) oppure metto solo quella esterna da 10K e disabilito quella interna?
I cavi corrono nel controsoffito, ho cercato di tenerli lontani dai cavi 220V ma in alcuni punti si incrociano.

@ibba: anch'io ho utilizzato cavi schermati per antifurto. da bravo idiota ho collegato tra loro la schermatura ma non ho collegato il tutto a gnd (che imbecille che sono).
Faccio le prove e vi faccio sapere.

Proprio ora si è spento il compressore del frigorifero, si è accesa la luce dell'ingresso e poi si è spenta... Durante tutta la mattinata invece non ho avuto false accensioni...

Come principio generale, le schermature dei cavi (se non sono gia usate per portare il negativo) vanno collegate tutte a massa da un solo lato (quello in cui arrivano tutti i cavi, in genere, perche' e' piu comodo) ed anche a terra (se non si e' sicuri che non ci siano dispersioni, collegare a terra con un condensatore da 330n 250V) ... se invece la schermatura porta i negativi, e' gia a massa.

Le pullup interne sono da 20K, in teoria dovrebbero essere sufficenti, se proprio vuoi essere sicuro, metti anche l'esterna da 10K, ed usa una resistenza da 470 ohm fra pin e filo.

Ok, collegate le schermature e messe a gnd.
Purtroppo non è ancora risolutivo.

Ora rimetto le pull up esterne da 10K.
Giusto per andare con i piedi di piombo, Etemenank, quale soluzione adotto?
Nell'ultimo post consigli "usa una resistenza da 470 ohm fra pin e filo"
Prima invece "Condensatore da 220nF fra il pin e massa, resistenza da 1K fra pin e filo"

Io il condensatore ce lo metterei... R da 470 o 1K?

non e' importantissimo, ma in genere si usa per la resistenza in serie, un valore che sia almeno un decimo (o anche meno) di quella che c'e' come pullup ... 10K e 20K in parallelo ti danno circa 6.6666 ... K, quindi 470 ohm va bene, ma puoi usare anche 330 o 220, non cambia molto ...

Sto continuando a monitorare, domani provo a mettere il filtro rc.

Ibbba, cosa sarebbe un filtro software? O meglio, credo di immaginarlo, mi faresti un esempio?

khriss75:
Sto continuando a monitorare, domani provo a mettere il filtro rc.

Ibbba, cosa sarebbe un filtro software? O meglio, credo di immaginarlo, mi faresti un esempio?

....semplicemente un timer: ovvero considero ad esempio uno stato alto solo su un pin solo se in effetti viene rilevato uno stato alto per X millisecondi,e viceversa per lo stato basso.. In questo modo qualunque transiente generato da disturbi semplicemente viene ignorato...

ibbba potrebbe anche aver risolto....forse, ma tu khriss potresti anche non risolvere il problema, passare un pin filtrato (hardware o software che sia) in canaline con tensioni di rete è da suicidio, troppe sono le variabili in gioch: tipo cavo, schermatura, tipo canalina ,
se vuoi tagliare la testa al toro e avere sicuro successo usa sempre fotoaccoppiatori con alimentazione separata

ibbba:

khriss75:
Sto continuando a monitorare, domani provo a mettere il filtro rc.

Ibbba, cosa sarebbe un filtro software? O meglio, credo di immaginarlo, mi faresti un esempio?

....semplicemente un timer: ovvero considero ad esempio uno stato alto solo su un pin solo se in effetti viene rilevato uno stato alto per X millisecondi,e viceversa per lo stato basso.. In questo modo qualunque transiente generato da disturbi semplicemente viene ignorato...

Ok, è come pensavo. Prendo in considerazione anche questa eventualità.
Grazie

icio:
ibbba potrebbe anche aver risolto....forse, ma tu khriss potresti anche non risolvere il problema, passare un pin filtrato (hardware o software che sia) in canaline con tensioni di rete è da suicidio, troppe sono le variabili in gioch: tipo cavo, schermatura, tipo canalina ,
se vuoi tagliare la testa al toro e avere sicuro successo usa sempre fotoaccoppiatori con alimentazione separata

Avevo proprio valutato anche questa opportunità. Preferirei risolvere nel modo più pratico e veloce ma ho bisogno di stabilità e certezza quindi potrei dover arrivare a questa soluzione. Cosa intendi per alimentazioni separate? Gentilmente, avresti uno schemino da seguire?
Grazie anche a te per l'aiuto.

Edit: trovato schema. Devo solo rivedere la logica ed invertirla. Anziché attivare l'ingresso mettendo il pin a gnd dovrò inviare un +12V al fotoaccoppiatore. Ma questo non è un problema.

Puoi ugualmente attivarlo quando il pin va a gnd... Posta lo schema che hai trovato...

Ecco il link