Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Lettura piccole tensioni con Arduino

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[1] Lettura piccole tensioni con Arduino

Messaggioda Foto Utentenoise0 » 28 ott 2020, 19:13

Nei miei progetti con arduino mi trovo spesso a dover leggere delle tensioni che possono avere vari range.
Se il range di tensione è prossimo ai 5v di alimentazione allora la collego direttamente agli adc di arduino , magari con un partitore.

Il problema si pone per piccole tensioni, mettiamo un segnale a bassa frequenza che varia da 0 a 100mV.
Gia in passato avevo affrontato un problema simile ed avevo provato ad amplificare la tensione con un op-amp ad alimentazione singola 5v. Quindi avevo scoperto che gli op-amp non rispondono linearmente per tensioni di ingresso prossime alla tensione di alimentazione negativa, nel mio caso gli 0 V. Avevo poi risolto utilizzando un'alimentazione duale. Ora non ricordo bene il circuito ma mi aveva fatto dannare per diversi giorni.

La mia domanda è questa:
Esistono delle "scatole nere", da alimentare con una semplice alimentazione 5V che ricevano in ingresso un range di tensione piccola, mettiamo un range fisso 0-75mV e che sputino fuori i miei 0-5V da dare in pasto ad arduino con linearità su tutto il range?
Se esistesse un simile componente sarei molto contento perche mi risolverebbe ogni problema, utilizzando un partitore all'ingresso di questo ipotetico componente potrei leggere qualsiasi range di tensione sia piccola che grande.

grazie O_/
Avatar utente
Foto Utentenoise0
50 3
New entry
New entry
 
Messaggi: 67
Iscritto il: 9 nov 2018, 20:06

0
voti

[2] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto UtenteEcoTan » 28 ott 2020, 19:37

Quello che so dirti è che alcune MCU prevedono i pin Vref+ e Vref- per restringere il campo allontanandolo dai rail. (ovviamente poi bisogna abilitarli, con Arduino non credo)
Avatar utente
Foto UtenteEcoTan
7.720 4 12 13
Expert EY
Expert EY
 
Messaggi: 5420
Iscritto il: 29 gen 2014, 8:54

0
voti

[3] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto UtenteGuidoB » 28 ott 2020, 20:30

noise0 ha scritto:Esistono delle "scatole nere", da alimentare con una semplice alimentazione 5V che ricevano in ingresso un range di tensione piccola, mettiamo un range fisso 0-75mV e che sputino fuori i miei 0-5V da dare in pasto ad arduino con linearità su tutto il range?


Alimentare a 0-5 V e volere un ingresso a 0-75 mV e un'uscita a 0-5 V impone l'uso di un componente con uscita rail-to-rail e ingresso di modo comune che arrivi a 0 V. Probabilmente esiste ma non sarà molto comune. Bisognerebbe fare una ricerca su Digikey, per esempio.

Se riesci ad alimentare ad almeno 6,5-7 V potresti usare un comune amplificatore operazionale LM358 in configurazione "amplificatore non invertente".

In ingresso puoi applicargli 0 V, ma non sono così sicuro che l'uscita arrivi fino a 0 V (controlla il datasheet). Eventualmente metti in uscita una resistenza verso massa o ancor meglio verso una tensione leggermente negativa. O usa la tensione leggermente negativa per alimentare l'op amp.

Compenserei gli offset via software per mantenere il circuito semplice.
Big fan of ƎlectroYou!       Ausili per disabili e anziani su ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Avatar utente
Foto UtenteGuidoB
17,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2809
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[4] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto Utentestefanopc » 28 ott 2020, 22:23

Se uno si legge un po di manualistica vedrebbe che in alcuni arduino ad esempio Leonardo è presente in pin : Aref.
Leggendo sulla pagina seguente :

https://www.arduino.cc/reference/en/lan ... reference/

Arduino AVR Boards

DEFAULT: the default analog reference of 5 volt (on 5V Arduino boards) or 3.3 volt (on 3.3V Arduino boards)

INTERNAL: a built-in reference, equal to 1.1 volt on the ATmega168 or ATmega328P and 2.56 volt on the ATmega32U4 and ATmega8 (not available on the Arduino Mega)

INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)

INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.

Per queste applicazioni particolari vale sempre la pena di leggere il pdf del micro e valutare quali sono le possibilità previste.

In genere da sw si può scegliere se il fondo scala del Adc è uguale a Vcc poi altre tensioni interne e se non basta anche un pin dove mettere a piacimento la tensione voluta.
Potresti provare a mettere una tensione per esempio di 0.5 v se hai segnali particolarmente bassi.
Io ho provato con 1v su un leonardo e va a meraviglia.
Il problema diventa avere una tensione di riferimento stabile.
Ciao
600 Elettra
Avatar utente
Foto Utentestefanopc
13,3k 5 9 13
Master EY
Master EY
 
Messaggi: 5566
Iscritto il: 4 ago 2020, 9:11

2
voti

[5] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto Utenteedgar » 28 ott 2020, 22:51

Metti un ADC esterno, fai prima. Un MCP3421 costa un'inezia, ha un PGA con guadagno 1,2,4,8, con risoluzione 18 bit e fondo scala a guadagno unitario di +/- 2,048 V. Alimentazione fino a 5 volt, interfaccia I2C
Avatar utente
Foto Utenteedgar
10,0k 4 5 8
Master
Master
 
Messaggi: 5229
Iscritto il: 15 set 2012, 22:59

0
voti

[6] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto Utentenoise0 » 29 ott 2020, 18:34

edgar ha scritto:Metti un ADC esterno, fai prima. Un MCP3421 costa un'inezia, ha un PGA con guadagno 1,2,4,8, con risoluzione 18 bit e fondo scala a guadagno unitario di +/- 2,048 V. Alimentazione fino a 5 volt, interfaccia I2C


Grazie, interessante questo componente!
quindi vediamo se ho capito bene:
Se lo usassi in modalita - 240 SPS (12 bits) con PGA=x8
Usato in modo comune avrei 11 bit di risoluzione tra 0 e (2/8) v
(2/8)/(2^11)= 0,00006
quindi potrebbe apprezzare "teoricamente" i 60uV con una frequanza di aggiornamento di 240 campioni al secondo.
mi sembra accellente.

se esistesse una cosa del genere a 1000 SPS sarei contento tutta la vita :D
Avatar utente
Foto Utentenoise0
50 3
New entry
New entry
 
Messaggi: 67
Iscritto il: 9 nov 2018, 20:06

0
voti

[7] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto Utenteedgar » 30 ott 2020, 0:04

noise0 ha scritto:se esistesse una cosa del genere a 1000 SPS sarei contento tutta la vita :D

Dai un'occhiata alla produzione microchip. ne trovi sicuramente
Avatar utente
Foto Utenteedgar
10,0k 4 5 8
Master
Master
 
Messaggi: 5229
Iscritto il: 15 set 2012, 22:59

1
voti

[8] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto Utentenoise0 » 30 ott 2020, 17:56

stefanopc ha scritto:DEFAULT: the default analog reference of 5 volt (on 5V Arduino boards) or 3.3 volt (on 3.3V Arduino boards)
INTERNAL: a built-in reference, equal to 1.1 volt on the ATmega168 or ATmega328P and 2.56 volt on the ATmega32U4 and ATmega8 (not available on the Arduino Mega)
INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)
INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)
EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.
Per queste applicazioni particolari vale sempre la pena di leggere il pdf del micro e valutare quali sono le possibilità previste.
In genere da sw si può scegliere se il fondo scala del Adc è uguale a Vcc poi altre tensioni interne e se non basta anche un pin dove mettere a piacimento la tensione voluta.
Ciao


Ottima anche questa soluzione.
Usando INTERNAL a 1.1v ho una risoluzione adeguata ai miei scopi.
Purtroppo anche usando il pin AREF il minimo è sempre 1,1v almeno sugli arduino nano che uso io.

grazie per la dritta comunque ,
ormai sono anni che uso gli arduino e non mi ero mai interessato alla cosa, che asino =P~
Avatar utente
Foto Utentenoise0
50 3
New entry
New entry
 
Messaggi: 67
Iscritto il: 9 nov 2018, 20:06

0
voti

[9] Re: Lettura piccole tensioni con Arduino

Messaggioda Foto UtenteSandroCalligaro » 2 nov 2020, 21:52

Perché non usare un operazionale in configurazione differenziale, con offset? Si tratta di aggiungere qualche resistore ed avere un riferimento di tensione, che al limite può essere l'alimentazione (specie se quello è il riferimento dell'ADC).
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25


Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 61 ospiti