Bonjour, le problème est un peu complexe et je ne sais pas si il a déjà été posté sur le forum.
J'essaies de faire un détecteur d'ondes sismiques pour des tp de lycées. L'idée est d'avoir une barre d'une roche, placer deux capteurs piézoélectrique, un à la fin et l'autre au début de la barre, puis de donner un coup sur l'une des extrémités et mesurer le temps de propagation de l'onde pour calculer la vitesse de propagation de l'onde.
Seulement voilà, je débute avec l'arduino et je n'ai pas encore tout bien acquis par rapport à la gestion du temps dans les programmes.
Voici mon code : (ne faites pas attention aux commentaires, ils sont juste là pour faire des mesures si besoin)
#define piezo1 3
#define piezo2 0
int value1 =0;
int value2 = 0;
int max1 = 0;
int max2 = 0;
int seuil = 10;
long t1=0;
long t2=0;
long tf=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
value1=analogRead(piezo1);
value2=analogRead(piezo2);
//Serial.println(value1,DEC);
if (value1>seuil)
{t1=micros();
//Serial.print("capteur 1 : ");Serial.println(value1,DEC);
}
if (value2>seuil)
{t2=micros();
//Serial.print("capteur 2 : ");Serial.println(value2,DEC);
}
if(t2>0 and t1>0)
{tf=t1-t2;tf=abs(tf);Serial.print("temps écoulé entre les deux détections (en microsecondes) : ");Serial.println(tf,DEC);tf=0;t1=0;t2=0;}
}
Quand je l'éxecute sur l'arduino (arduino uno, clock interne de 16MHz), les valeurs obtenus ne sont pas les bonnes. J'obtiens presque toujours des multiples de 224, peu importe la position des capteurs sur la roche, le problème ne peut donc pas venir du dispositif expérimental (j'ai déjà changé la roche et la position des capteurs sur celle ci), il vient donc du code.
Je voudrais donc savoir d'où le problème pourrait venir, mes pistes pour l'instant sont :
-
le code, comme je l'ai dit je débute, la gestion du temps dans le programme n'est certainement pas la meilleure.
-
le matériel, les temps à mesurer tourne dans les 17 microsecondes et je me dis que le problème vient peut être de la fréquence de l'arduino.
Voilà, désolé du pavé et merci d'avance de l'aide que vous pourrez m'apporter.