Etape 13 : Le speed control
Cela se fait avec la rétroaction de l’indicateur de vitesse.
Tout d’abord, modulation de largeur d’impulsion est utilisé pour contrôler l’alimentation électrique du moteur. Cette modulation de largeur d’impulsion est simplement mise en marche et coupe l’alimentation électrique très rapide. Si les impulsions « sur » sont courtes par rapport à des impulsions « off », la moyenne dans le temps du courant fourni au moteur sera faible. Si les impulsions « on » sont plus longues que les impulsions « off », la puissance sera grande.
L’arduino possède plusieurs sorties analogiques qui utilisent PWM. Ces sorties ont une résolution de 256 0 étant aucun pouvoir et 256 complètement ouvert.
La tâche du programme sur l’arduino est de trouver la bonne valeur afin de laisser le disque tourner aussi près de 12 tours par seconde. (ou 1 tour dans 0,083.. s)
Dans chaque révolution du feuillard d’aluminium connecte les deux fils agissant comme un swich numérique que l’arduino peut lire avec une broche numérique. Comme expliqué dans l’étape précédente, une traction vers le haut de résistance est utilisée, donc lorsque l’arduino voit le que la broche numérique va de « HIGH » à « Bas » il sache que la roue a fait une révolution.
Avec la fonction micros() l’intervalle entre les impulsions peut être mesuré. Ce retard est alors la période d’une révolution.
Rétroaction signifie que l’arduino peut ajuster la puissance fournie au moteur. S’il arrive que la période est trop volumineux, la puissance peut être augmentée pour accélérer le moteur. Si le délai est trop court, il peut réduire sa vitesse.
Après chaque ajustement l’arduino attend jusqu'à ce que le disque et le moteur tournant obtiennent à une vitesse constante. Le moteur est peut-être un peu trop petit pour ce disque et il nécessite un certain temps d’atteindre sa pleine vitesse.
Si l’arduino ne serait pas attendre jusqu'à ce que le disque est filé, il augmenterait sa puissance à chaque rotation et lorsque le disque atteint enfin la bonne vitesse il sera encore accélérer ce qui provoque l’arduno abaisser la puissance beaucoup trop. Ainsi se dégage une sorte d’oscillation.
Cette oscillation peut être réduite si l’arduino attend jusqu'à ce que le disque atteint une vitesse constante et par la suite s’ajuste si nécessaire.
Pour savoir si le disque est tourné vers le haut, l’arduino examine les différences dans les délais. Si elle devrait s’accélérer et que soudainement on observe une période de plus grande que le précédent, il sait que le disque n’est pas accélérer plus mais sa vitesse est plus sensible à son environnement que le moteur.
Le code se trouvent ci-dessous dans un fichier zip.
Et enfin, il y a un petit programme de Python. Il n’est pas nécessaire, vous pouvez facilement remplacer le premier ' si déclaration ' dans la boucle par un code pour un bouton poussoir. (en fait en images plus tôt vous pouvez voir un potentiomètre puisque je n’ai pas un bouton naar me. Et j’ai simplement fait un analogread. Juste un exemple), il est juste pratique pour démarrer et arrêter tout de mon ordinateur portable.
Le code est également inclus ci-dessous. (il semble y avoir un problème avec le < pre >< / pre > tags.
Juste d’exécuter le programme démarre le moteur.
Et comme vous pouvez voir la première photo, le pouvoir commence à 80, va à 110 ~ et puis fluctue un peu autour de 90. Le fait qu’il n’y a que toujours une oscillation au début est causée par le fait que la pense presque secoue lui-même dehors et l’arduino pense que le disque est filé par certains corrompus valeurs.
Mais, comme vous pouvez voir dans la deuxième photo, il fonctionne plus ou moins, la période se stabilise lui-même aroud 83 Mme il faut un certain temps mais il fonctionne !