Skip to main content

Maïdenn, Gregoire & Soulaimane

Détecteur d'accélération

 

Soulaimane, Gregoire, Maïdenn. 

 

Projet effectuer dans le cadre du cours de prototypage, dans le but d’apprendre les fonctions de base de l’Arduino.

 

Description du projet :

 

À l’aide d’un Arduino nous avons codé et brancher un accéléromètre capable de détecter l' accélération supérieur à 5g dans un des 3 axes (x,y,z). Lorsque l’accéléromètre subit une accélération suffisante, le montage permet à une led de s’allumer et donc d’indiquer que l’accélération à atteint au moins 5g.

 

Matériel :

 

1 Arduino

1 Shield Arduino

1 Led

1 Résistance

2 Fils conducteurs

1 planche conductrice

1 Accéléromètre et son câble de connexion

 

Problème rencontré :

Nous somme parti du code démo disponible dans la bibliothèque de l'Arduino. Le code utilise par défaut le capteur 0x18 (LIS.begin(WIRE); //IIC init dafault :0x18), il faut donc prendre soin de séléctionner la ligne, LIS.setFullScaleRange(LIS3DHTR_RANGE_16G)

Code :

 

// This example shows the 3 axis acceleration.
#include "LIS3DHTR.h"
#include <Wire.h>
LIS3DHTR<TwoWire> LIS; //IIC
#define WIRE Wire
#define LED 9

void setup() {
    Serial.begin(115200);
    while (!Serial) {};
    //LIS.begin(WIRE); //IIC init dafault :0x18
    LIS.begin(WIRE, 0x19); //IIC init
    delay(100);
    //  LIS.setFullScaleRange(LIS3DHTR_RANGE_2G);
    //  LIS.setFullScaleRange(LIS3DHTR_RANGE_4G);
    //  LIS.setFullScaleRange(LIS3DHTR_RANGE_8G);
     LIS.setFullScaleRange(LIS3DHTR_RANGE_16G);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_1HZ);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_10HZ);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_25HZ);
    LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_100HZ);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_200HZ);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_1_6KHZ);
    //  LIS.setOutputDataRate(LIS3DHTR_DATARATE_5KHZ);
    LIS.setHighSolution(true); //High solution enable
}
void loop() {
    if (!LIS) {
        Serial.println("LIS3DHTR didn't connect.");
        while (1);
        return;
    }
    //3 axis
    Serial.print("x:"); Serial.print(LIS.getAccelerationX()); Serial.print("  ");
    Serial.print("y:"); Serial.print(LIS.getAccelerationY()); Serial.print("  ");
    Serial.print("z:"); Serial.println(LIS.getAccelerationZ());

    if (float(LIS.getAccelerationX()) >= 1.00)
  {
    digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(100);                // wait for a second
    digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
    delay(100);                // wait for a second
  }
  else if (float(LIS.getAccelerationY()) >= 1.00)
  {
    digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(100);                // wait for a second
    digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
    delay(100);                // wait for a second
  }
  else if (float(LIS.getAccelerationZ()) >= 1.00)
  {
    digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(100);                // wait for a second
    digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
    delay(100);                // wait for a second

  }

    delay(500);
}

 

Montage :



 

Explication du montage :

 

L’Arduino est équipé de son shield et est branché à un ordinateur. L'accéléromètre est connecté à une prise analogique de l’Arduino en I2C. La Led est connectée au port 9 et à la masse. Lorsque que le capteur reçoit un signal supérieur à 5g dans un axe, alors la Led s’allume via le signal envoyé par l’Arduino.