La librairie "Ticks"
par
popularité : 10%

Une librairie pour compter les impulsions et calculer des débits ou des fréquences.
Présentation de la librairie Ticks
La librairie Ticks pour Arduino permet par exemple de gérer un anémomètre ou un débitmètre. Ce genre de dispositif envoie régulièrement des impulsions, pas forcément très fréquentes, et il s’agit de les compter sur un certain laps de temps et d’en déduire la fréquence, puis une vitesse de vente ou un débit.
Contenu de la librairie Ticks
Comme toutes les librairies Arduino, la librairie Ticks se compose d’un fichier header (Ticks.h) et d’un fichier de code (Ticks.cpp), le tout dans le dossier Ticks à placer
.
Le Constructeur
Le constructeur donne accès aux fonctions de la librairie Ticks. Le constructeur à besoin des 3 paramètres suivants :
- numInterrupt : C’est le numéro de l’interruption à utiliser. Sur Arduino Uno, il y a le choix entre 0 (attaché à la broche 2) ou 1 (attaché à la broche 3). L’Arduino Mega 2560 dispose de 4 broches supplémentaires : 2 (broche 21), 3 (broche 20), 4 (broche 19) et 5 (broche 18).
- pinTicks : Numéro de la broche à utiliser. Sur Arduino Uno, deux broches sont disponibles : La 2 pour l’interruption n°0 et la 3 pour l’interruption n°1.
- period : Période de base, en millisecondes. Si sa valeur est 1000, il sera possible d’avoir, outre la fréquence instantanée, les fréquences moyennes sur 1, 5 et 25 secondes. Si sa valeur est 2000, les fréquences moyennes sur 2, 10 et 50 secondes seront disponibles.
.
Les Fonctions de la librairie
La librairie Ticks expose les fonctions suivantes :
- (void) begin() : Pour initialiser la classe Ticks, commencer à compter les Ticks afin de pouvoir calculer le fréquence.
- (void) operate() : Permet, à chaque itération de
loop()
, de mettre à jour la fréquence instatanée, et si les conditions sont remplies, les fréquences moyennes. - (int) currentTicks() : Renvoie le nombre de Ticks comptés depuis le début. Au bout de 65535 ticks, le compteur recommence à 0.
- (float) instantTickRate() : Donne la fréquence instantanée calculée entre chaque appel de la fonction
operate()
. Si chaque itération de la fonctionloop()
dure 100 ms, cette fréquence sera calculée sur cette période. Il faut comprendre que sur une durée aussi courte, il peut ne pas y avoir de tick, ce qui donnera une fréquence à 0. De même, un tick détecté dans ce laps de temps donnera une fréquence de 10 Hz. - (float) TickRate1Period() : Donne la fréquence (Ticks par seconde, ou Hz) mesurée sur la dernière périodes.
- (float) TickRate5Period() : Donne la fréquence (Ticks par seconde, ou Hz) mesurée sur les 5 dernières périodes.
- (float) TickRate25Period() : Donne la fréquence (Ticks par seconde, ou Hz) mesurée sur les 25 dernières périodes, par bloc de 5 périodes.
.
Téléchargement et installation
La dernière version de la librairie est disponible ici. Extraire l’archive et déposer le répertoire "Ticks" dans le répertoire Arduino/libraries/ Relancer le logiciel Arduino. La librairie doit maintenant être présente dans le menu " /skecth/Import Library/ ".
Le code est également disponible sur GitHub.
Exemple d’utilisation
L’exemple d’utilisation porte sur la récupération des données issues d’un débitmètre basique, en l’occurrence le YF-S201 disponible chez GoTronic. On affiche alors
- le nombre instantané de ticks par seconde, ici mesuré sur une demi seconde (
delay(500)
dans la boucle). - le nombre moyen de ticks par seconde sur 1 seconde
- le nombre moyen de ticks par seconde sur 5 secondes
- le nombre moyen de ticks par seconde sur 25 secondes
- le débit moyen sur 25 secondes, en litre/minute
Et voici le code de l’exemple distribué avec la librairie :
- /*
- **
- ** FlowMeter
- **
- ** FlowMeter read sample
- **
- ** http://www.domoenergytics.com
- ** This example code is in the public domain.
- */
- #include "Ticks.h"
- const byte pinFlowMeter = 2; // data pin for FlowMeter sensor
- const byte numInterrupt = 0; // Interrupt number
- const int period = 1000; // Base periode, in milliseconds
- const float CoefLitMin = 7.4;
- // Instantiate the class for counting ticks
- Ticks myTicks(numInterrupt, pinFlowMeter, period);
- void setup() {
- Serial.begin(115200); // Initializes serial communication with PC terminal
- myTicks.begin(); // Initializes the class for counting ticks
- }
- void loop() {
- myTicks.operate(); // Count
- Serial.print("t : ");
- Serial.print(myTicks.instantTickRate());
- Serial.print(" 1s : ");
- Serial.print(myTicks.TickRate1Period());
- Serial.print(" 5S : ");
- Serial.print(myTicks.TickRate5Period());
- Serial.print(" 25s : ");
- Serial.print(myTicks.TickRate25Period());
- Serial.print(" ==> ");
- Serial.print(CoefLitMin * myTicks.TickRate25Period(), 2);
- Serial.print(" liter/minute");
- Serial.println(" !");
- delay(500);
- }
Plan de montage
Commentaires forum ferme