ADC haute résolution pour capteurs bruyants dans des conditions variables

9

Intro

En réponse à cette question sur les amplificateurs adaptatifs , il a été recommandé que, pour faire face à des conditions variables, il soit plus économique d'utiliser simplement un ADC avec une résolution plus élevée afin de ne pas avoir à me soucier de l'amplification et je puisse faire une mise à l'échelle dans le logiciel.

Aperçu

J'essaie de concevoir un circuit d'acquisition de données pour les capteurs d'étirement à base de textile montés sur le corps. Le textile varie de résistance à mesure qu'il est étiré (environ 1 ordre de grandeur, 10k -100k Ω avec 30% d'étirement). Les gammes exactes changeront en fonction de la façon dont le textile est coupé, qu'il soit trempé de sueur, de la température, de l'âge du matériau, de la façon dont il est monté, etc. Le tout doit être aussi petit que possible car il est monté à la main , donc minimiser le nombre de composants est un gros plus.ΩΩ

De plus, j'aimerais que le circuit soit réutilisable pour d'autres applications qui peuvent avoir de moins bonnes performances. Par exemple, si j'utilise une version moins chère du textile, ma plage de résistance peut être aussi mauvaise que 100 à 300 Ω .ΩΩ

Chemin du signal

[textile] -> [Wheatstone bridge] -> [lowpass] -> [ampli instrumentation] -> [ADC] -> [AVR]

Exigences

Je recherche donc un ADC qui répondra à mes besoins. L'ADC devrait être:

  1. 16bits +
  2. Aussi simple à utiliser que possible: bien mieux s'il y a déjà du code d'interface pour AVR / Arduino ...
  3. ... mais en même temps aussi complet que possible: j'ai vu des ADC avec des filtres passe-bas et des PGA intégrés - tant mieux tant que cela ne rend pas la configuration pénible
  4. 8+ canaux, ou si c'est assez facile à mettre en œuvre, 2x 4+ canaux. EDIT: Si j'utilise un pont Wheatstone, je veux peut-être 8 canaux d'entrée différentiels (donc 16 canaux) ...
  5. Je ne pense pas que la tension de fonctionnement importe ... (mieux que pas au-dessus de 5V)
  6. Montage en surface
  7. N'a pas besoin d'être bon marché (c'est unique)
  8. SPI vs I2C n'a pas d'importance je pense ...
  9. 100+ Hz

Recherche

Jusqu'à présent sur Google, j'ai trouvé les puces suivantes:

et les tutoriels suivants:

Référence de tension?

Enfin, certaines personnes ont recommandé une référence de tension de précision, comme la série Analog Devices REF19x . Pensez-vous que cela soit nécessaire? La résolution est définitivement importante pour moi.

Conclusion

Faites-moi savoir si vous avez des recommandations! Je ne sais pas non plus exactement ce que je recherche, donc des conseils sur la façon de décider sont également appréciés.

terrasse
la source
J'espère éviter ce genre d'histoire: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264346368
terrasse
@msutherl - Serait-ce un gros problème si vous deviez utiliser un multiplexeur pour vous connecter à cet ADC? Vous aurez du mal à trouver un ADC à 16 canaux, 16+ bits, mais les parties à 1 ou 2 canaux sont assez faciles ...
Kevin Vermeer
1
Les bits seuls ne déterminent pas la plage dynamique. Les convertisseurs 24 bits pourraient théoriquement avoir une plage dynamique de 144 dB, mais les vrais convertisseurs sont de 100 à 120 dB environ. Êtes-vous sûr d'avoir besoin de cette résolution pour un capteur d'étirement? Vous essayez de gérer de nombreux capteurs d'étirement différents de valeurs différentes? Il serait préférable d'utiliser simplement un amplificateur à gain variable, je pense, et de l'ajuster pour chacun. De toute façon, vous devrez faire cet étalonnage quelque part.
endolith
1
Avez-vous besoin de 100 Hz + pour chaque capteur ou pour chacun d'entre eux? Avec les ADC multicanaux, vous obtenez souvent 1 ADC et un multiplexeur, vous devrez donc diviser le SPS par le nombre de canaux (ou plus si la paire multiplexeur / multiplexeur ne peut pas changer de canal très rapidement).
jpc
1
@msutherl Oui, un potard de gain manuel ou un amplificateur à gain programmable. Quelque chose comme un PGA116 pourrait gérer l'échantillonnage de tous vos capteurs en mode round-robin à des gains différents pour chacun, avec tout fait par logiciel?
endolith

Réponses:

7

L'ADS1256 de TI possède huit canaux 24 bits asymétriques avec un tampon d'entrée haute impédance et PGA. Le projet OpenEXG a un code PIC pour l'interfacer (ils utilisent la version à deux canaux ADS1255, mais il devrait être le même).

Si vous voulez des entrées différentielles, il y a l' ADS1298 , avec 8 canaux, PGA et A / D, référence interne, plus un circuit ECG / EEG que vous pouvez ignorer. Je ne suis pas sûr que vous puissiez trouver un exemple de code pour celui-ci, cependant.

Si vous recherchez une résolution, une référence précise et à faible bruit est un must.

Jaroslav Cmunt
la source
5

Une idée peut-être non conventionnelle, je suis curieux de savoir ce que vous en pensez:

Un ordre de grandeur semble un changement suffisamment important pour le mesurer directement dans un circuit diviseur de tension.

Vous pouvez ensuite utiliser un ADC plus petit et faire varier le courant à travers le capteur. Une source de tension PWM filtrée + un suiveur de tension (peut être un transistor NPN si vous êtes dans l'espace) peut considérablement améliorer votre plage dynamique.

Vous pouvez en utiliser un ou deux et commuter la tension lors de la mesure de différents capteurs.

jpc
la source
Pas du tout non conventionnel. En fait, s'il veut utiliser un petit microcontrôleur 8 bits, il peut ainsi éviter de traiter des valeurs de 24 bits et la complexité peut être plus petite que l'interface de ces ADC sophistiqués. La plage dynamique peut être la somme des plages dynamiques de l'ADC et du PWM dans le cas idéal. D'un autre côté, il semble que pour de nombreuses personnes, les conceptions analogiques sont plus dures que numériques, il est donc plus simple d'utiliser l'ADC 24 bits. De plus, la plage dynamique de l'ADC peut être augmentée par un suréchantillonnage et un filtrage numérique ... enfin, ce n'est plus simple.
Jaroslav Cmunt
@Jaroslav Merci. 1. Il a déjà un pont Wheatstone donc je suppose qu'il n'a pas totalement peur de la partie analogique. :) 2. 1 ou 2 bits de résolution supplémentaire devraient être réalisables par un simple filtre de somme en cours d'exécution.
jpc
1
En effet! Voici un lien pour OP: http://www.dspguide.com/ch15.htm
Jaroslav Cmunt
3

Si votre souci principal est d'avoir une large plage dynamique pour un "capteur" donné, vous pouvez envisager d'utiliser le DAC (ou même simplement des sources de tension contrôlées par broches MPU) pour régler le décalage / gain de l'amplificateur afin de modifier les performances du système pour différents matériaux.

Vous pouvez également suivre cette étape de gain variable avec un circuit d'intégration de charge afin que vous puissiez gagner la sensibilité du signal de réglage fin en ajustant la période "d'exposition".

Constructeur de jouets
la source
0

Si vous disposez d'une puissance de calcul suffisante pour la fréquence d'échantillonnage dont vous avez besoin, envisagez le filtrage numérique. UNE filtre Savitzky-Golay , f / ex.

  • Vous pouvez changer les algorithmes plus facilement que vous ne pouvez changer les parties;
  • En poussant une partie du filtrage sur le logiciel, vous pouvez probablement utiliser une partie de spécifications plus faible que si la partie elle-même devait être plus tolérante au bruit ou faire tout le filtrage;
  • Vous en apprendrez beaucoup plus sur vos entrées et ce dont vous avez besoin et vous pourrez faire un choix de pièces mieux informé, si vous avez en fait besoin d'une pièce de spécifications plus élevées.
  • Le logiciel et les compétences sont facilement transférés vers vos autres applications!
JRobert
la source
tout le filtrage sera effectué sur un PC dans un environnement de traitement du signal en temps réel.
terrasse
0

Pourquoi ne pas passer à 11 et utiliser simplement la TI ADS1262 . C'est un ADC 32 bits, avec 11 entrées et un PGA!

ADS1262

Avec 32 bits, vous pouvez à peu près tout échantillonner. Et ce n'est même pas si cher. De plus, si vous n'en faites qu'un, obtenez simplement un échantillon gratuit .


Une autre option consiste à utiliser un PSoC. Ce sont des microcontrôleurs contenant des blocs analogiques et numériques reconfigurables, que vous pouvez utiliser pour composer toutes sortes de fonctions. Vous pouvez en choisir un avec un ADC 16 bits, un PGA, un DAC et un filtre numérique, pour créer votre propre gamme automatique, ajustement automatique, suréchantillonnage, filtrage numérique, ADC!

PSoC38xx

La programmation de ces choses est un jeu d'enfant, car vous dessinez simplement le schéma que vous voulez, en choisissant des fonctions prédéfinies dans une liste. Ensuite, écrivez du code C, et vous êtes parti.

Rocketmagnet
la source