AREF pin: un po' di domande.

Ciao a tutti :smiley:
Studiando il comportamento del pin Aref di Arduino, mi sono sorte un po' di domande. Spero che qualcuno mi aiuti :slight_smile:

  • Il range di tensioni da poter utilizzare come riferimenti quali sono? Ho letto sul Reference ce va da 0 a 5V, mentre ho letto in giro che il minimo è 1.1V. Quale è la verità?

  • Se vengono superati cosa succede? Penso faccia una bella nuvoletta di fumo :grin: . E se si superano con tensioni sotto i 0V, tipo -2V?

  • Nel caso in cui si dovesse usare una tensione di riferimento esterna, il collegamento giusto da fare sarebbe mettere il positivo nel pin Aref, ed il negativo nel pin GND sopra al pin Vin? Se sbaglio correggetemi

  • Infine, ho poi letto che esiste un rischio di cortocircuito se si sta usando una tensione di riferimento esterna: in poche parole se si sta utilizzando un riferimento esterno, e nello sketch si cambia il riferimento ad INTERNAL o DEFAULT, si vanno a cortocircuitare le due tensioni. Perchè succede questa cosa? Dato che ho poi visto che il pin Aref è dotato di una resistenza da 32K.
    Sul reference si consiglia poi di mettere una resistenza di 5K prima del pin AREF. Tralsciando il fatto del calo di tensione dovuto al partitore che si forma, per quale motivo si deve mettere se c'è già quella bella consistete da 32K?

Grazie a tutti per le risposte :slight_smile:

TheBoss97:
Ciao a tutti :smiley:
Studiando il comportamento del pin Aref di Arduino, mi sono sorte un po' di domande. Spero che qualcuno mi aiuti :slight_smile:

  • Il range di tensioni da poter utilizzare come riferimenti quali sono? Ho letto sul Reference ce va da 0 a 5V, mentre ho letto in giro che il minimo è 1.1V. Quale è la verità?

Da 0 a 5V se usi il riferimento standard, che è appunto VCC, che sull'Arduino vale 5V.
Puoi usare anche il riferimento interno, che sono 1,1V oppure anche una tensione diversa (sempre compresa però entro i 5V).

  • Se vengono superati cosa succede? Penso faccia una bella nuvoletta di fumo :grin: . E se si superano con tensioni sotto i 0V, tipo -2V?

NO tensioni maggiori di 5V, NO tensioni negative. L'Arduino può operare solo nel campo 0-5V.

  • Nel caso in cui si dovesse usare una tensione di riferimento esterna, il collegamento giusto da fare sarebbe mettere il positivo nel pin Aref, ed il negativo nel pin GND sopra al pin Vin? Se sbaglio correggetemi

Sì, giusto.

  • Infine, ho poi letto che esiste un rischio di cortocircuito se si sta usando una tensione di riferimento esterna: in poche parole se si sta utilizzando un riferimento esterno, e nello sketch si cambia il riferimento ad INTERNAL o DEFAULT, si vanno a cortocircuitare le due tensioni. Perchè succede questa cosa? Dato che ho poi visto che il pin Aref è dotato di una resistenza da 32K.
    Sul reference si consiglia poi di mettere una resistenza di 5K prima del pin AREF. Tralsciando il fatto del calo di tensione dovuto al partitore che si forma, per quale motivo si deve mettere se c'è già quella bella consistete da 32K?

Si crea un corto diretto fra il pin AREF ed il generatore interno a 1,1V del chip, vedi schema sul datasheet a pag. 251. La R esterna serve proprio a limitare la tensione in ingresso su quel pin, non a ridurre la corrente in ingresso al circuito di S&H, che è messo più oltre.

Grazie mille leo, per la risposta!

Comunque posso usare proprio qualsiasi valore di tensione come riferimento? Anche sotto gli 1.1v ?

TheBoss97:

  • Il range di tensioni da poter utilizzare come riferimenti quali sono? Ho letto sul Reference ce va da 0 a 5V, mentre ho letto in giro che il minimo è 1.1V. Quale è la verità?

Come sempre tocca fare riferimento al datasheet del micro e come al solito sul reference di Arduino ci sono delle inesattezze, la tensione minima applicabile ad Aref è 1V, sotto questo valore l'ADC non funziona in modo corretto, la tensione massima non è 5V è Vdd, ovvero la tensione di alimentazione del micro.
Applicare ad Aref una tensione maggiore di Vdd o negativa è un buon modo per fare danni al micro.

  • Nel caso in cui si dovesse usare una tensione di riferimento esterna, il collegamento giusto da fare sarebbe mettere il positivo nel pin Aref, ed il negativo nel pin GND sopra al pin Vin? Se sbaglio correggetemi

Si, sebbene non necessario è comunque consigliabile mettere in serie una R da qualche centinaio di ohm, è sempre indispensabile il condensatore da minimo 100 nF tra Aref e GND, la tensione utilizzata per Aref deve essere esente dal rumore altrimenti le misure non sono attendibili.

  • Infine, ho poi letto che esiste un rischio di cortocircuito se si sta usando una tensione di riferimento esterna: in poche parole se si sta utilizzando un riferimento esterno, e nello sketch si cambia il riferimento ad INTERNAL o DEFAULT, si vanno a cortocircuitare le due tensioni. Perchè succede questa cosa? Dato che ho poi visto che il pin Aref è dotato di una resistenza da 32K.

Nessun rischio di corto perché tra il pin Aref e la relativa elettronica c'è in serie una R da 32k.
Tutte queste informazioni le trovi sul datasheet del 328 nella sezione relativa al ADC, fai sempre riferimento a questo e non a quello che trovi scritto in rete, non hai idea di quante cavolate scrivono su i siti, il datasheet del componente deve essere la tua bibbia e il suo reference manual (quello del produttore), se disponibile, sono i vangeli, tutto il resto non conta.

Bibbia e vangeli! Che bello :smiley: :smiley: Hahahahaha

Ringrazio anche te, astro, per i chiarimenti!
Non vorrei contrariarti, comunque quel fatto del cortocircuito è scritto sul referenze (la pagina ufficiale), proprio quì: http://arduino.cc/en/Reference/AnalogReference.
Fammi sapere cosa ne pensi.

Potresti spiegarmi meglio questo fatto del condensatore? mi interessa, ma purtroppo ancora non conosco moltissimo su questi componenti, giusto il funzionamento basilare.

TheBoss97:
Non vorrei contrariarti, comunque quel fatto del cortocircuito è scritto sul referenze (la pagina ufficiale), proprio quì: http://arduino.cc/en/Reference/AnalogReference.
Fammi sapere cosa ne pensi.

Mettiamola così, io sono una fonte più autorevole del reference di Arduino e più autorevole di me sono i datasheet di Atmel, tutto il resto è fuffa :grin:
Il reference di Arduino contiene vari strafalcioni, quello della tensione 0V su Aref e del corto ne è un esempio.

Potresti spiegarmi meglio questo fatto del condensatore? mi interessa, ma purtroppo ancora non conosco moltissimo su questi componenti, giusto il funzionamento basilare.

Il condensatore serve per filtrare la tensione in ingresso o per favorire la stabilità e la pulizia di quella interna applicata ad Aref, dentro l'ATmega c'è una circuiteria dedicata che provvede a collegare l'ingresso di riferimento del ADC o al pin Aref, attraverso la R da 32K, oppure lo collega a Vdd o al generatore interno da 1.1V.

TheBoss97:
Potresti spiegarmi meglio questo fatto del condensatore? mi interessa, ma purtroppo ancora non conosco moltissimo su questi componenti, giusto il funzionamento basilare.

Da niubbo a niubbo... il condensatore tende a caricarsi o scaricarsi se la tensione ha una leggera fluttuazione e quindi a stabilizzarla. (Se ho detto caxxata... mi impalano in sala mensa) :grin:

Grazi e a tutti e due :slight_smile:

Sei un boss Astro Hahahahaha :smiley: :smiley:

Quindi devo mettere in serie al collegamento GND-AREF il condesatore giusto?
In questo modo:
GND--------| |------P-------5v

P = Power Source.

TheBoss97:
Quindi devo mettere in serie al collegamento GND-AREF il condesatore giusto?
In questo modo:
GND--------| |------P-------5v

Si, su i vari Arduino ufficiali il condensatore è già presente, lo devi mettere se realizzi una standalone.
Tieni presente che su Arduino di default Aref viene utilizzato con Vdd come riferimento e se questa proviene dal regolatore a 5V di Arduino non è necessario usare una tensione diversa a meno che non sia indispensabile una diversa dinamica del ADC.
Con l'alimentazione da USB è consigliabile usare i 3.3V di Arduino collegati su Aref e settare l'ADC di conseguenza, questo perché i 5V USB sono tutto meno che 5V esatti e, sopratutto, sono rumorosissimi.
Domani ti faccio vedere strumentalmente (misura con DSO) quanta "schifezza" c'è sul 5V USB del pc :slight_smile:

Grazie ancora Astro! Sei il più disponibile qu :smiley:
Comunque è vero il fatto dell'USB, la tensione può arrivare da 4.8V a 5.2 :astonished:
E' un po una sola per misurazioni precise, essendo poi la tensione di riferimento.

Dunque per il fatto condensatore, avendo una board ufficiale Arduino Uno V3 non lo devo usare?

TheBoss97:
Dunque per il fatto condensatore, avendo una board ufficiale Arduino Uno V3 non lo devo usare?

E’ già presente sulla board.

Visto che è ancora presto per cena (però ho fame :slight_smile: ) ecco la misura, la prima immagine è con accoppiamento DC e l’offset della traccia è spostato verso il basso per lasciare spazio alla finestra delle misure, si vede abbastanza bene che la tensione risulta, a vuoto, compresa tra 5.28V e 4.96 con ben 320 mVpp di rumore, è un valore enorme.
La seconda misura è in AC, con Arduino UNO collegato, sensibilità 100 mV/div e mette in evidenza la componente portante del rumore che è circa 2.19 MHz, con moltissime componenti sia di frequenza maggiore che minore, il il livello del rumore è 148 mV, sempre un valore enorme per l’ADC, non crea problemi al normale funzionamento del micro.

Quindi in fin de conti l'alimentazione USB è troppo scrausa e rumorosa per le misurazioni fatte bene. A questo punto io stavo tipo pensando di usare come riferimento un'alimentazione esterna, per la precisione, tipo una batteria da 9v,con un diodo stabilizzatore a 5V (se esiste). Sarebbe una buona soluzione?
Comunque buona cena :smiley:

Ma comunque in questo caso si parla di condensatore di livellamento? Che lascia passare solo le correnti variabili e non quelle continue?
Ditemi che mi interessa :smiley:

Mettiamola così, io sono una fonte più autorevole del reference di Arduino e più autorevole di me sono i datasheet di Atmel, tutto il resto è fuffa smiley-mr-green

Dai Astro, non essere modesto... diciamo che Atmel è solo un pelino più in su quanto a competenza! :smiley:

Una curiosità: che modello è quel meraviglioso RIGOL con cui hai fatto le misure?

cyberhs:
Una curiosità: che modello è quel meraviglioso RIGOL con cui hai fatto le misure?

DS4024

astrobeed:
Il reference di Arduino contiene vari strafalcioni, quello della tensione 0V su Aref e del corto ne è un esempio.

Però sul datasheet 'è scritto (pag. 248, par. 24.5.2):

If the user has a fixed voltage source connected to the AREF pin, the user may not use the other reference voltage options in the application, as they will be shorted to the external voltage. If no external voltage is applied to the AREF pin, the user may switch between AVCC and 1.1V as reference selection.

Se traduco bene dice:

Se l'utente ha una tensione fissa connessa al pin AREF, l'utente non dovrebbe usare le altre opzioni di riferimento della tensione nel programma, dato che esse sarebbero cortocircuitate alla tensione esterna. Se non viene applicata nessuna tensione esterna al pin AREF, l'utente dovrebbe scegliere fra AVCC e 1V1 come selezione di riferimento.

Dice quindi chiaramente che c'è il rischio di corto.

leo72:
Dice quindi chiaramente che c'è il rischio di corto.

Non è che c'è un corto nel vero senso della parola, vuol dire che se applichi una tensione su Aref e abiliti nel contempo il riferimento interno ottieni un mix delle due cose dovuto alla presenza della R da 32k sul pin aref, serve come protezione contro le correnti eccessive.
In pratica se colleghi Aref al 3.3 V, giusto per esempio, e attivi il riferimento a 1.1V la tensione vista dal ADC come riferimento per la conversione sarà un valore intermedio tra le due, quanto dipende dall'impedenza d'uscita del generatore interno che non è bassa.
Va da se che se si utilizza il riferimento esterno la prima cosa da fare nello sketch è dichiarare questa condizione altrimenti per default viene utilizzato il riferimento a Vdd.

Sì, non intendevo neanch’io corto nel senso di “corto a massa”.

Ah, per curiosità ho misurato la resistenza su AREF della mia UNO, ho letto 39K. Non ho trovato sul datasheet il range di questa resistenza.

leo72:
Ah, per curiosità ho misurato la resistenza su AREF della mia UNO, ho letto 39K. Non ho trovato sul datasheet il range di questa resistenza.

In effetti non cita un range, c'è il solo il valore tipico di 32k.