Ceci est une ancienne révision du document !
Capteurs - Angle
[Mise à jour le 30/6/2022]
1. Généralités
En géométrie, la notion générale d'angle se décline en plusieurs concepts.
Dans son sens ancien, l'angle est une figure plane, portion de plan délimitée par deux demi-droites. C'est ainsi que l'on parle des angles d'un polygone. Cependant, l'usage est maintenant d'employer le terme « secteur angulaire » pour une telle figure. L'angle peut désigner également une portion de l'espace délimitée par deux plans (angle dièdre). La mesure de tels angles porte couramment, mais abusivement le nom d'angle, elle aussi. Wikipédia
Un capteur angulaire est un capteur servant à recueillir une image de l'angle mesuré. L'information angulaire peut être sous forme numérique ou analogique. Composant électronique
- Ressource
2. Capteurs analogiques
2.1 Potentiomètre
- Source : wiki DFRobot
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 3,3 à 5 Vcc
- Rotation: 300°
- Dimensions: 28 x 22 x 23 mm
- Modèle
- U' = x * U si (Rc » R)
- Aide pour la simulation de la chaîne de mesure
- Programmation d'une carte Arduino Uno R3
- Connexion à un shield Tinkerkit v2
- Un premier exemple pour tester le capteur
- pot.cpp
/* Titre : Montage potentiométrique Date : 18/6/2021 Objectif : afficher la position angulaire d'un potentiomètre Matériels : capteur rotatif Gravity DFRobot, carte Arduino Uno, etc. PlatformIO - Répertoire : potentiometre - Fichier : main.cpp */ void setup() { Serial.begin(9600); // Débit binaire : 9600 bps } void loop() { uint16_t N; double angle; // Lecture N=analogRead(A0);//LM35 connecté à Analog 0 // Traitement // Sensibilité du capteur S = 5/300 angle = (double) N * (3/(10.24)); // Ecriture Serial.print("Angle:"); // Affiche l'angle sur le moniteur Serial.print(angle); Serial.println("°"); delay(1000); }
2.2 Flex sensor
3. Capteurs numériques (Gyroscope)
3.1 CMPS12
- Source : Robot Electronics
Le module délivre les informations suivantes :
- La direction par rapport au nord :
- sur 8 bits : 0 à 255
- sur 16bits : 0 à 3599 (représente 0 à 359,9°)
- Pitch : +/- 0 à 90° ou +/- 0 à 180°
- Roll : +/- 0 à 90°
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 3,3 ou 5 Vcc
- Consommation: 18 mA
- Résolution: 0,1°
- Précision: 1 %
- Interface
- I²C (jusqu'à 400 kHz)
- série (9600, 19200 et 38400 bps)
- Dimensions: 25 x 18 x 3 mm
- Documentation : pdf à télécharger
- Programmation d'une carte Arduino Uno R3
- Bibliothèques à installer dans l'IDE : aucune
- Connexion à un shield Tinkerkit v2 monté sur une Arduino Uno.
- Un premier exemple pour tester le capteur
- *.cpp
/***************************************** * CMPS12 I2C example for Arduino * * By James Henderson, 2014 * *****************************************/ #include <Wire.h> #define CMPS12_ADDRESS 0x60 // Addresse du CMPS12 sur 7 bits #define ANGLE_8 1 // Registre contenant la valeur de l'angle sur 8bits // Sert de référence pour la lecture dans la table unsigned char high_byte, low_byte, angle8; char pitch, roll; unsigned int angle16; void setup() { Serial.begin(9600); // Port série Wire.begin(); } void loop() { Wire.beginTransmission(CMPS12_ADDRESS); // Démarrage de la communication avec le CMPS12 Wire.write(ANGLE_8); // Envoi du numéro du premier registre de la // table à partir duquel on souhaite lire Wire.endTransmission(); // On demande la lecture de 5 octet à partir du registre 0x01 // afin d'obtenir l'angle sur 8bits, // l'angle sur 16 bits, le pitch et le roll Wire.requestFrom(CMPS12_ADDRESS, 5); while(Wire.available() < 5); // On attend la fin de la transmission des 5 octets angle8 = Wire.read(); // Lecture des octets high_byte = Wire.read(); low_byte = Wire.read(); pitch = Wire.read(); roll = Wire.read(); angle16 = high_byte; // Calcul de l'angle sur 16bits angle16 <<= 8; angle16 += low_byte; Serial.print("roll: "); // Affichage de roll Serial.print(roll, DEC); Serial.print(" pitch: "); // Affichage de pitch Serial.print(pitch, DEC); Serial.print(" angle full: "); // Affichage de l'angle codé sur 16 bits avec décimale Serial.print(angle16 / 10, DEC); Serial.print("."); Serial.print(angle16 % 10, DEC); Serial.print(" angle 8: "); // Affichage de l'angle codé sur 8 bits Serial.println(angle8, DEC); delay(1000); // Attente entre deux mesures }
3.2 Module L3GD20H
- Source : Wiki
Ce module gyroscope 3 axes de Pololu est basé sur le circuit L3GD20H et communique avec un microcontrôleur via un port I2C.
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 2,5 à 5,5 Vcc
- Consommation: environ 6 mA
- Interface: I2C
- Sortie I2C: lecture sur 16 bits par axe x, y, z
- Plages de mesure: ±245, ±500 ou ±2000°/s
- Dimensions: 23 x 13 x 11 mm
- Documentation
- Fichier Acrobat Reader à télécharger ici
- Programmation d'une carte Arduino Uno R3
- Bibliothèque à installer dans l'IDE
- Connexion à un shield Tinkerkit v2.
- Un premier exemple
Arduino Examples → Examples from Custom Libraries → L3G → Serial.ino
Exemple de résultat attendu
- Programmation d'une carte FEZ Duino sous TinyCLR OS avec l'IDE Visual Studio Community
A venir
tester
3.3 Module BNO055
- Source : Wiki
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 3,3 et 5 Vcc
- Interface (sélectionnable via pontet à souder):
- UART, 115200 bps par défaut
- I2C , adresse 0x28 par défaut ou RS232
- Plage de mesure:
- gyroscope: ±125 °/s ou ±2000 °/s
- accéléromètre: ±2, ±4, ±6, ±8 ou 16 g
- boussole: ±1300 µT (axes x-,y-), ±2500 µT ( axe z-)
- Dimensions: 20 x 20 x 3 mm
- Documentation
- Programmation d'une carte Arduino Uno R3
- Bibliothèques à installer dans l'IDE (I2C)
- Connexion à un shield Tinkerkit v2.
- Un premier exemple pour tester le capteur(I2C)
- Fichier → Exemples → Adafruit_BNO055 → sensorapi.ino
Exemple de résultat attendu