Mesurer la période d'un pendule

Objectif

Mesurer la période T d'un pendule à l'aide d'un capteur à ultrasons et d'un Arduino relié au tableur Regressi par la liaison série.

Le montage

Conseils :



Le code

Le code est identique au code utilisé pour mesurer une distance à l'aide d'un capteur à ultrasons.

Cliquez pour afficher le code

Cliquez pour masquer le code

// mesurer la période T d'un pendule avec des ultrasons
 
int vitesse = 340 ;  // vitesse du son 340 m/s
int Trig = 3;  // Déclencheur sur la broche 3
int Echo = 2;  // Réception sur la broche 2
 
/* Pour faire des mesures à intervalle régulier */
 
unsigned long tempsPrecedent = 0;
float intervalle = 20;   // durée entre deux mesures en ms (à modifier si nécessaire)
 
void setup() {
  pinMode(Trig, OUTPUT);    // initialisation de la broche "Trig" comme étant une sortie
  pinMode(Echo, INPUT);     // initialisation de la broche "Echo" comme étant une entrée
 
  digitalWrite(Trig, LOW);  // Mettre "Trig" niveau bas
 
  Serial.begin(115200);
}
 
void loop()
{
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré.
 
  if (tempsCourant - tempsPrecedent >= intervalle) {
    tempsPrecedent = tempsCourant;
 
    digitalWrite(Trig, HIGH);   // Un état haut de 10 microsecondes est mis sur la broche "Trig"
    delayMicroseconds(10);      // on attend 10 µs
    digitalWrite(Trig, LOW);    // On remet à l’état bas la broche Trig
    unsigned long duree = pulseIn(Echo, HIGH);   // Lecture de la durée d’état haut sur la broche "Echo"
 
    // calcul de la distance
    duree = duree / 2; // On divise cette durée par deux pour n'avoir qu'un trajet
    float temps = duree / 1000000.0; //on met en secondes
    float distance = vitesse * temps; //on multiplie par la vitesse, d = v x t
 
    // On affiche la distance sur la liaison série
 
    Serial.println(distance);
  }
}



Acquisition des mesures avec Regressi

Il est possible d'acquérir les mesures directement dans Regressi avec une version récente (4.5.7).









Les mesures







Cliquez pour afficher le code

Cliquez pour masquer le code

// mesurer la période T d'un pendule avec des ultrasons
 
int vitesse = 340 ;  // vitesse du son 340 m/s
int Trig = 3;  // Déclencheur sur la broche 3
int Echo = 2;  // Réception sur la broche 2
 
/* Pour faire des mesures à intervalle régulier */
 
unsigned long tempsPrecedent = 0;
float intervalle = 20;   // durée entre deux mesures en ms (à modifier si nécessaire)
 
void setup() {
  pinMode(Trig, OUTPUT);    // initialisation de la broche "Trig" comme étant une sortie
  pinMode(Echo, INPUT);     // initialisation de la broche "Echo" comme étant une entrée
 
  digitalWrite(Trig, LOW);  // Mettre "Trig" niveau bas
 
  Serial.begin(115200);
}
 
void loop()
{
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré.
 
  if (tempsCourant - tempsPrecedent >= intervalle) {
    tempsPrecedent = tempsCourant;
 
    digitalWrite(Trig, HIGH);   // Un état haut de 10 microsecondes est mis sur la broche "Trig"
    delayMicroseconds(10);      // on attend 10 µs
    digitalWrite(Trig, LOW);    // On remet à l’état bas la broche Trig
    unsigned long duree = pulseIn(Echo, HIGH);   // Lecture de la durée d’état haut sur la broche "Echo"
 
    // calcul de la distance
    duree = duree / 2; // On divise cette durée par deux pour n'avoir qu'un trajet
    float temps = duree / 1000000.0; //on met en secondes
    float distance = vitesse * temps; //on multiplie par la vitesse, d = v x t
 
    // On affiche la distance sur la liaison série
    if (distance > 0.10) {
      distance = 0.1;
    }
    Serial.println(distance);
  }
}

Statistiques du site