Connexes : ADC haute résolution pour les capteurs bruyants dans des conditions variables
Je construis une interface à l'aide de capteurs résistifs à base de textile qui peuvent avoir différentes plages de résistance en fonction des conditions environnementales. Afin d'utiliser au mieux mes convertisseurs A / N, j'aimerais explorer l'utilisation d'un amplificateur adaptatif qui aidera à compenser les performances non fiables des capteurs.
Quelles sont mes options ici? Ou pouvez-vous m'indiquer quelques références sur le sujet?
Je peux penser à deux schémas généraux qui seraient utiles:
- Auto-étalonnage en trouvant des valeurs min et max dans une fenêtre d'analyse donnée (~ 30s-2min)
- Étalonnage explicite à l'aide d'une interface bascule-à-train
- ... Y a-t-il des schémas alternatifs auxquels je ne pense pas?
Quelques contraintes
- Ce devrait être une solution monopuce (petite) si possible (comme les puces de détection capacitives)
- Il devrait être facile à configurer et à utiliser (je ne suis pas ingénieur et je ne suis pas payé)
- Il y aura probablement un microcontrôleur à proximité
Encore mieux serait une puce à tout faire avec pont / diviseur de tension Wheatstone, filtre passe-bas et amplificateur.
En savoir plus sur ma configuration particulière
- Les convertisseurs A / N seront soit les convertisseurs intégrés dans une puce Atmel (pourrait être ATtiny85 ou ATmega32u4), soit les convertisseurs intégrés dans une radio XBee série 2. Je n'ai jamais utilisé de puces A / D dédiées auparavant - je ne sais pas s'il y aurait un avantage à le faire.
- Le capteur sera un morceau de lycra conducteur dopé au polymère d'Eeonyx. La résistance change d'environ 1 ordre de grandeur à 30% d'étirement.
- Le tout sera monté sur la main d'un artiste, il doit donc être petit et robuste physiquement. Il y a de fortes chances que ce soit sans fil.
- La précision est importante. L'interface sera utilisée pour varier en continu les effets audio en temps réel, c'est-à-dire que ce n'est pas un commutateur.
Réponses:
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.
la source
Si les changements de résistance du capteur sont importants (> 50%), vous pouvez utiliser un circuit diviseur de tension au lieu du pont de Wheatstone (plus compliqué). Vous pouvez ensuite facilement améliorer la plage dynamique en faisant varier la tension d'alimentation.
Une tension d'alimentation réglable peut facilement être créée à partir du PWM dans votre microcontrôleur avec un filtre RC et une source de courant à tension contrôlée.
Voici un schéma approximatif de mon idée:
(extrait de Socratic Electronics par Tony R. Kuphaldt )
Vous connectez ensuite la tension PWM filtrée à l'entrée non inverseuse (+) de l'ampli op.
Pour un multiplexage rapide, vous pouvez créer deux sources de courant de ce type. Si vous connectez tous les capteurs pairs à l'un et tous les autres impairs à l'autre, vous pouvez modifier la tension du capteur suivant pendant que votre ADC échantillonne.
Vous devez utiliser une référence de tension de précision pour l'ADC. Vous pouvez également gagner 1 ou 2 bits en utilisant un filtre de moyenne mobile dans votre logiciel.
PS. Je voudrais remercier Jaroslav Cmunt pour ses vastes améliorations à cette réponse.
la source
Avez-vous lu ce site?
Il existe de nombreux exemples d'électronique portable, dont certains avec des tissus Eeonyx. Le site présente des exemples de circuits de détection (ardunio et xbee).
Vous n'avez pas besoin de beaucoup de composants pour construire un pont de Wheatstone et votre meilleur avantage avec 1 circuit de détection multiplexé aux 8 capteurs, vous pouvez toujours obtenir 100 échantillons par seconde ou plus facilement sur chaque entrée. Utilisez un PCB en tissu (vérifiez à nouveau le site ci-dessus) pour créer le pont. Ou passez simplement les fils du capteur sur le gant et placez tous les composants électroniques de détection dans un sac monté sur ceinture. La plupart des «capteurs» en tissu que j'ai vus ont une résistance relativement élevée, les 0,1 ohms que vous pouvez obtenir du fil entre la ceinture et les gants n'ont pas d'importance.
Mettez un capteur de température dans chaque gant et utilisez le résultat pour effectuer une correction dans le logiciel si nécessaire pour vous adapter aux changements environnementaux. Peut-être étalonner les gants avant chaque utilisation, peut ne pas être nécessaire selon l'intelligence de l'interprète.
Je suppose que le module Xbee transmet à un ordinateur, intègre la fonction d'étalonnage dans l'ordinateur, fait en fait autant de traitement que possible, comme la correction de température, sur l'ordinateur.
Points bonus si vous utilisez simplement un réseau de neurones pour convertir l'entrée du capteur en action. Cela facilitera l'entraînement et s'adaptera aux mouvements de la main de différentes personnes.
la source