Ecco l'idea di base:
V1 è l'uscita PWM filtrata e R2 è il tuo sensore. U1 è un convertitore da tensione a corrente, con corrente attraverso il carico R1 che è I = V1 / R2. Ciò significa che la tensione attraverso R1 dipende da entrambi gli ingressi. U2 e U3 è un amplificatore di strumentazione con guadagno 10, che amplifica la tensione attraverso R1.
Con R1 = 100 Ohm e V1 = 0..5V il circuito funziona per R2 = 50..5000 ad es. Su due ordini di grandezza, che da quello che dici dovrebbe essere sufficiente.
Quello che fai è estrarlo e confrontarlo con la tensione di riferimento (4 V sarebbe appropriato qui per la massima gamma dinamica) e usare un'approssimazione successiva su V1 per uscire il più vicino possibile alla tensione di riferimento. Da V1 e caduta di tensione nota su R1 (ad es. Tensione di riferimento) è ora possibile calcolare il valore di R2, il sensore. Questo ovviamente ti porterà solo nella risoluzione di PWM, ma puoi usare il secondo amplificatore di strumentazione per amplificare l'errore (differenza tra tensione di uscita e di riferimento) per farlo rientrare nell'intervallo dell'ADC del tuo microcontrollore e questo ti darà bit aggiuntivi di risoluzione.
Sono necessari due opamp (U1 e comparatore) e due amplificatori di strumentazione. Usa quelli veri invece di farli da opamp, perché le imprecisioni di resistori e opamp introdurranno errori.
Se due ordini di grandezza non fossero sufficienti, è possibile sostituire R1 con potenziometro digitale per ottenere un altro grado di libertà. Non ho mai lavorato con uno, quindi non so quanto siano precisi e se tale soluzione avrebbe bisogno di una calibrazione o meno.
Inoltre, dovrei menzionare che è stata jpc a venire con l'idea.
AGGIORNARE:
Ok, devo essere d'accordo con OP sul fatto che questa non è davvero la risposta alla sua domanda (sebbene risolva il problema tecnicamente). Mi sono lasciato trasportare dall'amplificatore adattivo nel titolo come scusa per realizzare un design analogico. Dimentica tutto ciò che è stato scritto sopra, a meno che tu non voglia imparare qualcosa (poco) sugli opamp. Ecco, spero, una risposta migliore e una soluzione molto più semplice:
Usa un divisore resistivo alimentato da un regolatore di tensione (per separarlo dal rumore di altri circuiti), con la resistenza superiore impostata su circa la massima resistenza che i tuoi sensori possono avere (Rmax) e con la resistenza inferiore come sensore.
Imposta la tensione di riferimento per il tuo ADC a metà dell'uscita del regolatore di tensione.
Quindi campiona la tensione sul sensore con il tuo ADC. In questo modo è necessario un solo canale single-ended per sensore. Ho fatto una raccomandazione ADC nell'altro post.
Se usi un ADC a 10 bit integrato nei microcontrollori che hai citato, non otterrai una gamma dinamica. Il potenziamento della gamma utilizzando circuiti analogici, come quello che ho pubblicato originariamente, aggiungerebbe troppe parti aggiuntive, motivo per cui consiglierei semplicemente di usare un ADC a 24 bit, come l'ADS1256 che ho raccomandato nell'altro post, perché ti darà basso rumore e alta gamma dinamica, in un singolo chip (più il riferimento, che è minuscolo, e il regolatore di tensione, che può anche essere minuscolo - puoi anche provare a lasciare fuori il regolatore e alimentare il divisore resistivo direttamente dal riferimento - questo ti toglierà 1 bit di risoluzione, ma ce ne sono comunque molti). Dovrai eseguire alcuni crunching numerici ("Auto-calibrazione trovando i valori minimo e massimo in una determinata finestra di analisi" - è una buona idea),
Spero che questo sia un po 'più utile.
AGGIORNAMENTO 2:
Questo è l'ultimo: ho esaminato i microcontrollori MSP430 di TI e ho scoperto che alcuni di essi hanno ADC sigma-delta a 16 bit con riferimento interno. Vale a dire MSP430F2003 e MSP430F20013 . Questa sarebbe la tua soluzione a un chip se sei disposto a rinunciare ad Atmels. Anche a bassissima potenza. E hanno in coda microcontrollori con 24 ADC, ma questi non sono ancora in produzione. Inoltre ci sono anche microcontrollori PSoC di Cypress, che hanno ADC sigma-delta a 20 bit (serie PSoC 3 e PSoC 5 ), anche con riferimento. Questi sarebbero ancora meglio.