Table des matières

SommaireMateriels

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


2. Capteurs analogiques

2.1 Potentiomètre

Module capteur rotatif Gravity DFRobot délivrant une valeur analogique en fonction de la position du potentiomètre. Il est livré avec un cordon 3 contacts pour le raccordement.

Rapporteur cercle entier

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);
}

Télécharger le projet PlatformIO pour VSCode.

2.2 Flex sensor


3. Capteurs numériques (Gyroscope)

3.1 CMPS12

Module CMPS12 de 4ème génération basé sur un circuit Bosch BNO055 intégrant une boussole 3 axes, un gyroscope 3 axes et un accéléromètre 3 axes. La direction par rapport au nord est représentée par un nombre unique, soit en I²C ou par port série.


Le module délivre les informations suivantes :

*.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
}

Télécharger le projet PlatformIO pour VSCode.

3.2 Module L3GD20H

Ce module gyroscope 3 axes de Pololu est basé sur le circuit L3GD20H et communique avec un microcontrôleur via un port I2C.

Arduino Examples → Examples from Custom Libraries → L3G → Serial.ino

Exemple de résultat attendu

A venir


tester

3.3 Module BNO055

Module Robot Electronics (Devantech)

Ce module est basé sur un BNO055 9 axes de Bosch comportant un accéléromètre, une boussole et un gyroscope. Ce capteur communique avec un microcontrôleur via une liaison série UART ou I2C.

Exemple de résultat attendu