Étape 10 : Interupts
Suite à une suggestion de rfmdelgado vous pouvez également utiliser des interruptions sur broches numériques de l’arduino pour enregistrer l’heure que le marbre passe chaque porte. Cela nécessite un petit circuit externe pour pouvoir travailler avec le seuil réglable besoin de valeurs pour chaque portail.
La première chose que nous avons besoin est un comparateur de tension qui peut comparer deux tensions d’entrée et de sortie une tension haute ou basse, selon lequel l’un est plus élevé. Je n’ai pas une puce de comparateur de tension spécialement conçu, mais son possible d’utiliser un ampli-op avec aucune boucle de rétroaction à la place. J’ai suivi les instructions de Circuits et d’informations de comparateur de tension pour utiliser un LM358 double ampli-op. L’impédance d’entrée d’arduino est si élevé, dans l’ordre de 10MΩ, le montant de l’amende doit se connecter directement à l’ampli-op sortie directement sur la broche numérique arduino sans utiliser une diode ou un transistor comme proposé dans le lien.
Un circuit simple comparerais juste à la sortie des portes avec la tension d’une résistance variable, utilisée comme un diviseur de tension. Cela nécessiterait un ajustement manuel chaque fois que les équipements utilisés.
Il est préférable d’utiliser la sortie PWM de l' arduino analogWrite() pour fournir une tension de référence réglable. Un filtre passe-bas, consistant en une résistance et un condensateur, il faut lisser la sortie, j’ai utilisé la calculatrice à la Conception du filtre passe-bas de RC pour PWM à choisir les valeurs. Une valeur élevée de 10μF utilisée pour le condensateur que nous voulons obtenir essentiellement une tension stable avec tension d’ondulation minime. La résistance que j’ai utilisé était 2.2kΩ. Il est tout à fait une flexibilité dans les valeurs utilisées. La sortie du filtre est branchée dans le non inversé (+) entrée des ampli-op entrées et sortie de la porte d’entrée alimenté en l’inversant (-) d’entrée. Sur une Uno bornes 5 et 6 sont utilisés car ceux-ci ont une fréquence élevée de 980 Hz donnant plus de latitude sur les valeurs RC.
Pour le code, nous avons encore un tout à fait une phase de formation longue. La sortie PWM est augmentée lentement, à chaque étape, que le comparateur de tension est lu. Ce sera au départ de zéro et passera à 1 lors de la sortie PWM est supérieure à la porte. La valeur dans ce cas est recodée. Le processus est alors inversé avec la sortie PWM est passée de maximale à zéro, la valeur où la passe d’entrée de 1 à 0 est enregistré. Enfin, la valeur de seuil est considérée comme la moyenne de la hausse et baisse des valeurs plus un incrément fixe. Cette valeur est écrite dans le PWM qui sert de la tension de seuil à long terme.
Avec le seuil interruptions ensemble peuvent alors être activées à l’aide de AttachInterrupt. Nous sommes seulement intéressés par le mode RISING lorsque l’entrée va de faible à élevé. Les broches 2 et 3 qui sont des interruptions 0 et 1 ont été utilisés sur une Uno. Le code d’interruption réelle est assez simple, le temps est enregistré et la différence de temps entre les deux heures est le temps écoulé du marbre.
En utilisant les interruptions puisse améliorer la résolution du moment potentiellement mieux que l’environ 1ms tiré du code base. Cependant il y a des variations considérables dans l’expérience, surtout dans la position exacte que du marbre est libéré ainsi il n’y a pas trop à gagner.