PIN analogici Arduino UNO

Buongiorno a tutti,
ho un dubbio sui PIN analogici di Arduino Uno. Ho letto che questi PIN possono leggere tensioni da 0 a 5V, ma la mia domanda è: posso leggere fino a 5V complessivamente su tutti e 6 i PIN (o parte di essi) o posso leggere contemporaneamente più tensioni in ogni PIN la cui somma sia maggiore di 5V?

Ad esempio, posso leggere contemporaneamente la tensione di 6 batterie da 1,5V ognuna collegata a un PIN?

Spero di essermi spiegato e vi ringrazio in anticipo per la vostra disponibilità.
Andrea

Il comando per leggere una tensione sui pin analogici di arduino è:

val = analogRead(analogPin);

dove analogPin è il pin da leggere ( A0, A1....A5)

quindi la risposta è:

si legge un pin alla volta, ma nel programma puoi scrivere

valPin0 = analogRead(A0);
valPin1 = analogRead(A1);
valPin2 = analogRead(A2);

ecc

>andrea87: Su ciascun pin può essere applicata una tensione da 0 a 5V (ogni ingresso èsindipendente dall'altro), ma la lettura avviene comunque uno per volta (leggi A0, poi A1, poi A2 e così via).

>Michele61: NON era quella la domanda del OP. leggi BENE il suo post.

Guglielmo

>andrea87: Se può aiutarti a capire, quello che segue è lo schema della parte ADC (Analog to Digital Converter) del ATmega328P (il chip montato su Arduino UNO):

... come vedi, tutti i vari ingressi (su Arduino UNO mancano ADC6 ed ADC7, infatti hai solo 6 ingressi A0 - A5) finiscono in un unico multiplexer che ha UNA sola uscita e quindi, ovviamente, si può selezionare solo un'ingresso per volta ed in entrata si può dare un valore di tensione tra 0V e 5V.

Guglielmo

andrea87:
Ad esempio, posso leggere contemporaneamente la tensione di 6 batterie da 1,5V ognuna collegata a un PIN?

Intendo come escamotage per leggere tensioni superiori ai 5V?
Cioè queste batterie sarebbero indipendenti o in serie?
Nel secondo caso, i 5V massimi sarebbero sempre rispetto a massa.

Se vuoi leggere tensioni superiori devi usare un partitore di tensione, ad es. se vuoi misurare sui 10V metti due resistenze uguali in serie tra di solo e in parallelo alla "batteria" da 10V e leggi con arduino la tensione tra le due resistenze che sarebbe al massimo la metà di quella totale.
Fatta la lettura sui 5V moltiplicando il risultato per 2 ti da la tensione totale.

Quindi con il partitore di tensione puoi ridurre una tensione di un fattore X a te noto e riportarti sempre ad una misura con massimo i 5V.

andrea87:
Buongiorno a tutti,
....
Spero di essermi spiegato e vi ringrazio in anticipo per la vostra disponibilità.
Andrea

no, purtroppo non ti sei spiegato bene
Tu intendi leggere 6 pile separate, completamente separate? Non puoi, devono avere il polo negativo comune e al gnd di Arduino
Oppure tu intendi leggere 6 pile tra loro in serie?
Meno che meno, non potresti mettere vari poli negativi a gnd
L'unica cosa che puoi fare è leggere N (al massimo 6) generatori che abbiano tutti i gnd in comune, eventualmente possono essere anche tutte pile
Se la loro tensione fosse oltre i 5 volt devi fare un minimo di condizionamento del segnale

Edit, io e maubarzi ci incrociamo spesso, e spesso la pensiamo uguale....

... Si ma sia te che maubarzi avete travisato la domanda che invece è piuttosto chiara ed è riassunta in queste sue parole:

andrea87:
... o posso leggere contemporaneamente più tensioni in ogni PIN la cui somma sia maggiore di 5V?

Ad esempio, posso leggere contemporaneamente la tensione di 6 batterie da 1,5V ognuna collegata a un PIN?

La sua paura è semplicemente che le tensioni applicate ad ogni pin ... si sommino e quindi si chiede, dato che il massimo è 5V, posso attaccare 6 batterie da 1.5V a ciascun pin analogico? ... perchè, se si sommassero, avrei 9V e brucerei la MCU ... :grin:

La risposta è già stata data e le spiegazioni anche :wink:

Guglielmo

Grazie a tutti per le risposte. Sapevo di non essermi spiegato bene ma alla fine tra le risposte che mi avete dato ho trovato la risposta alla mia domanda.
Ancora grazie e a presto

andrea87, ci fai cortesemente sapere qual'era l'effettiva domanda?
così ci eviti di litigare per giorni su chi aveva interpretato correttamente la cosa :wink:
grazie

Standardoil:
Edit, io e maubarzi ci incrociamo spesso, e spesso la pensiamo uguale....

mi sa che soffriamo della stessa patologia :wink: oppure semplicemente facciamo pausa caffè alla stessa ora, oppure il nostro è un multi account e noi siamo la stessa persona, un po' bipolare ... shhh che è illegale.... :stuck_out_tongue:

maubarzi:
... oppure il nostro è un multi account e noi siamo la stessa persona, un po' bipolare ... shhh che è illegale.... :stuck_out_tongue:

... mo' ve' banno a tutti e due così risolvo :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

Guglielmo

due piccioni con un solo ban :wink:

Pausa caffè?
Pausa caffè la fa chi lavora....
Qui in ditta si limitano a darmi lo stipendio, per il resto sono 5 anni che stanno tentando di capire chi sarebbe il mio capo...
Troppa fatica per gli ingannieri dare ordini e prendersene la responsabilità...
Comunque urge sapere il significato originale della domanda

Avevo paura che leggere tensioni su più PIN analogici causasse la sommatoria delle tensioni in entrata con il rischio di bruciare Arduino.
Invece gpb01 mi ha fatto capire che comunque le letture delle tensioni non avvengono contemporaneamente ma in maniera sequenziale PIN dopo PIN.

Infatti ho già fatto una prova e ha funzionato.
Grazie ancora

... maubarzi ...

Guglielmo :smiley: :smiley: :smiley:

Visto che mi ci trovo vi faccia anche un'altra domanda analoga all'argomento.
Sapete quanti millisecondi impiega ogni lettura sul pin analogico dato che avviene in maniera sequenziale?
Grazie ancora

... è scritto nel reference della analogRead(), basta guardare :wink:

On ATmega based boards (UNO, Nano, Mini, Mega), it takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second.

Considera comunque che questo è vero SE l'impedenza di ciò che colleghi è conforme alla specifiche date da Atmel nel datasheet (<= 10KΩ) ... altrimenti entrano in gioco altri fattori relativi al tempo di carica del condensatore interno di S/H.

Guglielmo

gpb01:
... mo' ve' banno a tutti e due così risolvo :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

Guglielmo

Cos'è ? Lavorate entrambi all' UCCS* e fate pausa caffè insieme :smiley: :smiley: :D?

Per l'OP, emettere una tensione o corrente ed emetterla su più pin contemporaneamente, non è come leggerla...
Forse questo ti ha un po'..."sviato".
Tu puoi leggere tutto quello che vuoi, quante volte vuoi, basta che stai nei massimi ammessi (5V)
Per le uscite è differente: se devo erogare energia ho una certa "fatica" e allora usare un output oppure usarli tutti insieme cambia molto.

*UCCS : Ufficio Complicazioni Cose Semplici

gpb01:
... maubarzi ...

guarda come gongola.... purtroppo ha ragione a gongolare :cry:

andrea87 grazie per la risposta, anche se ha scatenato la pernacchia di Guglielmo e l'eco riflesso di steve-cr

Tornando in tema,
la lettura dovrebbe metterci sempre 100uS a prescindere dall'impedenza collegata, quella, se troppo alta, potrebbe produrre letture errate perchè il condensatore interno non ha fatto in tempo a caricarsi/scaricarsi completamente fino alla tensione da misurare.

maubarzi:
......
...potrebbe produrre letture errate perchè il condensatore interno non ha fatto in tempo a caricarsi/scaricarsi completamente fino alla tensione da misurare.

Penso che in questo caso più che un errore potrebbe essere una "inerzia elettrica" che in alcuni casi è utile per avere una "media elettrica" delle letture.

maubarzi:
la lettura dovrebbe metterci sempre 100uS a prescindere dall'impedenza collegata, quella, se troppo alta, potrebbe produrre letture errate perchè il condensatore interno non ha fatto in tempo a caricarsi/scaricarsi completamente fino alla tensione da misurare.

Si, certo ... e devi rifarla (il famoso gioco delle doppie letture) :wink:

Guglielmo