C'est au niveau du détecteur de crête que l'on choisit / définit le temps. un montage simple va avoir en sortie une tension "continue" dont la valeur est le max de la tension d'entrée. Si par exemple, ton signal d'entrée oscille entre -1 et +2V, le détecteur MAX sortira +2V et le min sortira -1V. si ton galvo se bloque sur la position max (donc renvoie un signal continu de 2V), le détecteur max restera à +2V et la sortie du détecteur min passera de -1V à +2V sous la forme d'une exponentielle en un temps T (temps de réaction du détecteur déterminé par les composants utilisés). Si tu "règles" ton détecteur sur un temps de réponse de 19ms, alors sa sortie mettra 19ms pour passer de -1 à 2V. Du coup, niveau arduino, il te suffit de faire de la détection sans gestion de temps, puisque c'est le détecteur de crête qui "gère" la tempo. Dès que l'arduino voit que X_out_min == X_out_max, c'est que ton miroir X est resté 19ms dans la même position (vérifier quand même ce qu'il peut se produire si le miroir bouge lentement, aux limites de la sécu).
Tout ça, c'est dans la théorie, car l'alim interne de l'arduino n'est pas au top et bouge un peu, donc les conversions analogiques bougent tout autant même si la tension à convertir est parfaitement stable. J'utilise analogReference(EXTERNAL); en imposant une tension (via une zener de 4.7V par exemple) sur la pin Aref, il faut que tes montages analogiques aient cette même tension de référence pour que ça marche bien.
Quand tu parles de lycée, c'est un TPE?