Académique Documents
Professionnel Documents
Culture Documents
avec Arduino
Pascal MASSON
(pascal.masson@unice.fr)
Version projection
Edition 2018-2019-V12
Accéléromètre
Introduction
1. MEMS
2. Principe de fonctionnement
3. Mesure d’un angle avec 1 axe
4. Mesure d’un angle avec 2 axes
5. Tangage, roulis et lacet
6. Déplacement rectiligne
7. Accéléromètre GY-61
8. Accéléromètre GY-521
Disque dur
Séisme
1.2. Origine
▪ Les MEMS ont été développés au début des années 1970 en tant que dérivés
de la micro-électronique
▪ La première commercialisation remonte aux années 1980 avec des capteurs
de pression sur silicium
Wafer
Masse
1g
Condensateur
dont la valeur dépend de la distance entre les
armatures
0
X
1g
X
1g
1g
1g
1
0.5 AX
X
AxX (g)
-0.5 1g
-1
-90 -60 -30 0 30 60 90
(°)
1
0.5 AX
X
AxX (g)
-0.5 1g
-1
-90 -60 -30 0 30 60 90
(°)
90°
AX
X
180° 0°
1g
270°
90°
AX
X
180° 0°
1g
270°
0
X
1g
90°
1
Q2 Q1
sin cos
0.5 AX > 0 AX > 0
Q1 Q2 Q3 Q4
AxX,,AyY (g)
0 AY < 0 AY > 0
180° 0°
-0.5 AX < 0 AX < 0
AY < 0 AY > 0
-1
0 100 200 300
Q3 Q4
(°)
270°
-20
-40 AX < 0 AX < 0
-60
-80 AY < 0 AY > 0
-100
0 100 200 300 Q3 Q4
(°) 270°
AX
90° 180° 270° ➢ Q1 : θ = tan−1
100 AY
80
60 AX
arc_tan (°)
40 ➢ Q2 : θ = tan−1 + 180
Q1 Q2 Q4 AY
20 Q3
0
-20 AX
-40
➢ Q3 : θ = tan−1 + 180
-60
AY
-80
AX
-100
0 100 200 300
➢ Q4 : θ = tan−1 + 360
AY
(°)
lacet
tangage
roulis
lacet
tangage
roulis
1 g
Z’ Z
1 g
X’
X
▪ L’angle entre l’axe Y’ et le plan XY initial, est appelé angle de roulis ()
Z’ Z
Y’
Z’’
1 g
X’
X
Z
Z’
Y’
Z’’
1 g
X’
X
AX
= arctan
AY 2 + AZ 2 Z
Z’
Y’
AY
φ = arctan Z’’
2
AX + AZ 2 1 g
AX 2 + A𝑌 2 Y
ρ = arctan
AZ X’
X
▪ A tn=1 = tn :
✓ L’accélération du mobile est an=1
#include <Wire.h>
▪ Cela rend inutilisables les I/O A4 et A5 pour lire des valeurs analogiques
▪ L’adresse I2C du MPU-6050 est 0x68 (à changer s’il y a plusieurs
accéléromètres dans le projet) et on déclare une constante en conséquence :
const int MPU_addr = 0x68;
2 g = B00000000
4 g = B00001000
8 g = B00010000
16 g = B00011000
Acc_X=(Wire.read()<<8|Wire.read())/16384;
Acc_Y=(Wire.read()<<8|Wire.read())/16384;
Acc_Z=(Wire.read()<<8|Wire.read())/16384;