Differential ADC Arduino Nano

Buonasera a tutti, non sono nuovo, ma negli anni son stato poco attivo, di tanto in tanto mi cimento a livello didattico/ludico in alcuni progettini.

Quello in cui mi sto cimentando è la lettura su pin analogici utilizzando la modalità differenziale, ovvero usando una coppia di Pin analogici anziché avere sempre il riferimento a GND.

In pratica voglio (vorrei) monitorare lo stato di carica delle celle che compongono un pacco batteria Lifepo4, precisamente 4 celle in serie da 3.2v cad.

Quindi leggere il valore di queste celle singolarmente, usando una coppia di pin analogici utilizzando un Arduino nano che ha giusto 4 coppie di input analogici.

So che ci sono soluzioni più semplici, come ad esempio usare comparatori, o partitori di tensione, ma se c'è la possibilità di usare l'ADC interno manipolando direttamente i registri la cosa per me sarebbe più divertente, ma più che divertente direi istruttiva, e soprattutto non necessita di HW aggiuntivo.

Ho trovato vari sketch in rete, e ho dato uno sguardo anche al datasheet del microcontrollore, quello che al momento mi rimane difficile è come definire le coppie che vorrei usare.

Qui per esempio un "tizio" ha modificato la libreria in modalità single ended per arduino mega per usare appunto gli ingressi in modalità differenziale, magari poteva essere un buon punto di partenza.

altra fonte
https://www.davidpilling.com/wiki/index.php/DiffADC

Sapete darmi qualche dritta o indirizzarmi sulla giusta strada?

Grazie

Laacia stare

Non è questa la strada

Lo stadio di ingresso del microcontrollore non ti permette di farlo

Personalmmente credo poi che i 4 "supposti" canali ADC differenziali siano 8 canali convenzionali sottratti tra loro

Lascia stare raccattare "info" in giro: parti dai datasheet del micro, stadio di ingresso

E da li prova a disegnare il circuito che vorresti

Si, infatti, prende due canali a coppia e fa la differenza ...

If differential channels are selected, the voltage difference between the selected input channel pair then becomes the analog input to the ADC.

... ma, almeno, fa un unica conversione e l'acquisizione è simultanea (... nel senso che NON fa due acquisizioni in due tempi differenti e poi fa digitalmente la differenza, ma fa un unica conversione della differenza dei due canali acquisiti allo stesso tempo).

Magari può interessare: Microchip - Differential and Single Ended ADC.pdf (161.1 KB)

Guglielmo

Contemporanea

Io userei contemporanea come termine

Perché, scusa l'ironia è solo apparente, sarebbe contemporanea la frittura del chip con la connessione della seconda pila da misurare

Lo "stadio di ingresso" del microcontrollore non permette di collegare nulla oltre la tensione di alimentazione
Che è massimo 5 volt
La tensione (assoluta e riferita a massa) del positivo della seconda pila è almeno 6.4 volt
Il diodo tra ingresso e vcc è certamente in conduzione non limitata da nulla
E ci siamo appena giocati "almeno" lo stadio di ingresso, poi si discute del resto del chip

... come preferisci, il concetto è comunque ben spiegato in quello che ho scritto tra parentesi. :wink:

... mai affermato il contrario. Il concetto è piuttosto banale e vale per il 90% delle MCU ... si intende solo una coppia di ingressi analogici, con TUTTE le loro limitazioni, di cui viene fatta la differenza e questa inviata al ADC, quindi, ovviamente, niente tensioni inferiori a GND, nulla di superiore a VCC, ecc. ecc. :slight_smile:

Guglielmo

Ma siamo pienamente d'accordo

Mi premeva solo enfatizzare la questione per lo OP, che rischia seriamente di fare danni

1 Like

Non ho risposto subito, ma seguendo i vostri consigli per il momento ho optato per utilizzare i partitori di tensione e poi ricavarmi le differenza tra singole celle. Grazie mille per avermi illuminato!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.