Skip to main content

Journal de bord

19/01/24 : Choix et explication sommaire du projet (Essayer de faire un sismomètre à partir de 3 capteurs de vibrations)

Etude du fonctionnement général et des caractéristiques et composantes des sismomètres : 

  • Appareil capable de détecter de très petits mouvements du sol et de les enregistrer (analogiquement ou numériquement) en suivant une base de temps très précise (séisme = vibrations provoquées par la cassure de la croûte terrestre)
  • Comporte un capteur mécanique, un transducteur, un amplificateur et un enregistreur
  • Sismomètres utilisés actuellement : électromagnétiques (mécanisme de pendule avec un aimant se déplaçant dans une bobine de cuivre), chaque capteur est unidirectionnel, il en faut 3 (vertical, Est-Ouest, Nord-Sud)
  •  Le mouvement du sol zsol est lié au mouvement de la masse z par l’équation suivante, avec α la constante d’amortissement du système, ω0 la pulsation propre de l’oscillateur et M l’amplification :

image.png

26/01/24 : Rencontre avec le responsable du projet et explication des attentes/cahier des charges, des résultats déjà obtenus et des consignes de réalisation

Début du travail avec le capteur sur une carte Arduino UNO R3. Alimentation du capteur : 

IMG-20240126-WA0016[2102].jpg

Draft de code : 

int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
sensorValue = analogRead(sensorPin);
print(sensorValue);
if (sensorValue >700){
digitalWrite(ledPin, HIGH);
}

else{
digitalWrite(ledPin, LOW);
}
}

02/02/24 : Travail sur le montage Arduino et le programme associé (pour l'instant pas de résultats satisfaisants)

Code dans la carte Arduino :

int sensorPin=A0;
int ledPin=13;
int sensorValue=0;

const int etatOn = 500;
const int etatOff = 500;

void setup(){
  pinMode(ledPin,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  sensorValue=analogRead(sensorPin);
  Serial.print(A0);
  if (sensorValue>700){
    digitalWrite(ledPin,HIGH);
  }

  else{
    digitalWrite(ledPin,LOW);
  }
}


09/02/24 : Travail sur le montage Arduino et le programme associé (étude de la plage de réponse du capteur). 

On a testé le capteur dans un environnement silencieux en essayant de réduire au maximum les vibrations (dans une boîte en polystyrène), mais les réponses du capteur ne changent pas. Il semblerait que le capteur sature, ou plus probablement que le programme utilisé n'est pas adapté à ce capteur. Des recherches sur Internet ne donnent rien quant à d'autres projets utilisant ce capteur menés à terme par d'autres personnes.

01/03/24 : Travail sur le montage Arduino et le programme associé

Code utilisé : 

const int PIEZO_PIN = A0; // Sortie du piezo
int previousPiezoADC = 0; // Stocker la valeur précédente

void setup() {
  Serial.begin(9600);

}

void loop() {
  // Lecture de la valeur ADC actuelle du piezo
  int piezoADC = analogRead(PIEZO_PIN);

  // Calculer la différence entre la valeur actuelle et la précédente
  int diff = piezoADC - previousPiezoADC;

  // Mettre à jour la valeur précédente pour la prochaine itération
  previousPiezoADC = piezoADC;

  // Affichage de la différence
  Serial.println(diff);

  // Attente avant la prochaine lecture
  delay(5);

}
Les résultats obtenus varient selon la valeur de la résistance utilisée. Il faut donc calibrer le montage, c'est-à-dire choisir la valeur de résistance permettant de ne pas capter les vibrations parasites de l'air mais de capter celles des "séismes". Il faut ensuite convertir les valeurs de différentiel de tension obtenu en m.s^-2, ceci au moyen de l'application Phyphox, développée par l'Université Aachen d'Aix-en-Provence, qui peut servir d'accéléromètre grâce aux capteurs des smartphones.
Il semble que la résistance la plus adaptée est celle de 100 kohm. Il faudra vérifier cela à nouveau lorsque le montage sera fini et que les conversions seront faites, mais la valeur sera probablement entre 10 kohm et 1 Mohm.
Montage :
montage.jpg
08/03/24 : Nous avons réalisé un plan pour le support du sismomètre, le résultat final est un cube avec 2 faces ouvertes, composé de 4 faces en plexiglas supportant les différents éléments du montage et reliés par des coins vissés :
Plan.jpg
15/03/25 : Nous avons modélisé les différentes pièces du sismomètre sur OpenScad et lancé la fabrication des pièces (mais le site FabLab ayant été fermé, nous n'avons pas pu faire toutes les pièces).
15.03.png
22/03/24 : Nous avons pu imprimer les pièces et avons commencé à prévoir le montage du sismomètre en commandant un troisième capteur. Nous avons aussi modifié le code du capteur afin d'améliorer le graphique obtenu.

2203.jpg

const int PIEZO_PIN = A0; // Sortie du piezo
float previousPiezoADC = 0; // Stocker la valeur précédente

void setup() {
  Serial.begin(9600);

}

void loop() {
  // Lecture de la valeur ADC actuelle du piezo
  float piezoADC = analogRead(PIEZO_PIN);

  // Calculer la différence entre la valeur actuelle et la précédente
  float diff = piezoADC - previousPiezoADC;

  // Mettre à jour la valeur précédente pour la prochaine itération
  previousPiezoADC = piezoADC;

  // Affichage de la différence
  Serial.println(diff);

  Serial.print(-50); // To freeze the lower limit
  Serial.print(" ");
  Serial.print(50); // To freeze the upper limit
  Serial.print(" ");

  // Attente avant la prochaine lecture
  delay(5);

}

29/03/24 : Nous avons assemblé les faces du sismomètre, mais avons rencontré un problème dans l'assemblage des faces, les trous pour les vis dans les cubes utilisés pour l'assemblage étaient trop petits. Nous avons donc réimaginé les pièces et le mode d'assemblage. 

2903 (2).jpg2903.jpg

2903 (3).jpg

 

05/04/24 : Nous avons assemblé sommairement les parties du sismomètre. Certaines mesures sont fausses, et l'assemblage est un peu compliqué, nous allons donc modifier une dernière fois les pièces du sismomètre. Nous avons aussi créé le code pour le sismomètre avec ses trois capteurs, mais avons eu du mal à le lancer.

05041.jpg0504 (2)1.jpg

const int PIEZO1_PIN = A0; // Sortie du piezo 1
const int PIEZO2_PIN = A1; // Sortie du piezo 2
const int PIEZO3_PIN = A2; // Sortie du piezo 3
float previousPiezo1ADC = 0; // Stocker la valeur précédente
float previousPiezo2ADC = 0; // Stocker la valeur précédente
float previousPiezo3ADC = 0; // Stocker la valeur précédente

void setup() {
  Serial.begin(9600);

}

void loop() {
  // Lecture de la valeur ADC actuelle du piezo
  float piezo1ADC = analogRead(PIEZO1_PIN);
  float piezo2ADC = analogRead(PIEZO2_PIN);
  float piezo3ADC = analogRead(PIEZO3_PIN);

  // Calculer la différence entre la valeur actuelle et la précédente
  float diff1 = piezo1ADC - previousPiezo1ADC;
  float diff2 = piezo2ADC - previousPiezo2ADC;
  float diff3 = piezo3ADC - previousPiezo3ADC;

  // Mettre à jour la valeur précédente pour la prochaine itération
  previousPiezo1ADC = piezo1ADC;
  previousPiezo2ADC = piezo2ADC;
  previousPiezo3ADC = piezo3ADC;

  // Affichage de la différence
  Serial.println(diff1);
  Serial.println(diff2);
  Serial.println(diff3);

  Serial.print(-50); // To freeze the lower limit
  Serial.print(" ");
  Serial.print(50); // To freeze the upper limit
  Serial.print(" ");

  // Attente avant la prochaine lecture
  delay(5);

}

26/04/24 : Nous avons lancé l'impression de la nouvelle version du sismomètre et avons tenté de modifier le code afin d'afficher les valeurs des trois capteurs, mais malheureusement nous ne trouvons pas de moyen de les afficher.
const int PIEZO1_PIN = A0; // Sortie du piezo 1
const int PIEZO2_PIN = A1; // Sortie du piezo 2
const int PIEZO3_PIN = A2; // Sortie du piezo 3
float previousPiezo1ADC = 0; // Stocker la valeur précédente
float previousPiezo2ADC = 0; // Stocker la valeur précédente
float previousPiezo3ADC = 0; // Stocker la valeur précédente

void setup() {
  Serial.begin(9600);

}

void loop() {
  // Lecture de la valeur ADC actuelle du piezo
  float piezo1ADC = analogRead(PIEZO1_PIN);
  float piezo2ADC = analogRead(PIEZO2_PIN);
  float piezo3ADC = analogRead(PIEZO3_PIN);

  // Calculer la différence entre la valeur actuelle et la précédente
  float diff1 = piezo1ADC - previousPiezo1ADC;
  float diff2 = piezo2ADC - previousPiezo2ADC;
  float diff3 = piezo3ADC - previousPiezo3ADC;

  // Mettre à jour la valeur précédente pour la prochaine itération
  previousPiezo1ADC = piezo1ADC;
  previousPiezo2ADC = piezo2ADC;
  previousPiezo3ADC = piezo3ADC;

  // Affichage de la différence
  Serial.println("X: "); Serial.println(diff1); Serial.println(" ");
  Serial.println("Y: "); Serial.println(diff2); Serial.println(" ");
  Serial.println("Y: "); Serial.println(diff3); Serial.println(" ");

  Serial.println(-50); Serial.println(" "); // To freeze the lower limit
  Serial.println(50); Serial.println(" "); // To freeze the upper limit

  // Attente avant la prochaine lecture
  delay(5);

}