Voici l'idée de base:
V1 est la sortie PWM filtrée et R2 est votre capteur. U1 est un convertisseur tension-courant, le courant traversant la charge R1 étant I = V1 / R2. Cela signifie que la tension aux bornes de R1 dépend des deux entrées. U2 et U3 est un amplificateur d'instrumentation avec gain 10, qui amplifie la tension aux bornes de R1.
Avec R1 = 100 Ohms et V1 = 0..5V, le circuit fonctionne pour R2 = 50..5000, par exemple sur deux ordres de grandeur, ce qui, d'après ce que vous dites, devrait suffire.
Ce que vous faites est de le retirer et de le comparer avec la tension de référence (4V conviendrait ici pour la plage dynamique maximale) et d'utiliser une approximation successive sur V1 pour sortir aussi près que possible de la tension de référence. À partir de V1 et de la chute de tension connue sur R1 (par exemple, la tension de référence), vous pouvez maintenant calculer la valeur de R2, votre capteur. Bien sûr, cela ne vous permettra d'obtenir des résultats que dans la résolution de PWM, mais vous pouvez utiliser un deuxième ampli d'instrumentation pour amplifier l'erreur (différence entre la tension de sortie et la tension de référence) pour la placer dans la plage de l'ADC de votre microcontrôleur, ce qui vous permettra d'obtenir des bits supplémentaires de résolution.
Vous avez besoin de deux amplis op (U1 et comparateur) et deux amplis d'instrumentation. Utilisez des vrais au lieu de les fabriquer à partir d'opamps, car les imprécisions des résistances et des opamps introduiront des erreurs.
Si deux ordres de grandeur ne suffisent pas, vous pouvez remplacer R1 par un potentiomètre numérique pour obtenir un autre degré de liberté. Je n'ai jamais travaillé avec un, donc je ne sais pas à quel point ils sont précis et si une telle solution aurait besoin d'un étalonnage ou non.
De plus, je dois mentionner que c'est jpc qui est venu avec l'idée.
MISE À JOUR:
Ok, je dois être d'accord avec OP que ce n'est pas vraiment la réponse à sa question (même si cela résout le problème techniquement). Je me suis laissé emporter par "amplificateur adaptatif" dans le titre comme excuse pour faire du design analogique. Oubliez tout ce qui est écrit ci-dessus, sauf si vous voulez en savoir (peu) sur les amplis op. Voici, je l'espère, une meilleure réponse et une solution beaucoup plus simple:
Utilisez un diviseur résistif alimenté par un régulateur de tension (pour le séparer du bruit des autres circuits), avec une résistance supérieure réglée sur la résistance maximale que vos capteurs peuvent avoir (Rmax), et avec la résistance inférieure étant le capteur.
Réglez la tension de référence de votre ADC à la moitié de la sortie du régulateur de tension.
Ensuite, vous échantillonnez la tension sur le capteur avec votre ADC. De cette façon, vous n'avez besoin que d'un canal asymétrique par capteur. J'ai fait une recommandation ADC dans l'autre post.
Si vous utilisez un ADC 10 bits intégré aux microcontrôleurs que vous avez mentionnés, vous n'obtiendrez cependant pas beaucoup de plage dynamique. Améliorer la gamme en utilisant des circuits analogiques, comme celui que j'ai publié à l'origine, ajouterait trop de pièces supplémentaires, c'est pourquoi je recommanderais simplement d'utiliser un ADC 24 bits, comme l'ADS1256 que j'ai recommandé dans l'autre post, car cela vous donnera faible bruit et plage dynamique élevée, sur une seule puce (plus la référence, qui est minuscule, et le régulateur de tension, qui peut également être minuscule - vous pouvez également essayer de laisser le régulateur hors tension et d'alimenter le diviseur résistif directement à partir de la référence - cela vous privera d'un bit de résolution, mais il y en a plein quand même). Vous devrez faire quelques calculs croisés ("Auto-calibration en trouvant des valeurs min et max dans une fenêtre d'analyse donnée" - est une bonne idée),
J'espère que c'est un peu plus utile.
MISE À JOUR 2:
C'est le dernier: j'ai parcouru les microcontrôleurs MSP430 de TI et j'ai trouvé que certains d'entre eux ont un ADC sigma-delta 16 bits avec référence interne. À savoir MSP430F2003 et MSP430F20013 . Ce serait votre solution à une puce si vous êtes prêt à abandonner Atmels. Très faible puissance également. Et ils ont des microcontrôleurs en file d'attente avec 24 ADC, mais ceux-ci ne sont pas encore en production. Il existe également des microcontrôleurs PSoC de Cypress, qui ont des ADC sigma-delta 20 bits ( séries PSoC 3 et PSoC 5 ), également avec référence. Ce serait encore mieux.