Mise à l'échelle de la tension pour Arduino Analog In, au-delà des diviseurs de tension

16

J'ai récemment construit des capteurs de courbure de fibre optique et je veux lire les valeurs que j'obtiens d'eux dans un ordinateur via un Arduino. Je mesure la lumière avec cette photodiode d' Industrial Fibre Optics . Actuellement, je donne la LED à l'autre extrémité ainsi que la photodiode 2.2V. Ma question a à voir avec le fait que les fluctuations de tension mesurées par un multimètre sur la photodiode sont linéaires, mais plutôt petites car la fibre est déformée, même assez radicalement. Avec la fibre droite, en fonction de la fibre (il est difficile de les évaluer de manière identique), la tension oscille autour de 1,92 V, par exemple, et en se pliant, elle montera, par exemple, à 1,93-1,94 V. Je ne suis pas inquiet d'obtenir des tensions identiques car je peux évoluer dans le logiciel.

Ce qui m'inquiète, c'est de perdre la résolution lors de la réalisation d'A / D avec l'Arduino. Si mes fluctuations de tension sont de l'ordre de 10 mV, l'A / D 10 bits de l'Arduino ne quantifiera-t-il pas l'enfer, même si j'augmente la tension jusqu'à 5 V avec un diviseur de tension? Ce que je recherche, c'est un scaler analogique. Comment puis-je étendre cette plage entre 1,92 et 1,94 pour couvrir toute la plage, de 0V à 5V, afin de pouvoir profiter de la gamme complète de l'Arduino A / D?

J'ai l'impression que cela doit être une opération courante en électronique, mais je ne l'ai jamais étudiée formellement, donc beaucoup de choses se perdent pour moi.

(Vous vous demandez peut-être, comme le faisait David, "pourquoi utilisez-vous la fibre optique pour la détection des courbures? Pourquoi vous attendriez-vous à un changement de tension lorsque la fibre est pliée?" . Cela laisse la lumière se répandre. Lorsque le câble est plié loin de la rainure, encore plus de lumière s'échappe du câble, provoquant une chute de tension dans le récepteur, et vice versa.)

terrasse
la source
Seriez-vous assez aimable pour montrer un schéma de votre récepteur? Fournissez-vous la tension de polarisation de 1,9 V?
endolith
Si vous voulez dire le schéma du récepteur lui-même, j'ai lié à la fiche technique ci-dessus. Le voici à nouveau: i-fiberoptics.com/pdf/IFD91.pdf Si vous voulez dire comment je l'ai branché, vous pouvez le voir sur la photo. Le récepteur est le noir. Je lui donne 2,2 V (bien que, sur la photo, c'est une batterie Li-ion) à travers le fil rouge sur le côté du récepteur avec le point orange, et je mesure la tension à travers la résistance qui va à la terre l'autre côté.
terrasse

Réponses:

11

Donc, si je comprends bien, vous voulez pouvoir "lire" une variation de 10 mV au-dessus d'un signal de 1,9V?

Si tel est le cas, je proposerais deux étapes distinctes. Le premier sera un amplificateur à photodiode (la page 9 est le plus standard des circuits). Cela aidera à convertir le courant de votre photodiode en tension.

Le deuxième étage sera un amplificateur d'instrumentation, comme la famille INA de Texas Instruments (le meilleur mais aussi peut être cher). Cela aidera à supprimer votre signal de "mode commun", qui dans ce cas est le 1,9 V. Vous pouvez également ajouter du gain à l'ampli d'instrumentation ou alternativement ajouter un ampli op simple dans une configuration non inverseuse à la fin pour aider à gagner votre signal jusqu'à 5 V.

Je ne dis pas que ce sera parfait, mais je pense que c'est un bon début.

Enfin, j'aime l'idée de David ci-dessus concernant les pinces, même si celles-ci peuvent provoquer des erreurs de mesure au niveau du convertisseur A / N. Ce qui est plus important cependant, c'est que si vous pouvez le balancer, essayez un meilleur ampli op que le 741. Ceux-ci sont courants mais les spécifications sont terribles. Les 3 ou 4 mV de tension de décalage aux bornes d'entrée pourraient vraiment gâcher un petit signal comme vous essayez de mesurer.

~ Chris Gammell

Chris Gammell
la source
1
Vous n'avez pas besoin d'un ampli d'instrumentation. Un simple ampli diff fera l'affaire. Cependant, vous avez besoin d'une alimentation constante de 1,9 V pour l'utiliser comme référence. Je suppose que quelque chose comme ça existe déjà dans le circuit comme biais pour le capteur. Il serait utile d'avoir un schéma. De plus, après avoir supprimé la polarisation, vous devez rajouter une autre polarisation pour la placer entre la plage 0 et 5 V de l'ADC.
endolith
1
Je suis d'accord que vous n'en avez pas besoin, mais c'est une bonne idée. Un ampli d'instrumentation n'est qu'un ampli diff avec des tampons avant (parfois avec des résistances ajoutées pour le gain). Si vous utilisez simplement un ampli diff, vous êtes à la merci des résistances de votre ampli diff; parfois aussi bas que 1K. S'il essaie de mesurer quelque chose, cette impédance élevée (provenant des tampons d'un iAmp) peut vraiment aider (c'est-à-dire pas de flux de courant dans l'appareil de mesure).
Chris Gammell
12

Le conditionnement du signal dans ce sens est extrêmement courant. Vous voulez utiliser un amplificateur afin de faire cette plage de 10 mV (par exemple) toute la plage 0-5 V de l'arduino. Cela peut être fait en utilisant des amplificateurs opérationnels tels que le LM741. Vous voudrez aussi probablement utiliser une "pince de tension" (ex: deux diodes zener) sur la sortie de votre conditionneur de signal / entrée dans l'ADC pour vous assurer que la valeur ne dépasse pas 5V. Si vous regardez en ligne les fiches techniques des amplis opérationnels et / ou les circuits de conditionnement du signal, vous devriez trouver des guides pour savoir exactement ce que vous recherchez.

David Brenner
la source
4

Nous vous suggérons de regarder la combinaison d'un PGA différentiel (amplificateur à gain programmable) et d'un DAC, avec la sortie du capteur allant à l'entrée "+" et le DAC allant à l'entrée "-". (Ou quelque chose d'intégré qui vous offre une fonctionnalité équivalente.) Fondamentalement, regardez le signal avec un faible gain, déterminez quel est son décalage, mettez cette tension sur le DAC et augmentez le gain.

PGA308 de TI semble être une bonne solution.

Si vous voulez une solution moins chère, utilisez un amplificateur différentiel à gain fixe (le standard à 4 résistances + ampli opérationnel) + un DAC 8 bits stable et silencieux (les caractéristiques de stabilité / bruit sont plus importantes que la précision), encore une fois la sortie du capteur sur l'entrée "+" de l'ampli diff et la sortie DAC sur l'entrée "-".

Exercice pour le lecteur: montrez que vous pouvez sortir la sortie de l'ampli diff de la saturation et dans une plage linéaire en utilisant une technique de recherche binaire avec le DAC et en vous assurant que le gain n'est pas supérieur à G1 = la tension d'entrée ADC pleine échelle, divisé par la somme de la taille nominale du DAC et de sa DNL (non-linéarité différentielle). J'utiliserais probablement le plus petit de (G1 / 2) et G2, où G2 = la tension d'entrée ADC pleine échelle divisée par la plage de tension de sortie du capteur qui vous intéresse.

Jason S
la source
Beaucoup trop ambitieux pour moi pour le moment étant donné les contraintes de temps, mais merci pour la suggestion. Je suis ravi de plonger davantage dans le conditionnement du signal analogique pour les futurs prototypes.
terrasse
Pourquoi avez-vous besoin d'un DAC? Vous générez juste un décalage CC avec lui? Cela semble plutôt exagéré.
endolith
Ouais. Le DAC était fondé sur l'hypothèse de devoir modifier le décalage CC sur une large plage. Si vous avez un système dont la tension ne couvre qu'une plage étroite (en supposant que vous avez bien fait votre analyse de tolérance), un diviseur de résistance et une référence peuvent être adéquats pour produire une tension de décalage. Ou pour un peu plus de complexité, un réseau de résistances + multiplexeurs (ce que sont certains DAC). Un DAC n'est pas vraiment un appareil aussi compliqué ou coûteux, si vous n'avez pas besoin d'une résolution ultra-rapide ou ultra-fine.
Jason S
3

L'utilisation de la fibre optique comme capteur de courbure peut être un mauvais choix, n'est-ce pas tout l'intérêt de la fibre optique pour vous permettre facilement de courber la lumière dans les coins avec une perte minimale?

davr
la source
2
Oui, mais si vous enlevez la veste et grattez légèrement le revêtement d'un côté avec une lame de rasoir, la quantité de lumière qui passera variera lorsque vous courberez la fibre. Une fonctionnalité intéressante est que vous obtenez un signal bidirectionnel. Si vous vous penchez loin de la notation, moins de lumière passe à travers, si vous vous penchez vers elle, plus de lumière passe à travers. Vous devriez utiliser deux capteurs de courbure traditionnels pour obtenir cela. Ils ont aussi l'air cool.
terrasse
2

Vous avez besoin de deux choses: utiliser une entrée différentielle pour comparer avec une norme 1.9v (ou proche d'elle), et un amplificateur pour augmenter la résolution de cette différence.

Pour les meilleurs résultats, vous devez utiliser des amplis d'instrumentation externes de haute qualité ou des amplis opérationnels. Mais vous pouvez essayer d'utiliser les fonctionnalités intégrées au microcontrôleur. L'Arduino Mega (puce ATMega2560) et l'Arduino Leonardo incluent tous deux l'option d'entrées amplifiées différentielles vers l'ADC directement sur la puce. (L'Uno n'a pas ça). Un ATMega2560 pourrait faire plusieurs canaux (multiplexés) d'ADC différentiel amplifié pour plusieurs capteurs - lisez la fiche technique pour voir quelles combinaisons de broches sont possibles. Il a une option d'amplification 200x, qui mettrait la résolution complète de 1024 pas sur 25 mv. Il vous suffit de positionner cette fenêtre de 25 mV là où vous en avez besoin!

Cela peut ou non être suffisamment silencieux pour vos besoins - ce n'est pas aussi de haute qualité que vous pourriez construire en externe pour plus de $$.

La partie la plus difficile peut être d'obtenir une référence 1.9v stable et précise à comparer.

Zeph
la source
Je suis venu ici pour dire cela. +1!
Nick Johnson