chronographe

Bonjour,

Je suis étudiant en math spé et je souhaite réaliser pour un projet un chronographe pour mesurer la vitesse d’un projectile de carabine à plomb (entre 250 et 300 m.s-1). J’utilise pour ça des phototransistors comme récepteurs et les émetteurs sont des diodes IR.

J’ai donc deux faisceaux IR que le projectile est censé couper et l’arduino doit alors relever la variation.
J’aimerai afficher les résultats sous forme d’un graphique mais le traceur série d’Arduino n’est vraiment pas adapté. De plus j’utilise la fonction micro () dans mon programme mais lorsque je les visualise sur le moniteur série j’ai environ 628 microseconde entre 2 relevé, ce qui n’est pas suffisant car mes diodes étant distantes de 11 cm le projectile met environ 400 microsecondes pour parcourir cette distance

Avez vous des idées pour la représentation graphique et pour améliorer la précision des mesures?

Merci d’avance !

shéma elec TIPE.pdf (11.8 KB)

test_chrony_graphique.ino (376 Bytes)

test_chrony_graphique.ino (376 Bytes)

shéma elec TIPE.pdf (11.8 KB)

// variables for input pin
int analogInput = A0;
int RXLED = 17;
long value = 0;



 
void setup() {
  // declaration of pin modes
  pinMode(analogInput, INPUT);
  pinMode(RXLED, OUTPUT);
  Serial.begin(115200);
}
 
void loop() {
  // read the value on analog input
  if (micros()<15000000){
    Serial.println (analogRead (analogInput));
    Serial.println (micros());
  }
}

bonjour,
tu dois prendre un top départ et un top arrivée et afficher après le résultat

merci pour la reponse rapide !

Je t’avoue que je débute à peine avec l’arduino et le C (ça fait 4 jour … ) donc peux tu juste m’expliquer ce que tu entends par top départ et top arrivé et comment les formaliser sur mon programme?

Après quelques recherches j'ai choisi d'utiliser Parallax Inc (pour l'installer j'ai suivi ces indications: [ ) et j'obtiens le code suivant qui semble fonctionner:

int Mesure_Pin = A0;  // nous allons envoyer l'état de l'entrée analogique A0
long temps;

void setup() {
  Serial.begin(9600); // initialisation de la communication série à 9600 bps
  Serial.println("CLEARDATA");  // on efface les données déjà présentes, s'il y a lieu
  Serial.println("LABEL,Temps,Mesure"); // titre des colonnes, dans Excel
}

void loop() {
  
  int ValeurMesuree = analogRead(Mesure_Pin);  // lecture de la pin A0
  Serial.print("DATA,TIMER,");  // envoi du temps et la mesure à Excel
  Serial.println(ValeurMesuree);
  delay (1);
    // 1 milliseconde d'attente entre chaque mesure
}

Cependant j'ai toujours un problème au niveau de la période d'échantillonnage car avec la fonction delay(1) ce n'est pas assez (il me semble que je suis alors à 1miliseconde mais je n'en suis pas sur). Existe-t-il une fonction du même type que delay() qui me permettrait d'arriver à une période de 10 ou 100 microsecondes? Ou peut être que les actions delay (.01) ou delay(.001) sont valides et me renvoient effectivement une information toute les 0,01 / 0,001 microseconde (j'ai essayé de faire tourner mon programme avec delay(.1) , il n'y a pas de problème mais je ne suis pas sur que j'ai bien le bon intervalle de temps)

si quelqu'un a des informations je suis preneur!

merci! ](http://electroniqueamateur.blogspot.fr/2014/10/transmettre-les-donnees-darduino-vers.htmlhttp://)

déjà, si tu mettais les deux sondes sur 2 pins différentes.

sonde1 sur A0 sonde2 sur A1 idem pour récepteur

si coupure sonde1 top_depart = micros(); si coupure sonde2 top arrivée = micros()

et la, tu as le temps entre les deux