8 septembre 2012
Notre matériel :
Notre moteur est un peu particulier. Il dispose de deux axes de sortie. D’un coté l’axe est relié au réducteur, de l’autre il est possible de fixer un codeur incrémental. Ceci permet d’améliorer la résolution du codeur en la multipliant par le rapport de réduction du réducteur. Avec un codeur qui renvoie 200 impulsions par tour, nous aurons, avec un réducteur de 10:1, 2 000 impulsions par tour de l’axe en sortie du réducteur. Avec un réducteur de 50:1, nous aurons 10 000 impulsions par tour d’axe de l’axe en sortie du réducteur.
L’inconvénient est que cette précision est parfois fictive, le codeur ne mesurant pas les déplacements dus au jeu du réducteur.
Avant de commencer nos investigations, il faut fixer l’encodeur sur l’axe arrière du moteur. Notre axe était un peu trop long, nous avons du le scier à la main. Cependant, le plus délicat fut de se créer une pièce pour augmenter le diamètre de l’axe. L’axe arrière a un diamètre de 1/8 de pouce (3,1 mm). Le codeur est conçu pour des axes de 5 mm. Transformant temporairement notre perceuse à colone en tour, nous limons une baguette de bois de 6 mm pour avoir un diamètre extérieur de 5 mm. Ensuite nous perçons cet axe avec un forêt de 1/8 de pouce, acheté pour l’occasion. La fin du montage s’est faite en suivant les instructions de montage de la fiche technique.
Nous n’avons pas encore nos cartes définitives, nous recyclons l’une de nos vieilles cartes pour faire nos tests. Nous utilisons les fonctionnalités suivantes de notre microcontrôleur :
Le but est de valider deux choses :
Nous ne nous soucions pas (pour l’instant) du sens de rotation du moteur.
Pour notre premier essais, nous lisons à intervalles fixes la valeur du compteur puis nous le réinitialisons. Nous ajoutons cette valeur lue à une variable NbImpulsionTotal que nous envoyons par la liaison série. Nous relevons le nombre d’impulsions au bout d’un tour effectué par l’axe en sortie du réducteur.
Nous relevons des valeurs proches de 1800 imp/tour, assez loin des 2200 imp/tour que nous espérions mesurer.
Nous mettons en cause le code. En réduisant la fréquence de lecture/réinitialisation du compteur, nous obtenons des valeurs plus proches de celle espérée, mais de l’ordre de 2000 imp/tour
Nous venons d’invalider le principe du code. Entre le moment où nous lisons le timer et le moment où nous l’effaçons, un ou plusieurs fronts ont pu arriver. Ceux-ci ne seront pas comptabilisés.
Nous utilisons alors une autre méthode. Nous mémorisons l’ancienne valeur du compteur que nous soustrayons à la valeur actuelle du compteur. De cette manière nous ne modifions pas le compteur. Il faut, par contre, prendre garde au rebouclage du compteur. Lorsque le compteur atteint sa valeur maximal, il se remet à zéro. Pour cela, nous vérifions que l’ancienne valeur du compteur est inférieure à la valeur actuelle. Dans le cas contraire, c’est que le compteur à rebouclé et la méthode de calcul du nombre d’impulsions vues doit être modifiée.
Avec ce nouvel algorithme, nous observons toujours des valeurs très proches de 2000 impulsions par tour de réducteur. Le doute fini par s’installer dans nos esprits : et si la valeur donnée pour le réducteur était fausse ?
Nous mesurons les diamètres des roues du réducteur et les comparons avec les diamètres avec des roues dentées similaires vendues en ligne. Il nous semble très probable que le réducteur soit finalement de 1:10...