AN 1005 : Conversion de l'angle d'inclinaison en degrés

Description

Cette note d'application explique comment convertir en degrés la sortie brute d'un capteur d'inclinaison électrolytique.

Portée linéaire et plage de fonctionnement des capteurs d'inclinaison

La plage de mesure d'un capteur d'inclinaison électrolytique peut être décrite de deux façons : la plage linéaire et la plage de fonctionnement. La plage de fonctionnement est la plage sur laquelle le capteur donnera une sortie monotone, mais qui n'a pas d'autres caractéristiques définies (elle est non linéaire). La plage linéaire est la partie de la plage de fonctionnement où la sortie est linéaire jusqu'à un certain pourcentage. La figure 1 montre la différence entre les deux plages.

 

 

 

 

 

 

 

 

Figure 1 Portée linéaire (à gauche) et portée opérationnelle (à droite).

Approximation linéaire

Pour trouver l'angle d'inclinaison dans la plage linéaire, il est nécessaire de trouver une fonction linéaire qui correspond à la sortie du capteur. Ce sera la fonction de la ligne du graphique de gauche de la figure 1. Cette fonction est donnée ci-dessous :

La sortie brute du capteur dans cette formule est la sortie du capteur. Elle est généralement exprimée en nombre, mais d'autres unités peuvent être utilisées en fonction de la façon dont la sortie du capteur est lue.

Les deux autres valeurs nécessiteront le prélèvement d'échantillons du capteur à certains angles. Ces angles peuvent être déterminés à l'aide d'un autre capteur, d'un rapporteur numérique ou de toute autre méthode de détermination des angles. La sortie brute du capteur à 0° n'est que la sortie lorsque le capteur est de niveau.

Le compte par degré (qui est la pente de la ligne) est calculé à l'aide de la formule suivante :

La gamme linéaire est obtenue à partir de la fiche technique du capteur. Les sorties brutes seront les sorties du capteur aux limites de la plage linéaire. Par exemple, pour un capteur avec une plage linéaire de ±25°, les sorties brutes seront échantillonnées à +25° et -25°. Notez que ces échantillons ne devront être prélevés qu'une seule fois pour créer la fonction ; la conversion de l'inclinaison peut alors être effectuée en utilisant les valeurs échantillonnées.

Supposons que nous ayons un capteur 0717-4319-99 avec une sortie de 16 bits (0 à 65535) que nous voudrions convertir en degrés. Il s'agit d'un capteur à deux axes avec une plage linéaire de ±20°. Comme il s'agit d'un capteur à deux axes, nous aurons besoin de deux formules : une pour l'axe X et une pour l'axe Y. Tout d'abord, nous trouverons la formule de l'axe X. Nous commençons par prendre des échantillons à 0° et ±20° et nous trouvons les mesures suivantes.

Inclinaison de l'axe X à -20° = 26055

Inclinaison de l'axe X à 0° = 33234

Inclinaison de l'axe X à ±20° = 40379

Nous pouvons maintenant utiliser ces échantillons pour calculer les comptes par degré :

Les comptes par degré et par échantillon zéro peuvent ensuite être introduits dans la formule pour donner la conversion ci-dessous :

Si une mesure de l'axe des Y est nécessaire, suivez à nouveau ces étapes avec des échantillons de l'axe des Y.

Maintenant, chaque fois que nous avons une mesure de ce capteur que nous voudrions convertir en degrés, nous pouvons utiliser cette nouvelle formule. Par exemple, si nous avons une sortie X de 29655, nous pouvons utiliser la formule pour déterminer l'angle d'inclinaison :

Comptages approximatifs par diplôme

En raison de légères variations dues au processus de fabrication, la fonction de conversion doit être calculée pour chaque capteur spécifique. Cependant, cela n'est pas toujours possible. Le tableau ci-dessous indique les valeurs moyennes par degré et les valeurs 0° qui peuvent être utilisées dans les calculs. Notez que l'utilisation de ces valeurs donnera lieu à des mesures moins précises que la création d'une fonction pour le capteur spécifique. Toutes les valeurs sont pour une sortie de 16 bits (0-65535). Pour les capteurs qui ne figurent pas dans le tableau, l'utilisateur devra suivre la procédure ci-dessus pour trouver une conversion.

Capteur Comptage par degré Zéro degré
0703-1602-99, 0729-1765-99 976 32768
0703-0711-99 17582 32768
0717-4303-99 736 32768
0717-4304-99 268 32768
0717-4305-99 188 32768
0717-4306-99 188 32768
0717-4311-99 268 32768
0717-4313-99 342 32768
0717-4314-99 335 32768
0717-4316-99 756 32768
0717-4317-99 569 32768
0717-4318-99, 0729-1751-99,
0729-1752-99, 0729-1753-99,
0729-1754-99, 0729-1755-99,
0729-1759-99, 0729-1760-99
284 32768
0717-4319-99 363 32768
0717-4321-99 758 32768
0717-4322-99 594 32768
0737-0101-99 2887 32768
0737-1203-99 12765 32768

Interpolation multipoint

La méthode d'interpolation multipoint utilise des échantillons prélevés à l'avance pour obtenir la mesure en degrés. La précision de cette méthode dépendra du nombre et de la distribution des échantillons ; cependant, même le fait de prendre 3 échantillons donne généralement un meilleur résultat qu'une approximation linéaire.

La distribution de l'échantillon est l'un des facteurs les plus importants pour obtenir une conversion précise. Des conversions proches des échantillons seront plus précises. De ce fait, des échantillons prélevés à proximité les uns des autres donneront lieu à des conversions plus précises. Ces échantillons doivent être prélevés sur toute la portée du capteur. Selon l'application, ils peuvent être répartis uniformément sur toute la gamme ou être concentrés dans une région où la précision est nécessaire.

Pour convertir une valeur brute en degrés, il faut identifier deux échantillons de référence. Ce sont les deux échantillons qui sont les plus proches de la mesure dans chaque direction. Ensuite, trouvez une approximation linéaire entre les deux échantillons et reportez la sortie brute sur cette approximation. Le point sur cette ligne donnera l'inclinaison du capteur en degrés. Le graphique de la figure 2 montre une visualisation de ce concept.

Figure 2 Graphique montrant les échantillons, les échantillons de référence et la mesure.

La formule de cette conversion est présentée ci-dessous.

Disons que nous avons une mesure brute de 56412 provenant d'un capteur d'inclinaison avec une plage de fonctionnement de ±60°. Supposons également que nous ayons déjà prélevé des échantillons à intervalles de 5° pour les utiliser pour la conversion. En comparant 56412 avec les échantillons, nous déterminons que nos deux points de référence seront à 50° (54213) et 55° (57878). Nous pouvons alors utiliser la formule pour calculer l'angle :

Par conséquent, notre mesure finale est de 53°.

Cette méthode peut être utilisée pour convertir en degrés les mesures prises n'importe où dans la plage de fonctionnement du capteur. Elle permet également d'obtenir une meilleure précision que l'approximation linéaire. Cependant, elle nécessite un grand nombre d'échantillons précis pour obtenir les meilleurs résultats.

Interpolation polynomiale

L'interpolation polynomiale peut être utilisée pour obtenir des mesures précises sans avoir à prélever de nombreux échantillons. Cette méthode utilisera des échantillons pour trouver une équation polynomiale qui fournira une conversion précise dans toute la gamme de fonctionnement du capteur.

Les échantillons prélevés serviront à élaborer une équation polynomiale qui décrira la sortie du capteur. Au minimum, vous aurez besoin de N-1 échantillons pour dériver un polynôme de degré N. Par exemple, 7 échantillons créeront un polynôme de degré 6. Vous pouvez également utiliser plus d'échantillons pour créer un polynôme de degré inférieur, mais cela aura généralement une précision moindre que de créer un polynôme de degré supérieur avec les mêmes points.

Un nombre illimité d'échantillons peut être utilisé, mais nous recommandons de prélever au moins 3 échantillons. L'utilisation de 2 échantillons fonctionnerait, mais donnerait une approximation linéaire. Notez qu'il y a peu d'amélioration de la précision par rapport aux polynômes de degré 7 ou plus.

Bien que le polynôme puisse être déterminé manuellement, il est beaucoup plus facile de le calculer à l'aide d'un logiciel. Une méthode simple consiste à utiliser la ligne de meilleur ajustement de Microsoft Excel ; toutefois, cette volonté peut ne pas être suffisamment précise pour une conversion utilisable. Wolfram Alpha est une option plus précise, mais l'équation devra toujours être résolue manuellement. La meilleure option est d'utiliser une bibliothèque de programmation. Par exemple, la méthode Polynomial.fit() de la bibliothèque Python NumPy peut être utilisée. Le code ci-dessous montre comment cela peut générer un polynôme d'ordre 6 à partir de 7 points :

import numpy.polynomial.polynomial
coefficients = numpy.polynomial.polynomial.polynomial.fit(
[56668, 46553, 36140, 32845, 31207, 21913, 9586], # valeurs brutes
[60, 42, 12, 0, -6, -36, -60], # valeurs d'angle correspondant aux valeurs brutes
6) # ordre du polynôme
imprimer(coefficients)
# Sortie :
# [-7.88427627e+01 2.57631617e-03 -7.71958174e-08 -1.75354175e-13
# 2.17551410e-16 -5.89635260e-21 4.45379575e-26]

Notez que lorsque vous utilisez une fonction de ce type, il est important de bien préciser l'ordre. Par exemple, 4 échantillons généreront un polynôme d'ordre 3. Cependant, si 4 est donné comme ordre, la bibliothèque fera une supposition aléatoire pour créer une équation. Cela se traduira par des conversions moins précises.

Les tableaux renvoyés par Polynomial.fit() sont les coefficients du polynôme. Sur la base du résultat ci-dessus, l'équation serait :

Angle = (4,45e-26)x6- (5,89e-21)x5+ (2,17e-16)x4- (1,75e-13)x3- (7,72e-8)x2+ (2,57e-3)x1- 78,84

Cette fonction peut ensuite être utilisée pour résoudre des angles inconnus en introduisant la valeur brute de x. Par exemple, disons que nous avons la fonction ci-dessus, et que nous avons une mesure brute de 41643. Nous pouvons trouver l'angle en utilisant les calculs suivants :

Angle = (4,45e-26)(41643)6 - (5,89e-21)(41643)5 + (2,17e-16)(41643)4 - (1,75e-13)(41643)3 - (7,72e-8)(41643)2 + (2,57e-3)(41643)1 - 78,84

Angle = 232,264 - 738,402 + 654,227 - 12,663 - 133,868 + 107,285 - 78,842 = 30,002

Si vous utilisez la bibliothèque NumPy présentée ci-dessus, cela peut être fait en utilisant la méthode polyval().

print(numpy.polynomial.polynomial.polyval(41643, coefficients.convert(.coef))
# Output: 30.001695321007

Notez que le résultat de ce calcul est très sensible à toute modification de la saisie. Par exemple, si les coefficients ci-dessus sont arrondis à 3 chiffres significatifs (comme écrit), le résultat de l'équation est de 31°. Pour cette raison, il est important de ne pas arrondir les valeurs lors du calcul de l'angle avec cette méthode.