Est-il viable d'utiliser simplement des résistances de 1% et de calibrer l'erreur?

9

Pour le moment, j'utilise des résistances à 0,1% pour obtenir une mesure précise de la tension via un diviseur de tension. Cependant, le coût est élevé, donc je pensais utiliser des résistances à 0,5% ou 1% et calibrer l'erreur dans le logiciel en utilisant une référence de tension de précision pendant la production. Quelqu'un a-t-il réussi cela? Quels pièges pourrais-je rencontrer?

Thomas O
la source
À quel type d'outils de production avez-vous accès? Pouvez-vous obtenir / construire quelque chose comme un programmeur / testeur de lit de clous?
Kevin Vermeer
@reemrevnivek - Pas actuellement. Mon fabricant de PCB teste par E chaque carte, mais il n'est pas garanti que la soudure fonctionnera.
Thomas O
Il y a 40 ans sur les planches traversantes, c'était assez courant là où je travaillais (électronique industrielle). La résistance à sélectionner se trouverait sur les bornes de la tourelle et pourrait donc facilement être ajoutée ultérieurement. Sur une carte SMT, il est difficile d'imaginer qu'elle serait rentable.
Mattman944

Réponses:

6

Vous avez donc:

          R_x         R_fixed
Vcc -----^v^v^----+----^v^v^------- Gnd
                  |
                  |
                  +--- V_sensed --- ADC input

Rx est une résistance inconnue (probablement un capteur quelconque). Et vous utilisez R_fixed à 0,1% en ce moment afin de calculer efficacement R_x, mais vous souhaitez utiliser une résistance fixe moins chère avec une tolérance inférieure de peut-être 1%. Ce faisant, vous souhaitez effectuer une sorte d'étalonnage pendant la production pour corriger l'erreur accrue, n'est-ce pas?

La façon dont vous finissez par le faire est de mettre un octet dans l'EEPROM (ou une autre mémoire non volatile) qui agit comme un "décalage" dans votre calcul, et c'est une chose parfaitement viable à faire. Le truc, c'est que ça va vous coûter un peu de temps pendant la production pour faire l'activité d'étalonnage. Pour effectuer l'étalonnage, vous aurez besoin d'une de ces résistances à 0,1% (appelez-la R_cal) de valeur nominale comparable à votre résistance à 1% pour remplacer le circuit par R_x dans le circuit. En mesurant V_sensed, vous pouvez déduire plus précisément la valeur de R_fixed (c'est-à-dire quelque chose comme 0,2%).

Si R_cal et R_fixed ont nominalement la même valeur, vous vous attendriez à ce que V_sensed soit égal à Vcc / 2. Vous stockeriez l'écart mesuré par rapport à Vcc / 2 comme octet de décalage d'étalonnage et l'ajoutez toujours à V_sensed tel qu'il est perçu par votre ADC.

Le piège, selon moi, est qu'il y a beaucoup de travail impliqué dans la mesure et ensuite dans le stockage de la valeur. Une autre chose à considérer comme un écueil est que la température peut jouer un rôle en faisant dévier une résistance de sa valeur nominale, vous voudrez donc un environnement d'étalonnage à température contrôlée raisonnablement bien. Enfin, n'oubliez pas d'utiliser un équipement de mesure calibré, car c'est une autre source potentielle d'erreur additive. Un dernier écueil auquel je peux penser est que l'octet d'étalonnage doit être stocké dans les unités du LSB de votre ADC (donc si vous avez un ADC 12 bits, les unités d'octet de décalage d'étalonnage doivent être "Vcc / 2 ^ 12 Volts") .

Éditer

Si vous utilisez deux résistances fixes pour diviser une tension élevée à une échelle inférieure comme suit:

        R1_fixed       R2_fixed
V_in -----^v^v^----+----^v^v^------- Gnd
                   |
                   |
                   +--- V_sensed --- ADC input

Section rééditée

Alors maintenant, vous voulez utiliser une référence de tension de précision (appelez-la V_cal) pour stimuler V_in lors d'une étape de calibration en production. Ce que vous avez là est en théorie:

V_sensed = V_predicted = V_cal * R2_fixed / (R1_fixed + R2_fixed) = V_cal * slope_fixed

Mais ce que vous avez en réalité, c'est:

V_sensed = V_measured = V_cal * R2_actual / (R1_actual + R2_actual) = V_cal * slope_actual

En effet, vous avez en réalité une pente de fonction de transfert différente de celle que vous prédisez à partir des valeurs de résistance. L'écart par rapport à la fonction de transfert du diviseur prévu sera linéaire par rapport à la tension d'entrée, et vous pouvez supposer en toute sécurité que 0 V en entrée vous donnera 0 V en sortie, donc faire une mesure de référence de tension de précision devrait vous donner suffisamment d'informations pour caractériser ce facteur d'échelle linéaire . À savoir:

V_measured / V_predicted = slope_fixed / slope_actual 
slope_actual = slope_fixed * V_measured / V_predicted

Et vous utiliseriez pente_actual comme valeur calibrée pour déterminer la tension en fonction de la tension mesurée.

ci-dessous avec l'aimable autorisation de @markrages

Pour obtenir la sensibilité réelle de la pente aux valeurs de résistance, une différenciation partielle est nécessaire:

texte alternatif

vicatcu
la source
Je veux utiliser 1% pour les deux résistances du diviseur. J'utilise un diviseur de tension pour lire des signaux jusqu'à 40 V. Est-ce que ce que vous dites s'applique toujours? Et je vais chercher une référence de tension de précision, bien que ± 0,05% soit probablement correct, et vous pouvez obtenir des circuits intégrés DIP qui le font.
Thomas O
@Thomas OK, j'ai mal compris votre question ... vous utilisez un diviseur de tension pour abaisser une tension élevée, pas pour mesurer une résistance inconnue ... Je changerai ma réponse en conséquence.
vicatcu
Je ne suis pas sûr que l'erreur ne soit pas linéaire, ignorant pour l'instant le chauffage par résistance. Ce devrait être un facteur linéaire fixe pour chaque diviseur (il y en a quatre sur le tableau), car le diviseur ne fait que diviser par un montant fixe. Avec zéro volt, zéro volt devrait être mesuré par l'ADC, plus l'erreur de décalage, ce qui pourrait le faire lire un décompte, donc je n'ai pas vraiment besoin de me soucier du décalage ... À moins que je manque quelque chose?
Thomas O
désolé, non linéaire était probablement le mauvais terme rétrospectivement. Ce que vous obtiendrez efficacement de l'étalonnage est un facteur d'échelle, non? L'écart par rapport à la prévision va être linéaire par rapport à la tension d'entrée. Donc, étant donné le "V prévu basé sur la mesure", le V réel devra être multiplié par un facteur. Ce qui serait non linéaire, c'est l'erreur de supposer qu'il s'agissait d'une tension de décalage.
vicatcu
5

Pour moi, ce sera difficile, mais pas impossible.

  • Habituellement, 0,1% des résistances nominales ont des coefficients de température TC = inférieurs, sont plus immunisées contre l'humidité, la soudure (choc thermique), ont une dérive plus faible avec le temps, ... que 1% des résistances nominales. Ainsi, de nombreuses sources de changement de résistance doivent être considérées.
  • À un niveau de 40 V, l'effet d'auto-échauffement peut être significatif, donc des résistances avec une puissance nominale appropriée doivent être utilisées.
  • il existe des résistances de 1% de bonne qualité, ayant TC <20ppm / deg, et TC similaire de résistance à résistance (différence de + - 10ppm) mais cela est vrai pour le même type, valeur nominale et résistances de puissance. Une utilisation appropriée de ce type de résistances dans le diviseur de tension annulera l'influence du TC moyen. Seule la différence de TC aura une influence sur la tension de sortie. Il est donc possible d'obtenir des diviseurs de précision, en utilisant des résistances de même valeur.
  • Les résistances de différentes valeurs nominales peuvent avoir des TC plus différents. Et l'auto-échauffement aura une influence différente - plus de puissance dissipée sur une résistance de résistance plus élevée la chauffera plus et changera la résistance.
    Conclusion: Si vous utilisez de nombreuses résistances en production (longue série de la même carte / diviseur) et que le coût des résistances est significatif, vous pouvez envisager un remplacement. Sinon, cela ne vaut probablement pas la peine.
czgut
la source
4

Cette approche fonctionne bien, passant de 5% à 1%. Passant de 1% à 0,1%, je soupçonne que vous commencerez à voir votre précision ruinée par les fluctuations de température modifiant la résistance et donc la tension.

Si, pour une raison inconnue, vous travaillez dans un environnement isotherme et que vos résistances sont toutes à courant constant, si l'auto-échauffement est prévisible, il est toujours viable.

pingswept
la source
Je pense que la température pourrait influencer une résistance typique de ± 100 ppm / ° C de -0,4% à + 0,7% (ou l'inverse) sur la plage de fonctionnement de -40 ° C à + 70 ° C de mon appareil. Si nécessaire, je pourrais calibrer cela aussi. Il est plus probable qu'il soit exposé à des températures élevées, et je peux chauffer la planche pour le tester.
Thomas O
3
Parfois, avec une conception intelligente, vous pouvez faire annuler le tempco de la résistance. Si vous identifiez de telles paires de résistances dans votre conception, placez-les l'une à côté de l'autre dans la disposition pour maximiser le couplage thermique. Ou même utiliser des réseaux de résistances.
markrages
@markrages, Si les deux résistances sont à + 100 ppm / ° C, cela minimisera-t-il l'erreur, car les deux seront hors de la même fraction? En théorie, en supposant que les deux résistances dérivent de quantités égales, la sortie ne devrait pas changer. En pratique, ce serait probablement le cas, d'autant plus que la référence de tension (LM4040) elle-même peut dériver.
Thomas O
@Thomas. Oui, c'est l'idée. Voyons, le LM4040 revendique le pire des cas 100ppm / C, 15ppm typique à 1mA ou moins. La réponse en température typique est tracée dans la fiche technique et ne ressemble pas à quelque chose qui pourrait être facilement annulé. Je suppose que vous pourriez y coller une thermistance NTC et la "cuire au four" pour la garder à une température constante (élevée), mais pas si vous avez un budget de puissance.
markrages
4

Vous pouvez calibrer:

  • Tolérance de fabrication [2] [3], (+/- 1 *%) = peut être calibré
  • Chaleur de soudure [2] [3], variation de résistance due à la soudure (+/- 0,2 * à 1%) = peut être calibré

Mais n'oubliez pas toutes les autres tolérances:

  • TCR [2] [3], résistance au coefficient de température (+/- 50 à 100 * ppm / C)
  • VCR [2], résistance au coefficient de tension (+/- 25 * ppm / V)
  • Facteurs environnementaux, changement de résistance au cours de la vie (<= + / - 3% * à 155 C, 225 000 h) [2] [3] [4]

* Notez que toutes les valeurs peuvent différer entre les marques de résistances et les produits.

[1] https://www.vishay.com/docs/28809/driftcalculation.pdf

[2] https://www.digikey.se/sv/ptm/v/vishay-beyschlag/mm-hv-high-voltage-thin-film-melf-resistors/tutorial

[3] https://industrial.panasonic.com/cdbs/www-data/pdf/RDA0000/AOA0000C304.pdf

[4] MIL-STD R-10509

warpi
la source