Étape 6: Arduino intégration (capteur de régime)
Dans l’esprit d’une œuvre à vélo, nous avons voulu fournir à l’utilisateur quelques statistiques pertinentes sur leur entraînement. Nous avons distingué la vitesse de rotation du pneu arrière comme une statistique clé. Il un peut tirer la vitesse équivalente que serait aller le vélo ou la distance qu'il aurait voyagé si ce n’était pas stationnaire. Il y a deux façons simples pour mesurer le nombre de tours avec un Arduino : un capteur optique et un capteur à effet Hall.
Capteur optique :
Nous avons choisi de construire un capteur optique de tr/min pour notre vélo en raison des pièces dont nous disposions. Le concept est simple ; Un objet opaque, rigide (dans notre cas un rectangle de plastique mince) est attaché à la jante de la roue arrière afin que chaque fois que la roue tourne, l’objet intercepte le chemin entre une LED et une photo diode. Pour maintenir la photodiode et LED en place, nous re-conçu une pièce idéalement en forme de mousse de polystyrène avec une encoche dedans juste assez large pour la roue (Voir photos). Styro-mousse le rend facile à ajuster la LED et la photo diode directement en ligne avec l’autre (car les diodes photo sont très sensibles à la direction de la lumière — ils fonctionnent mieux avec la lumière entrer directement dans la partie supérieure, ce qui réduit les effets de lumière ambiantes). Si la LED n’était pas alignée, nous simple fourré un autre trou dans la mousse de polystyrène à l’emplacement correct. Il est également important attacher l’objet opaque sur la jante afin qu’il ne pas interférer avec la courroie de ventilateur ou frapper le cadre, au sol, support de vélo ou autres obstacles.
Le circuit est aussi assez simple. Nous avons couru 5V de l’Arduino pour la LED et la photodiode. Il est important que la LED n’est pas la seule chose entre 5V et la masse. La LED ne fournit pas beaucoup de résistance et même 5V peuvent envoyer une grande quantité de courant à travers les barbelés, qui peuvent souffler vos LED. Nous avons utilisé une résistance d’ohm 1 k en série avec la LED, ce qui signifie que le courant dans la LED est seulement ~ 5mA. La chose la plus importante à retenir lors de l’utilisation d’une photodiode est qu’il fonctionne à l’opposé de la LED. Au lieu d’appliquer une tension pour produire de la lumière, une lumière est appliquée pour produire une tension, donc la diode doit être placée dans le circuit dans le sens opposé comme la LED. La tension produite par le courant de la photodiode est mesurée à travers une résistance en série après la photodiode. L’ampleur de cette tension est sans importance parce que nous voulons simplement savoir si la photodiode capte la LED ou si elle est bloquée. Réglage de la résistance suivante, cependant, peut changer l’amplitude de la tension mesurée alors que même avec la lumière ambiante, la tension est 0. Nous avons constaté qu’utilisant une 47k résistance ohms fait pour une tension de 0 lorsque bloqué et une tension assez importante pour mesurer facilement lorsqu’il n’était pas bloquée. Chaque fois que l’Arduino lit en tension de 0, il sait que la roue a tourné une fois.
Approche d’effet Hall :
L’effet Hall peut également être utilisé pour mesurer la rotation de la roue. L' effet Hall se réfère à la tension induite par un champ magnétique. La mise en place de cette approche est également très simple. Un aimant est fixé à la jante de la moto et une sonde de Hall est attachée au cadre ou à le des endroits comme les LED du capteur optique. Une sonde de Hall est un composant de circuit conçu pour produire une tension proportionnelle au champ magnétique transverse à elle. Ainsi chaque fois que l’aimant passe par la sonde de Hall, une tension est sortie et peut être lu par l’Arduino pour compter une rotation (encore une fois l’amplitude de la tension n’est pas pertinent).
Exemple de Code (capteur optique) :
le code complet se trouve à la fin de ce Instructable
le code en gras , c’est ce que nous ajoutons au code d’en haut
int pdiode = A3 ; photodiode pour tr/min
photodiode int ;
cycle d’int = 0 ;
int numCycle = 20 ; la moyenne d’utilisation pour
flotteur t0 = 0.0 ;
flotteur t1 ;
void setup() {}
pinMode (pdiode, entrée) ;
}
void loop() {}
Si (motorV > 1.0 & &! hasBeenOn) {}
cycle = 0 ;
T0 = float (millis()) ;
}
getRpm() ;
}
void inverterControl() {}
d’autre if(timecheck <5000) {}
cycle = 0 ; C’est une sécurité puisque arduino ne pouvez pas exécuter plusieurs threads
T0 = float (millis()) ;
}
}
void getRpm() {}
voudrez peut-être envisager un if else/boolean qui fait de plus en plus bien sûr son cycle seulement pour vélo
Si (t0 == 0,0) {//safety car si l’arduino vient de commencer et t0 n’a pas encore été défini
T0 = float (millis()) ;
}
photodiode = analogRead(pdiode) ;
Si (((photodiode! = 0) & & (analogRead(pdiode) == 0)) || ((photodiode == 0) & & (analogRead(pdiode)! = 0))) {
cycle ++ ;
T1 = float(millis()) ;
Si (cycle > numCycle) {}
tr/min = (float(cycle)) / (t1 - t0) * 1000.0 * 60,0 ; conversion aux rotations par minute
cycle = 0 ;
T0 = float (millis()) ;
}
}