Mesure d'un temps de passage

On utilise ici le montage fourche optique précédent pour mesurer le temps écoulé entre :

  • l'appui sur le bouton poussoir (l'automate passe dans l'état START),
  • le passage d'un objet entre l'émetteur et le récepteur de la fourche optique (interruption du faisceau infra-rouge), qui fait passer l'automate dans l'état STOP.

Après le passage d'un objet dans la fourche :

  • le temps est affiché dans le moniteur,
  • l'automate se met dans l'état STOP : toutes les LED éteintes saul la rouge, attente de l'appui sur le bouton poussoir pour démarrer une nouvelle mesure.

On peut ainsi faire plusieurs mesures successives d'un temps de passage :

Comme dans le TP précédent :
- un appui sur le bouton poussoir alors que l'automate est à létat START fait passer celui-ci à l'état STOP.
- un appui sur le bouton poussoir alors que l'automate est à létat STOP fait passer celui-ci à l'état START.

Écrire :

  • le diagramme des états de l'automate (WAIT, START, STOP), avec BPA (Bouton Poussoir Appuyé) et FI (Faisceau Interrompu) comme événements de transition d'état.
  • le tableau des transitions d'état.
  • le tableau des états faisant apparaître les actions effectuée par l'automate en fonction de ses états sur ses éléments matériels  :
    -> LEDs rouge, verte, et jaune,
    -> diode émettrice infrarouge du SPX1189-002,
    -> diode réceptrice infrarouge du SPX1189-003.

Algorithme

Écrire l'algorithme textuel faisant apparaître :
- la déclaration des variables globales, des constantes globales etla configuration des E/S,
- la gestion des périphériques qui déclenchent un événement de l'automate,
- le traitement des événements entrainnant une transition d'état,
- le traitement des états.

Programme

Avec l'environnement de développement ARDUINO, "enregistrer sous" votre programme FourcheOptique_1 sous le nom FourcheOptique_2, et modifiez le en vous inspirant de l'algorithme ci-dessus.

Indications :  la fonction ARDUINO millis renvoie le temps en millisecondes écoulé depuis le lancement du programme. La valeur doit être affectée à une variable entière de type long unsigned int (pourquoi  ?).

On peut s'en servir pour :

  1. prendre le temps écoulé t0 au moment de l'appui sur le bouton poussoir (passage à l'état START),
  2. prendre le temps écoulé t1 au moment de la détection de l'objet par la fourche optique.

La différence t1-t0 peut alors être affichée sur le moniteur.

Exécuter le programme, lancer le moniteur pour afficher dans les mesures de temps de passage, mesurés par interruption du faisceau optique ou par appui sur le bouton poussoir.

Modifié le: mardi 9 janvier 2018, 16:46