-
Notifications
You must be signed in to change notification settings - Fork 12
Utilisation de ROBUS
Cette section présente quelques notions d'électroniques et mécaniques pour contrôler RobUS avec la libraire LibRobus. Ceci est un guide générique qui utilise des fonctions de la librairie LibRobus qui sont présentées dans la section Librarie libRobus. Cette section est séparée dans les sous-sections suivantes :
- Base de RobUS
- Déplacement
- Asservissement
- Moteurs
- Pont en H
- Signaux de contrôle PWM
- Pulses de servomoteurs
La base ronde transparente de RobUS comporte des trous sur toute sa périphérique. Ces trous permettent de fixer des espaceurs, braquettes et senseurs tout autour du robot sans avoir à percer de trous dans la plaque. Les trous sont dimensionnés pour des vis 6-32, comme celles utilisées majoritairement dans l'assemblage de RobUS.
Lorsque votre plateforme est montée et que vous avez fait rouler le code de test, vous pouvez faire un programme utilisant l'instruction de contrôle des moteurs, MOTOR_SetSpeed().
Cependant, si vous désirez que votre robot se déplace en ligne droite, ou encore effectue des virages précis, vous aurez besoin d'utiliser les encodeurs pour asservir votre robot.
Dans le cadre du projet, l'asservissement des moteurs est essentiel si vous désirez être en mesure de bien contrôler votre robot. Comme vous le constaterez rapidement, deux moteurs du même modèle sont tout de même différents. Cela peu avoir un impact significatif sur les déplacements du robot. En démarrant les deux moteurs à 100% de leur puissance, il est probable qu’ils ne tournent pas à la même vitesse, et que Robus ne se déplace pas en ligne droite. Pour corriger la situation, vous pouvez utiliser des encodeurs de roue. Utilisez l’instruction ENCODER_Read() dans une boucle (n’oubliez pas d’insérer une pause entre les appels) afin de connaître le nombre de pulses observés entre les appels à cette fonction. Ce nombre est proportionnel à la distance parcourue. En appelant la fonction à intervalle régulier, vous aurez donc une mesure proportionnelle à la vitesse de la roue. Vous pourrez donc corriger la puissance d’une des roues afin que les deux tournent à une vitesse semblable.
Les moteurs utilisés en robotique mobile sont généralement des moteurs DC . Ils fonctionnent avec une tension fixe (par exemple 12V), et ont également une vitesse fixe qu’il est possible de contrôler. Selon leur puissance, ils peuvent drainer beaucoup de courant. Sur votre robot, les moteurs sont la principale cause de drainage de la batterie, puisqu’ils consomment plusieurs centaines de mA.
Évitez de choisir un modèle surpassant vos besoins en puissance puisque cela pourrait entraîner des difficultés de design supplémentaires, principalement au niveau de la capacité des piles, et également au niveau de la structure mécanique si vous changez votre source d’alimentation pour une grosse batterie.
Tel que mentionné précédemment, les moteurs consomment des gros courants (ceux sur Robus consomment plusieurs centaines de mA). Or, les sorties d’un microcontrôleur ne peuvent jamais fournir plus que quelques mA. De plus, rares sont les moteurs dont la tension d’alimentation est égale à la tension des sorties du microcontrôleur. Il faut donc se munir d’un dispositif qui joue le rôle d’un amplificateur et qui transforme un signal de faible puissance en un signal semblable avec la bonne tension et pouvant fournir un plus grand courant. C'est le rôle du pont en H.
Un pont en H permet de fournir une grande puissance dans plusieurs configurations différentes. Cela est notamment utile pour permettre au moteur de tourner dans les deux sens à pleine capacité. Le schéma suivant montre un exemple de pont en H. En fermant simultanément deux interrupteurs, le courant passe dans un sens. En fermant les autres interrupteurs, le courant passera en sens inverse, et le moteur tournera également en sens inverse. Il faut s'assurer que les interrupteurs d’un même côté ne soient pas activés en même temps, cela causerait un court-circuit.

Tel que mentionné dans la section Pont en H, les moteurs utilisés sont des moteurs DC qui ont souvent une vitesse unique. Il est cependant possible de contrôler leur puissance (et donc leur vitesse de rotation) en utilisant des signaux de contrôle, comme un PWM (pulse width modulation – modulation par largeur de pulse). Ces signaux sont des ondes carrées à fréquence constante (généralement 20kHz, pour être inaudible), mais dont le rapport de cycle varie. Voici un exemple de quelques signaux de PWM avec des rapports de cycle différents.

Ces signaux de contrôle, envoyés aux ponts en H, permettent de mettre en marche les moteurs et de les arrêter relativement rapidement. Ainsi, on contrôle la puissance moyenne du moteur et donc sa vitesse. Une seconde sortie numérique permet de décider de la direction du pont en H.
Les servomoteurs d'avions et de voitures téléguidées sont des moteurs asservis en position et découplés. Ils comportent leur propre contrôle en boucle fermée et leur propre réducteur mécanique. Ils n'ont besoin que d'une alimentation et d'un signal de contrôle. Ils se positionnent selon la longueur d'un pulse répétitif envoyé dans le fil jaune ou blanc.
La période de chaque pulse est de 20 millisecondes et la longueur du pulse est de 1 à 2 millisecondes. La très grande différence de durée entre le pulse et la période permettait de multiplexer jusqu'à 8 signaux différents sur un seul canal RF. Un pulse répétitif de 1 milliseconde positionne le moteur à 90° et un pulse répétitif de 2 millisecondes positionne le moteur à 0°.

Vous pouvez aller au-delà de cette plage mais c'est à vos risques et périls. Les servomoteurs sont manufacturés pour respecter la norme 0°-90°.
RobUS comporte deux connecteurs à servomoteurs sur sa plaque d'interface en demi-lune. Une fois les servomoteurs connectés dessus et la tension Vservo ajustée (7.2 Volts), vous pouvez les contrôler à l'aide des fonctions de servomoteurs.
LibRobus - UdeS - Génie électrique et informatique - 15 novembre 2018