Cette fois, nous traiterons de la connexion de l'accéléromètre triaxial analogique ADXL335 à l'Arduino.
Nécessaire
- -Arduino;
- - accéléromètre ADXL335;
- - un ordinateur personnel avec l'environnement de développement Arduino IDE.
Instructions
Étape 1
Des accéléromètres sont utilisés pour déterminer le vecteur d'accélération. L'accéléromètre ADXL335 a trois axes, et grâce à cela, il peut déterminer le vecteur d'accélération dans l'espace tridimensionnel. Du fait que la force de gravité est également un vecteur, l'accéléromètre peut déterminer sa propre orientation dans l'espace tridimensionnel par rapport au centre de la Terre.
L'illustration montre des images du passeport (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) pour l'accéléromètre ADXL335. Sont présentés ici les axes de coordonnées de la sensibilité de l'accéléromètre par rapport au placement géométrique du corps de l'appareil dans l'espace, ainsi qu'un tableau des valeurs de tension de 3 canaux de l'accéléromètre en fonction de son orientation dans l'espace. Les données du tableau sont données pour un capteur au repos.
Regardons de plus près ce que nous montre l'accéléromètre. Laissez le capteur reposer horizontalement, par exemple, sur une table. Alors la projection du vecteur accélération sera égale à 1g le long de l'axe Z, soit Zout = 1g. Les deux autres axes auront des zéros: Xout = 0 et Yout = 0. Lorsque le capteur est tourné « sur le dos », il sera orienté dans le sens inverse par rapport au vecteur de gravité, c'est-à-dire. Zout = -1g. De même, les mesures sont prises sur les trois axes. Il est clair que l'accéléromètre peut être positionné à volonté dans l'espace, nous prendrons donc des lectures différentes de zéro sur les trois canaux.
Si la sonde est fortement secouée le long de l'axe vertical Z, la valeur Zout sera supérieure à "1g". L'accélération maximale mesurable est de "3g" dans chacun des axes dans n'importe quelle direction (c'est-à-dire avec "plus" et "moins").
Étape 2
Je pense que nous avons compris le principe de fonctionnement de l'accéléromètre. Regardons maintenant le schéma de connexion.
La puce d'accéléromètre analogique ADXL335 est plutôt petite et logée dans un boîtier BGA, et il est difficile de la monter sur une carte à la maison. Par conséquent, j'utiliserai un module GY-61 prêt à l'emploi avec un accéléromètre ADXL335. De tels modules dans les magasins en ligne chinois coûtent presque un centime.
Pour alimenter l'accéléromètre, il est nécessaire de fournir une tension de +3, 3 V à la broche VCC du module. Les canaux de mesure du capteur sont connectés aux broches analogiques de l'Arduino, par exemple, "A0", "A1" et " A2". C'est tout le circuit:)
Étape 3
Chargeons ce croquis dans la mémoire Arduino. Nous allons lire les lectures des entrées analogiques sur trois canaux, les convertir en tension et les sortir sur le port série.
L'Arduino dispose d'un CAN 10 bits et la tension de broche maximale autorisée est de 5 volts. Les tensions mesurées sont codées avec des bits qui ne peuvent prendre que 2 valeurs - 0 ou 1. Cela signifie que toute la plage de mesure sera divisée par (1 + 1) à la puissance 10, c'est à dire. sur 1024 segments égaux.
Afin de convertir les lectures en volts, vous devez diviser chaque valeur mesurée à l'entrée analogique par 1024 (segments), puis multiplier par 5 (volts).
Voyons ce qui vient vraiment de l'accéléromètre en utilisant l'axe Z comme exemple (la dernière colonne). Lorsque le capteur est positionné horizontalement et regarde vers le haut, les chiffres viennent (2,03 +/- 0,01). Cela devrait donc correspondre à l'accélération "+1g" le long de l'axe Z et à un angle de 0 degré. Retournez le capteur. Les chiffres arrivent (1, 69 +/- 0, 01), qui doivent correspondre à "-1g" et à un angle de 180 degrés.
Étape 4
Prenons les valeurs de l'accéléromètre à des angles de 90 et 270 degrés et introduisons-les dans le tableau. Le tableau indique les angles de rotation de l'accéléromètre (colonne "A") et les valeurs de Zout correspondantes en volts (colonne "B").
Pour plus de clarté, un tracé des tensions à la sortie Zout en fonction de l'angle de rotation est affiché. Le champ bleu est la plage au repos (à 1g d'accélération). La case rose sur le graphique est une marge afin que nous puissions mesurer des accélérations jusqu'à + 3g et jusqu'à -3g.
À 90 degrés de rotation, l'axe Z a une accélération nulle. Ceux. une valeur de 1,67 volts est un zéro conditionnel Zo pour l'axe Z. Ensuite, vous pouvez trouver l'accélération comme ceci:
g = Zout - Zo / sensibilité_z, ici Zout est la valeur mesurée en millivolts, Zo est la valeur à l'accélération nulle en millivolts, sensibilité_z est la sensibilité du capteur le long de l'axe Z. calibrez l'accéléromètre et calculez la valeur de sensibilité spécifiquement pour votre capteur en utilisant la formule:
sensibilité_z = [Z (0 degrés) - Z (90 degrés)] * 1000. Dans ce cas, la sensibilité de l'accéléromètre le long de l'axe Z = (2, 03 - 1, 68) * 1000 = 350 mV. De même, la sensibilité devra être calculée pour les axes X et Y.
La colonne "C" du tableau montre l'accélération calculée pour cinq angles à une sensibilité de 350. Comme vous pouvez le voir, ils coïncident pratiquement avec ceux montrés sur la figure 1.
Étape 5
En se souvenant du cours de géométrie de base, on obtient la formule de calcul des angles de rotation de l'accéléromètre:
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Les valeurs sont en radians. Pour les convertir en degrés, divisez par Pi et multipliez par 180.
En conséquence, un croquis complet calculant les angles d'accélération et de rotation de l'accéléromètre le long de tous les axes est présenté dans l'illustration. Les commentaires fournissent des explications sur le code du programme.
Lors de la sortie vers le port "Serial.print ()", le caractère "\ t" désigne un caractère de tabulation afin que les colonnes soient paires et que les valeurs soient situées l'une sous l'autre. "+" signifie concaténation (concaténation) de chaînes. De plus, l'opérateur "String ()" indique explicitement au compilateur que la valeur numérique doit être convertie en une chaîne. L'opérateur round () arrondit le coin au degré le plus proche.
Étape 6
Nous avons donc appris à prendre et à traiter les données de l'accéléromètre analogique ADXL335 à l'aide de l'Arduino. Nous pouvons maintenant utiliser l'accéléromètre dans nos conceptions.