Etape 3: Travail et Code
Le travail est simple en principe. Le capteur à effet hall génère le signal quand les aimants reliée à l’arbre du rotor (en interne). Selon le nombre d’aimants connectés pour chaque rotation de 360 degrés du rotor, 1,2,4 signaux seront générés. Ces signaux est recueillis par arduino (broche ici 12). Pour calculer les révolutions par minute ou tr/min, nous comptons nombre de signaux reçus en 1 seconde multipliée par 60 et le résultat divisé par le nombre de signaux reçus en 1 tour.
Ligne 74 : Vitesse = ((tiques * 60)/fanspace[fan].fandiv) ;
Dans mon fan j’ai deux aimants fixés, c’est pourquoi je reçois deux signaux par révolution. J’ai choisi {1,2} en partie de mon code - la suite
Ligne 33 : fanspec fanspace [3] = {{0,1}, {1,2}, {2,8}} ; fan de char = 1 ; Cela signifie que le type de ventilateur 1 ayant 2 signaux par révolution.
Code et algorithme actuel donne une précision raisonnable d’environ 10 t/mn et la vitesse de mise à jour d’environ 1 seconde. En optimisant le code tous les deux peuvent être optimisées pour une réponse plus rapide et une excellente précision. Ce point sera discuté dans ses projets futurs.
Au début j’ai eu le problème d’avoir des zéros non significatifs ou affichage à cristaux liquides conservant de vieux chiffres pour basse vitesse par exemple la vitesse réelle descend de 330 tr/min à 60 t/mn, il montrait encore 360 tr/min. Il s’agit d’un problème classique de gauche padding ou des zéros non significatifs. Pour résoudre ce problème, j’ai ajouté la suite code-
Ligne 87: / / Converting integer vitesse une chaîne ASCII de 4 caractères complétée à gauche
char SpeedString [4] ; Tampon pour stocker la chaîne de 4 caractères + terminaison 0
sprintf (SpeedString, « 4 % d », vitesse) ; Remplacez ce %3, 4, 5, etc. selon votre vitesse max lcd.print(SpeedString) ;
Ici j’ai converti la vitesse calculée sous forme de nombre entier en forme d’une chaîne et puis envoyé à écran LCD, de cette façon LCD imprime vitesse compte tenu de tous les chiffres comme une chaîne unique ou des données textuelles.
Le code final est disponible sur ma page de github ici.
Amusez-vous avec arduino...
Remerciements-
code d’origine par Crenn de http://thebestcasescenario.com
projet original par Charles Gantt de http://themakersworkbench.com