Go Down

Topic: Resistenze Pull-Down e Pull-Up - Ingressi digitali (Read 6480 times) previous topic - next topic

legolas93

May 02, 2012, 07:27 pm Last Edit: May 02, 2012, 07:46 pm by legolas93 Reason: 1
Ciao ragazzi sto seguendo i tutorial e mi sono imbattuto in queste resistenze e nel loro utilizzo. Se non ho capito male in pratica servono per avere in ingresso dei valori logici definiti in caso di circuito aperto  :)

Solo che dato che mi piace capire le cose fino in fondo volevo chiedervi due cose. Probabilmente ho qualche lacuna di elettronica  :smiley-roll:

Mi riferisco a questa immagine (Pull-Down resistenza)



Nel caso che il circuito sia chiuso la corrente fluisce dai 5V all'ingresso digitale -> HIGH
Nel caso l'interruttore è aperto? in questo caso per quanto sia difficile, il potenziale 0 si fa strada attraverso la resistenza e mette a terra l'ingresso digitale -> LOW

Quello che non capisco è:

(Mi rendo conto che farò ridere molti..)

deltaV = I * R -> I = deltaV/R

Qual'è il potenziale dell'ingresso digitale dell'arduino? In base a cosa scelgo il valore della resistenza? Se volessi calcolare la I che scorre tra il ping digitale e il GRD attraverso la resistenza pull down?

Se non capite bene la domanda provo ad esprimermi meglio  :)

______________________________________________________________________________________
Provo a rispondermi da solo, vediamo se è corretto.

Arduino paragona ogni ingresso rispetto alla tensione del suo GRD. Se non sbaglio ho letto che circa sopra i 3V di differenza è considerato un ingresso HIGH mentre sotto 1.5V di differenza è un ingresso LOW.

Diciamo che mi sono un po' chiarito le idee. Stavo facendo molto confusione. Spero che qualche info sia utile a qualche novizio come me.
"Sono convinto che l'informatica abbia molto in comune con la fisica...Dentro i confini del computer, sei tu il creatore. Controlli - almeno

auriol

Non servono solo per avere dei livelli logici definiti e non è importante il discorso della corrente... nel caso infatti di ingressi a mosfet questa corrente è irrisoria, il problema principale è mantenere bassa l'impedenza degli ingressi / uscite per evitare che gli stessi siano influenzati da disturbi elettronmagnetici esterni presenti in ogni ambiente (prevalentemente a 50Hz ma non solo) se ad es. colleghi un led all'uscita di una Nand 4011 anodo al positivo e catodo all'uscita con r 1k in serie e lasci gli ingressi connessi insieme liberi (senza pullup) non avrai difficoltà a far commutare la porta (il Led si accende)  toccando semplicemente gli ingressi (prova a immaginare quello che potrebbe succedere in un antifurto a livello di falsi allarmi).
Per farla breve un valore ottimale di tutta tranquillità può essere 1000 Ohm sia per collegamenti verso il + sia verso gnd, non serve preoccuparsi di altro, con questo valore gli ingressi sono insensibili ai disturbi elettromagnetici presenti in un normale abiente domestico nei casi estremi si racchiude il circuito in un box metallico connesso al negativo e si utilizzano cavetti schermati con la calza connessa al negativo.
Saluti

auriol

Mi sono dimenticato di completare l'esempio... nel caso del 4011 se dopo aver verificato l'elevata sensibilità ai disturbi (accensione del Led con ingressi liberi) colleghi una res. da 1K ohm fra gli ingressi e massa non accendi più il Led nemmeno se tocchi gli ingressi con 10 mani.... perchè l'impedenza di ingresso è passata istantaneamente dai M ohm a solo 1 K ohm valore sufficientemente basso per rendere l'ingresso insensibile ai disturbi elettromagnetici ambientali. 
Questo ti fa capire l'importanza delle resistenze di Pull up o down .
Saluti.

legolas93


Non servono solo per avere dei livelli logici definiti e non è importante il discorso della corrente... nel caso infatti di ingressi a mosfet questa corrente è irrisoria, il problema principale è mantenere bassa l'impedenza degli ingressi / uscite per evitare che gli stessi siano influenzati da disturbi elettronmagnetici esterni presenti in ogni ambiente (prevalentemente a 50Hz ma non solo) se ad es. colleghi un led all'uscita di una Nand 4011 anodo al positivo e catodo all'uscita con r 1k in serie e lasci gli ingressi connessi insieme liberi (senza pullup) non avrai difficoltà a far commutare la porta (il Led si accende)  toccando semplicemente gli ingressi (prova a immaginare quello che potrebbe succedere in un antifurto a livello di falsi allarmi).
Per farla breve un valore ottimale di tutta tranquillità può essere 1000 Ohm sia per collegamenti verso il + sia verso gnd, non serve preoccuparsi di altro, con questo valore gli ingressi sono insensibili ai disturbi elettromagnetici presenti in un normale abiente domestico nei casi estremi si racchiude il circuito in un box metallico connesso al negativo e si utilizzano cavetti schermati con la calza connessa al negativo.
Saluti


Grazie per la risposta chiara  :) Volevo solo approfondire una parte di essa e in particolare quella che ho evidenziato in grassetto. Hai mica qualche link o keywork con cui fare qualche ricerca?..Vorrei sapere che tipi di disturbi può provocare un campo elettromagnetico, e' tanto difficile?

PS: Non riesco a non andare a fondo nelle cose  :P
"Sono convinto che l'informatica abbia molto in comune con la fisica...Dentro i confini del computer, sei tu il creatore. Controlli - almeno

auriol

Se sei proprio curioso di conoscere la corrente che entra in un pin o che esce puoi utilizzare un multimetro ovviamente dipende dalla R di pull Up/down comunque questi dati letti o calcolati non ti portano a nulla occorre esperienza pratica e non calcoli.
La sensibilità di un ingresso a captare disturbi elettromagnetici presenti in ogni ambiente domestico (es. quelli generati cai cavi dell'impianto elettrico a 50Hz) dipende dall'impedenza d'ingresso e dalla sua sensibilità intrinseca (guadagno in tensione del dispositivo).
Altro esperimento alza il volume (di poco)  di un amplificatore e tocca con un dito il polo caldo ascolterai un forte ronzio nella cassa (questo è un disturbo a 50HZ) se aumenti il volume il rumore diventa infernale e rischi di danneggire il Woofer. Quindi hai verificato che maggiore è la sensibilità del circuito e maggiore e il disturbo captato e amplificato. Se a parità di volume (basso) colleghi in ingresso una resistenza di basso valore 1K o 470 ohm ti renderai conto che il ronzio si riduce moltissimo perchè abbiamo abbassato dasticamente l'impedenza d'ingresso (quella tipica di un ampli è di 47K ohm) più bassa è l'impedenza di ingresso e minore è la sensibilità ai disturbi.
Per semplificare utilizza sempre queste resistenze e non dimenticarti MAI di collegare un condensatore poliestere da almeno 0.1 micro Farad fra positivo e massa nei circuiti di alimentazione di qualsiasi dispositivo attivo, molto vicino ad es. al pin + e gnd di un integrato meglio se abbinato ad un elettrolitico con capacità minima di 10 micro F 16Vl (nel caso di Arduino 16VL vanno bene) questi condensatori svolgono la stessa funzione ma evitano anche  che disturbi prodotti da altri chip possano influenzare l'integrato sotto test.
Per approfondimenti sui campi elettromagnetici google  ti condurrà in centinaia di siti.
Saluti.

uwefed

Il valore della resistenza pullup/pulldown non é critica.
Deve essere abbastanza piccola per polarizzare la entrata del Arduino e abbastanza grande per non fare un "corto" o produrre un consume di corrente inutile quando viene schiacciato il pulsante.
I disturbi elettromagnetici influenzano molto di meno i circuiti digitale rispetto a quelli anamogici. I circuiti digitali hannu un range tra L e H nel quale non comuta la letura. Questa differenza di tensione aiuta che delle tensioni "aggiunte" sul segnale L o H fanno riconoscere un livello sbagliato.
Entrate non collegate a niente hanno una impedenza molto alta e per disturbarli servono correnti molto piccole. Aggiungendo una resistenza anche da 100kOhm elimini questo problema.

Ciao Uwe

Michele Menniti

Come ha detto Uwe non bisogna trascurare il fatto che comunque nella R di pull-up o pull-down può scorrere della corrente che, in condizioni particolari, specialmente se ti tende al risparmio energetico, possono incidere notevolmente. Un valore di 1k è tipico dei segnali TTL puri; per ingressi come quelli di un microcontrollore un valore da 10k è più che sufficiente. Posso dire, per esperienza diretta che ho usato una pull-up da 180k senza alcun problema. Nel mio caso, un sensore rotativo on-off che poteva fermarsi indifferentemente in una delle due posizioni, quando si fermava su ON faceva scorrere nella pull-up (un capo del sensore era a massa) da 10k una corrente di 0,5mA che era decisamente elevata per il circuito che stavo progettando; con 180k ho portato questa corrente a 0,02mA, risultato per me accettabile. Il circuito ancora oggi funziona senza problemi e la batteria che lo alimenta, a distanza di svariati mesi, praticamente non ha subito variazioni sensibili.  $)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

auriol

Per il risparmio energetico conviene attestarsi sui 10K ohm poi ognuno si può regolare secondo necessità e secondo problematiche funzionali specifiche.
Se non ci sono esigenze particolari in tal senso, vale la regola di mantenere le impedenze più basse possibili con 1 K la corrente max è di : 4.5V circa (valore max effettivo in uscita da un pin del 328P  5V è puramente teorico) : 1000 4,5 mA valore che non crea alcun problema nelle alimentazioni a rete, nel caso di alimentazioni a batteria e di molte resistenze di pull è preferibile portare il valore a 10K comunque più si sale nel valore di R e più diventa inefficace la sua funzione, diciamo che R deve essere almeno uguale all'impedenza di ingresso del dispositivo in modo tale da dimezzarla, ma per essere molto efficace deve essere decisamente più bassa.
Saluti.

Michele Menniti

L'ATmega328P accetta anche 300kohm di R di pull-xx, lavorando senza problemi particolari.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

auriol

300K è di gran lunga superiore alle impedenze di ingresso di dispositivi TTL tanto vale non metterla proprio, io "da tecnico" utilizzo le pull  solo nei casi realmente necessari (non in modo indiscriminato) e solo per mantenere limpedenza del dispositivo la più bassa possibile (compatibilmente con le correnti in gioco) se 300K è un' impedenza bassa dobbiamo riscrivere l' Elettronica 30 K è già alta figuriamoci 300K.
Poi se volete giocare con le pull fate pure l'importante è non diffondere messaggi errati  non confondiamo una pull con resistenze anche superiori a 300K ma che in un circuito non svolgono affatto funzione di pull.
Fai l'esperimento del 4011 con resistenze diverse e ti renderai conto che con valori alti l'effetto pull si annulla e toccando l'ingresso con un dito il Led tende ad accendersi, quì stiamo parlando di pratica dimostrabile e non di semplici parole.
Ripeto una Pull deve essere la più bassa possibile il valore orientativo spazia da 1 a 10K.
Il valore commerciale comunque è 330K e non 300K valori che non utilizzero MAI per una pull
Saluti.

Michele Menniti

Visto che ti indigni tanto, sappi che io non intendo fare alcuna crociata pro pull di elevato valore, ma mi pare eccessivo il tuo atteggiamento. Potrei dirti di andarti a leggere il reference dell'ATmega e fornirti qualche citazione autorevole (io non sono "un tecnico"), oltre a spiegarti la differenza che passa tra un valore teorico ed un valore commerciale, se si trattasse di un dialogo costruttivo; ma da come scrivi è evidente che c'è poco da dialogare, quindi stai tranquillo che nessuno ti costringerà a riscrivere l'elettronica, anche perché significherebbe la chiusura di ATMEL e la fine del mio divertimento da hobbysta scadente.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed


300K è di gran lunga superiore alle impedenze di ingresso di dispositivi TTL tanto vale non metterla proprio, io "da tecnico" utilizzo le pull  solo nei casi realmente necessari (non in modo indiscriminato) e solo per mantenere limpedenza del dispositivo la più bassa possibile (compatibilmente con le correnti in gioco) se 300K è un' impedenza bassa dobbiamo riscrivere l' Elettronica 30 K è già alta figuriamoci 300K.
Poi se volete giocare con le pull fate pure l'importante è non diffondere messaggi errati  non confondiamo una pull con resistenze anche superiori a 300K ma che in un circuito non svolgono affatto funzione di pull.
Fai l'esperimento del 4011 con resistenze diverse e ti renderai conto che con valori alti l'effetto pull si annulla e toccando l'ingresso con un dito il Led tende ad accendersi, quì stiamo parlando di pratica dimostrabile e non di semplici parole.
Ripeto una Pull deve essere la più bassa possibile il valore orientativo spazia da 1 a 10K.
Il valore commerciale comunque è 330K e non 300K valori che non utilizzero MAI per una pull
Saluti.


Chi sta parlando in questa discussione di entrate TTL?
Se fai un corto con un dito tra un entrata e massa di un CMOS modifichi lo stato del entrata perché il Tuo dito funge da resistenza.
Quote
valori che non utilizzero MAI per una pull

Sei libero di fare quello che vuoi.

Ciao Uwe

astrobeed


300K è di gran lunga superiore alle impedenze di ingresso di dispositivi TTL tanto vale non metterla proprio, io "da tecnico"


Peccato che i dispositivi TTL non esistono più da diversi anni, semmai si parla di livelli TTL per indicare la compatibilità dei livelli di tensione dei moderni dispositivi logici con i vetusti, ed obsoleti da oltre 10 anni, integrati con tecnologia TTL.
Se per una vecchia logica TTL mettere una resistenza da 50 k come pull up era come non metterla con i moderni circuiti in tecnologia cmos una resistenza da 300k è ammissibile come pull up/down anche se è valore limite.
Il giusto valore della pull up/down va valutato caso per caso, non esiste un valore ideale in assoluto, p.e. per il reset degli ATmega 10k vanno benissimo, mentre sono troppi se devi mettere una pull up su un pin settato come out, ma che può andare in stato di alta impedenza durante il funzionamento, dove è meglio mettere almeno 50k.

p.s.
Per tua informazione le resistenze esistono in varie serie con step tra i valori sempre più ridotti, in particolare all'aumentare della precisione del valore aumentano anche i valori disponibili, la 300k esiste già nella serie E24 (5%) mentre non c'è nella serie E12 (10%) alla quale stai facendo riferimento.
Il motivo di base per lo step tra i valori è dato dalla tolleranza degli stessi, ormai si usano solo resistenze al 2% (serie E48), oppure resistenze al 1% (serie E96), chi è rimasto legato alla obsoleta serie E24 sono solo gli hobbysti.




Michele Menniti

Ecco, appunto, queste due sono alcune tra le principali fonti autorevoli a cui facevo riferimento nel mio post. A quanto pare non ho demolito l'Elettronica dalle fondamenta e nemmeno ho "diffuso messaggi errati", mi stava venendo una crisi di coscienza :smiley-sweat:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

legolas93

Ragazzi grazie mille delle informazioni che mi avete dato. Tutte molto preziose e ci ho capito davvero molto. Solamente mi sono accorto che devo approfondire il funzionamento dei condensatori in quanto (maledetta scuola) conosco a mala pena solo la loro funzione di mmm..Si può dire "accumulatori"?

Comunque oggi mi è arrivato Arduino Uno e un bel po' di materiale  :) Non mi resta che iniziare ad imparare, dai..vediamo se riesco a far accendere un Led  :P

Sono un po' rimasto basito dalle dimensioni, non mi ero mai preso la briga di controllare le dimensioni ma dalle immagini pensavo fosse molto più grosso, mi sono quasi spaventato quando ho visto un pacco così piccolo  :*

Grazie a Tutti ragazzi!..Spero di non disturbare se capitasse di fare domande troppo semplici (Comunque provo sempre prima a cercare più possibile su Google che al 90% risolve molti dubbi)

"Sono convinto che l'informatica abbia molto in comune con la fisica...Dentro i confini del computer, sei tu il creatore. Controlli - almeno

Go Up