Table des matières:

ADXL345 en utilisant Arduino Uno R3 : 5 étapes
ADXL345 en utilisant Arduino Uno R3 : 5 étapes

Vidéo: ADXL345 en utilisant Arduino Uno R3 : 5 étapes

Vidéo: ADXL345 en utilisant Arduino Uno R3 : 5 étapes
Vidéo: Home Automation Using Accelecrometer 2024, Juillet
Anonim
ADXL345 en utilisant Arduino Uno R3
ADXL345 en utilisant Arduino Uno R3

Dans cette leçon, nous allons apprendre à utiliser le capteur d'accélération ADXL345.

Étape 1: Composants

-Carte Arduino Uno * 1

- Câble USB * 1

-ADXL345 * 1

- Planche à pain * 1

- Cavaliers

Étape 2: Principe

Un accéléromètre est utilisé pour mesurer la force générée lors de l'accélération. La plus fondamentale est l'accélération de la gravité communément connue qui est de 1g.

En mesurant l'accélération causée par la gravité, vous pouvez calculer l'angle d'inclinaison de l'appareil par rapport à la surface plane. En analysant l'accélération dynamique, vous pouvez déterminer la façon dont l'appareil se déplace. Par exemple, une planche à équilibrage automatique ou un hoverboard applique le capteur d'accélération et le gyroscope pour le filtre de Kalman et la correction de la posture.

ADXL345

L'ADXL345 est un petit accéléromètre mince, à faible consommation d'énergie, à 3 axes avec une mesure haute résolution (13 bits) jusqu'à ±16 g. Les données de sortie numériques sont formatées en complément à deux de 16 bits et sont accessibles via une interface numérique SPI (3 ou 4 fils) ou I2C. Dans cette expérience, l'interface numérique I2C est utilisée.

Il est bien adapté pour mesurer l'accélération statique de la gravité dans les applications de détection d'inclinaison, ainsi que l'accélération dynamique résultant d'un mouvement ou d'un choc. Sa haute résolution (4 mg/LSB) permet la mesure du changement d'inclinaison de moins de 1,0°. Et l'excellente sensibilité (3,9 mg/LSB @2g) fournit une sortie de haute précision jusqu'à ±16g.

Comment fonctionne ADXL345

L'ADXL345 détecte l'accélération avec le composant de détection à l'avant, puis le composant de détection de signal électrique la transforme en signal électrique, qui est analogique. Ensuite, l'adaptateur AD intégré au module convertira le signal analogique en signal numérique.

X_OUT, Y_OUT et Z_OUT sont respectivement les valeurs des axes X, Y et Z. Placez le module face visible: Z_OUT peut atteindre +1g au maximum, le minimum de X_OUT est de -1g vers la direction Ax, et le minimum de Y_OUT est de -1g vers la direction Ay. D'autre part, retournez le module: le minimum de Z_OUT est de -1g, le maximum de X_OUT est de +1g vers la direction Ax, et le maximum de Y_OUT est de +1g vers la direction Ay., comme indiqué ci-dessous. Faites pivoter le module ADXL345 et vous verrez le changement de trois valeurs.

lorsque le canal A passe du niveau haut au niveau bas, si le canal B est au niveau haut, cela indique que l'encodeur rotatif tourne dans le sens des aiguilles d'une montre (CW); si à ce moment le canal B est de niveau bas, cela signifie qu'il tourne dans le sens antihoraire (CCW). Ainsi, si nous lisons la valeur du canal B lorsque le canal A est de niveau bas, nous pouvons savoir dans quel sens tourne l'encodeur rotatif.

Principe: Voir le schéma de principe du module encodeur rotatif ci-dessous. De là, nous pouvons voir que la broche 3 de l'encodeur rotatif, à savoir CLK sur le module, est le canal B. La broche 5, qui est DT, est le canal A. Pour connaître le sens de rotation de l'enregistreur, il suffit de lire la valeur de CLK et DT.

Il y a une puce de régulateur de tension de 3,3 V dans le circuit, vous pouvez donc alimenter le module avec 5 V ou 3,3 V.

Puisque SDO a été connecté à GND, l'adresse I2C de l'ADXL345 est 0x53, 0xA6 pour l'écriture, 0xA7 pour la lecture

Fonction de broche du module ADXL345.

Étape 3: Procédures

Étape 1. Construisez le circuit.

Étape 2:

Téléchargez le code sur

Étape 3:

Téléchargez le croquis sur la carte Arduino Uno

Cliquez sur l'icône Télécharger pour télécharger le code sur le tableau de commande.

Si « Téléchargement terminé » apparaît en bas de la fenêtre, cela signifie que le croquis a été téléchargé avec succès.

Après le téléchargement, ouvrez Serial Monitor, où vous pouvez voir les données détectées. Lorsque l'accélération du module change, le chiffre change en conséquence sur la fenêtre.

Étape 4: Coder

Code
Code

//ADXL335

/********************************

ADXL335

remarque:vcc5v, mais ADXL335 Vs est de 3,3 V

Le circuit:

5V: VCC

analogique 0: axe x

analogique 1: axe y

analogique 2: axe z

Après avoir brûlé le

programme, ouvrez la fenêtre de débogage du moniteur série, où vous pouvez voir les données détectées s'afficher. Lorsque l'accélération varie, le chiffre varie en conséquence.

*********************************

/E-mail:

//Site Web: www.primerobotics.in

const int xpin =

A0; // axe x de l'accéléromètre

const int ypin =

A1; // axe des y

const int zpin =

A2; // axe z (uniquement sur les modèles 3 axes)

void setup()

{

// initialise les communications série:

Serial.begin(9600);

}

boucle vide()

{

int x = analogRead(xpin); // lire à partir de xpin

retard(1); //

int y = analogRead(ypin); //lire depuis ypin

retard(1);

int z = analogRead(zpin); // lire à partir de zpin

float zero_G = 338,0; //Alimentation ADXL335

par Vs 3.3V:3.3V/5V*1024=676/2=338

//Série.print(x);

//Série.print("\t");

//Série.print(y);

//Série.print("\t");

//Série.print(z);

//Série.print("\n");

flotter

zero_Gx=331,5;//la sortie zero_G de l'axe x:(x_max + x_min)/2

flotter

zero_Gy=329.5;//la sortie zero_G de l'axe y:(y_max + y_min)/2

float zero_Gz=340.0;//le

zero_G sortie de l'axe z:(z_max + z_min)/2

échelle flottante =

67,6; // alimentation par Vs 3,3 V: 3,3 v /5v *1024/3,3v *330mv/g =67,6g

float scale_x =

65;//l'échelle de l'axe x: x_max/3.3v*330mv/g

float scale_y =

68,5; // l'échelle de l'axe des y: y_max/3,3 v*330 mv/g

échelle flottante_z =

68; // l'échelle de l'axe z: z_max/3.3v*330mv/g

Serial.print(((float)x

- zero_Gx)/scale_x); // affiche la valeur x sur le moniteur série

Serial.print("\t");

Serial.print(((float)y

- zero_Gy)/scale_y); // affiche la valeur y sur le moniteur série

Serial.print("\t");

Serial.print(((float)z

- zero_Gz)/scale_z); // affiche la valeur z sur le moniteur série

Serial.print("\n");

retard(1000); // attendre 1 seconde

}

Étape 5: Analyse du code

Le code de l'expérience ADXL345 comprend 3 parties: initialiser chaque port et appareil, acquérir et stocker les données envoyées par les capteurs et convertir les données.

Conseillé: