Étape 5: Une petite particularité
Une particularité de contrôler une table traçante XY, c’est que nous devons faire en sorte que les deux moteurs terminer leur tour en même temps, et par conséquent les deux moteurs peut-être de tourner à des vitesses différentes.
Pour illustrer cela, supposons que nous sont à partir de (0,0) et que vous souhaitez déplacer vers (45,45). De toute évidence, si les deux moteurs tournent à la même vitesse, ils tous les deux atteindront (45,45) en même temps. Ensuite, supposons que nous voulons passer de (0,0) à (30,90). Dans ce cas, si les deux moteurs se déplacent à la même vitesse, puis quand le moteur X atteint 30, le moteur Y sera également à 30 et puis le moteur X restera arrêté alors que le moteur Y garde tournant jusqu'à ce qu’il atteigne 90. Nous devons donc, faire en sorte que les deux portée de moteurs (30, 90) dans le même temps, à faire le tour de moteur Y 3 fois plus rapide que le X moteur. Regardez l’image pour voir ce que je veux dire...
Pour implémenter ce contrôle de vitesse, j’ai écrit un code qui vérifie pour voir quel moteur doit s’accélérer pour s’assurer que les deux moteurs atteignent leurs valeurs respectives de destination dans le même temps exact. Nous devons également de tenir compte de l’angle de l’arbre de sortie tourne après chaque étape du moteur. Dans mon cas, c’était environ 0,72 degrés et donc dans mon code source j’ai ont introduit une constante (comme une erreur à zéro) appelée MOTOR_ERROR et ont mis sa valeur = 0,8 degrés. Regardez la fonction XYPlotter::GotoAngle() dans le code source pour voir comment déterminer quel moteur a besoin d’aller plus vite.
Par exemple, si Y moteur doit tourner 4 fois plus vite que le moteur de X, alors YMotor.StepOnce() est appelé quatre fois pour chaque fois que la XMotor.TurnOnce() est appelée.