Domanda elettrotecnica

Salve a tutti, finalmente oggi mi è arrivato il mio primo arduino e sto già facendo diversi esperimenti :slight_smile:
Premetto di avere basi molto scarse di elettrotecnica ed elettronica... ma mi sto dando da fare..
Stavo provando a fare il circuito che "legge" la pressione dell'interruttore, ma guardando lo schema mi sono chiesto: "a che serve la resistenza?"

Senza la resistenza verrebbe comunque applicata una tensione di 5V al piedino 2, e questo verrebbe interpretato come 1 logico.
Con la resistenza invece viene limitata la corrente (facendo i conti, a 0.5mA).
é importante quindi che la corrente sia questa? O meglio, qual è il range di corrente accettabile dagli ingressi di arduino?

Grazie per l'attenzione e scusate ancora l'ignoranza

Possibilmente ti dico una fesseria, ma la resistenza potrebbe essere necessaria per "mangiare" eventuali interferenze

Quindi in teoria dovrebbe funzionare anche senza?
Comunque il mio dubbio principale è:
So che ci sono dei limiti in termini di tensione che vengono usati per dare un valore logico all'elettricità, con le relative tolleranze...
devo in qualche modo preoccuparmi anche delle correnti che arrivano al circuito?

Provo anche io a dire la mia, scusate se dico una castroneria ma non ho mai studiato elettronica a scuola e lo faccio per passione.
In teoria senza la resistenza quando premi il pulsante mandi in corto circuito i 5V con la massa e non è proprio simpatico

Ci ho preso?

Ciao supergiox
Un entrata non collegata legge qualcosa: dei disturbi e delle interferenze. Se colleghi solo un pulsante che collega l'entrata a massa quando premuto Ti da un segnale di LOW buono, ma se non é premuto il pulsante il seganale puó essere interpretato sia LOW che HIGH. Per questo si aggiunge la resistenza.
La resistenza porta un livello HIGH all'entrata. Visto che l' impedenza dell entrata é alta (qualche di MOhm) non serve la resistenza per limitare la corrente. Quando é premuto il pulsante porta l'entrata a massa, ma fa anche circolare una corrente attraverso la resistenza perché quella é collegata in quel momento sia a massa che ai +5V.
La schelta del Valore della resistenza non é critica: non deve essere troppo piccola perché senó circola una corrente troppo alta quando viene premuto il pulsante e non troppo alta per poter portare l' entrata a +5V. I valori da schegliere sono tra ca 1kOhm e 1MOhm.

Puoi sia mettere la resistenza a +5V e il pulsante a massa che mettere il pulsante a massa e la resistenza a +5V.

Il microcontroller che ha Arduino ha delle resistenze interne che portano a +5V ( hanno un valore tra 20 e 50 kOhm).
Si accendono quando definisci un pin come uscita e scrivi High su quel pin.
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);

Ciao Uwe

Ciao e grazie a tutti per le risposte.. ho capito alcune cose, ma per altre sono un pò perplesso, soprattutto per quanto riguarda il post di Uwe.

Prendendo sempre come riferimento lo schema che ho inserito nel primo post, lo analizzo in due fasi: con interruttore aperto e con interruttore chiuso.

1)Quando è aperto, il circuto è equivalente ad una resistenza messa in parallelo ai piedini 2 e GND. Visto che è in parallelo, una eventuale tensione (indesiderata) ai sui capi resterebbe comunque inalterata. Stessa cosa non possiamo dire per la corrente!
Perchè se ci fosse una corrente indesiderata, il suo passaggio sulla resistenza creerebbe una differenza di potenziale, che potrebbe essere interpretata come HIGH.
Fin quì ho detto qualcosa di sbagliato?

2)Quando l'interruttore è chiuso viene applicata una tensione di 5V ai capi della resistenza, per i seguenti motivi:
-un capo della resistenza è direttamente collegato al generatore
-l'altro capo è a massa, come è a massa anche l'altra estremità del generatore (ovviamente questo non lo vediamo direttamente)
quindi ci troviamo in questa situazione


Giusto?

Comunque, il fatto è che continuo a non capire perchè se tolgo la resistenza, pur avendo la stessa tensione (in teoria) tra "pin 2" e la massa non ottengo l'effetto desiderato... e in particolare il led si mette a lampeggiare molto velocemente

Ho realizzato il circuito seguendo quest'altro schema... e il mio dubbio resta! :~

Intanto collega il led con una resistenza. Come detto tante volte, viene detto spesso (sbagliando!) che il pin 13 abbia una resistenza integrata ma ciò vale SOLO per il led integrato sull'Arduino. Quindi, o usi il led integrato (che comandi sempre usando il pin 13) senza usarne uno esterno oppure quest'ultimo deve avere la sua resistenza.

Tornando alla resistenza sulla massa del pulsantino, si chiama resistenza pull-down e serve per "tirare" il pin di lettura a zero di modo che l'Arduino legga un valore prefissato in assenza di pressione del pulsante e non interpreti le possibili fluttuazioni casuali dovute ad un pin scollegato come una falsa lettura.

@uwe:
ho riguardato lo schema, ma la resistenza è collegata a massa, non a +5V, quindi serve per dare un segnale di LOW, non di HIGH.

ciao leo72

leo72:
ho riguardato lo schema, ma la resistenza è collegata a massa, non a +5V, quindi serve per dare un segnale di LOW, non di HIGH.

Sí, hai ragione. Il concetto é lo stesso solo i livelli logici sono invertiti.

Scusami supergiox, per aveti confuso.

leo72:
Tornando alla resistenza sulla massa del pulsantino, si chiama resistenza pull-down e serve per "tirare" il pin di lettura a zero di modo che l'Arduino legga un valore prefissato in assenza di pressione del pulsante e non interpreti le possibili fluttuazioni casuali dovute ad un pin scollegato come una falsa lettura.

e se premi il tasto porti i 5V all'entrata pin 2.

Ciao Uwe

Grazie ad entrambi... Comincio ad avere le idee più chiare :slight_smile: Anche perchè adesso so che questa tecnica ha un nome e non è così scontata come credevo...

Volevo chiedervi un ulteriore chiarimento sul concetto di "tirare" la tensione, cioè sul suo principio di funzionamento fisico.
Trattandosi di resistenza pull-down, da quello che ho capito, viene usata per garantire lo 0 logico quando il pulsante non è premuto... quindi cerco di analizzare il circuito con l'interruttore NON premuto.

Io l'ho interpretato come un partitore di tensione, in cui abbiamo due resistenze: quella che inseriamo noi e quella del propria dell'ingresso (numero 8 ) di arduino.
Essendo quella da noi inserita maggiore, una eventuale tensione indesiderata si distribuirà maggiormente su di essa e di conseguenza, quella "vista" dal piedino avrà un valore basso (0 logico).
Però con questo ragionamento, non riesco più a spiegarmi quello che succede con l'interruttore chiuso...
Ho sbagliato tutto?

Scusate tutte queste domande, però mi piacerebbe chiarirmi ogni dubbio e non dare niente per scontato! :slight_smile:

Forse qui lo capisci meglio:
http://www.seattlerobotics.org/encoder/mar97/basics.html

Grazie per il link, spiega molto bene!
Facendo un breve riassunto di quello che ho capito, la resistenza ha un duplice scopo:
-Evitare il cortocircuito (nel caso di interruttore chiuso)
-Evitare la lettura di interferenze

Invece, per quanto riguarda questo:

leo72:
Intanto collega il led con una resistenza. Come detto tante volte, viene detto spesso (sbagliando!) che il pin 13 abbia una resistenza integrata ma ciò vale SOLO per il led integrato sull'Arduino. Quindi, o usi il led integrato (che comandi sempre usando il pin 13) senza usarne uno esterno oppure quest'ultimo deve avere la sua resistenza.

In che modo devo dimensionare la resistenza?

Forse so rispondere da solo a quest'ultima domanda.
Il led funziona con una tensione di circa 1.4V e una corrente di circa 0.02A, di conseguenza per trovare il valore della resistenza basta fare:
R=(5-1.4)/0.02
e scegliere il valore commerciale che si avvicina più a R.

Al solito correggetemi se sbaglio :slight_smile: