Outils pour utilisateurs

Outils du site


Panneau latéral

Navigation

Plan auto

robotique:r_hasika:propulsion

Ceci est une ancienne révision du document !


Propulsion de R.Hasika

Cette page décrit la propulsion du rover R. Hasika. Ce robot est basé sur une conduite différentielle. Il faut donc des moteurs de chaque côté. Pour rester simple, nous utiliserons deux moteurs, un à gauche et un à droite.

Les moteurs

Ce robot utilise des moteurs de type micro metal gearmotors, et en l’occurrence des modèles haute puissance ayant un rapport réducteur de 75 pour 1. L'axe de sortie est un axe de 3mm, avec un profil en D, compatible avec les roues Pololu. Voici la référence précise de ces moteurs : 75:1 Micro Metal Gearmotor HP with Extended Motor Shaft.

Dimensions physiques du moteur

Un schéma précis des dimensions du moteur est proposé par Pololu sur la page, et je le reprends ici (tous droits réservés à Pololu) :

Rapport de la boite de vitesse

Le rapport précis au centième est de 75.81:1, obtenu par le calcul suivant : (34*34*35*38)/(13*12*13*10).

En pratique, cela signifie que pour chaque tour de roue, le moteur effectue 75,81 tours.

Couple du moteur

Caractéristiques électriques

Vitesse de rotation

Les capteurs de rotation

Pololu propose pour les moteurs à axe direct accessible plusieurs capteurs permettant de mesurer la rotation de celui ci. Il serait possible de mesurer la rotation des roues directement, ce qui est la solution à employer si l'on dispose de moteurs ayant seulement l'axe de sortie normal situé après la boite de vitesse. Mais ici, puisque nous disposons en plus d'un axe direct du moteur, il est possible de mesurer la rotation du moteur avant la boite de vitesse, et ainsi d'obtenir une mesure bien plus fine. Puisque le rapport de réduction du moteur est de 75:1, pour chaque tour de roue, le moteur en effectue 75. Avec un capteur identique, nous aurons une résolution 75 fois plus fine. Les capteurs proposés pour cette tâche sont les suivants :

Les deux premiers capteurs sont similaires, la différence étant que le premier fonctionne en 5V, tandis que le second fonctionne en 3.3V. Tous deux sont des capteurs optiques, qui se basent sur deux capteurs de réflectance. Une petite roue à créneaux sur l'axe du moteur est entraînée par celui ci, et les créneaux de la roue passent devant les capteurs de réflectance. Ceux ci se composent d'une diode infrarouge, et d'un capteur. Quand le créneau se trouve devant le capteur de réflectance, le faisceau infrarouge est réfléchi, et on lit un signal logique haut. Quand un “trou” se trouve devant le capteur, le faisceau n'est pas réfléchit, et on lit un signal logique bas. Il y a 3 ou 5 créneaux selon la roue codeuse choisie, on sait donc qu'au bout de 3 ou de 5 signaux haut, on a fait un tour.

Le dernier capteur reprend le même principe général, mais s'appuie sur des capteurs de champ magnétique au lieu de capteurs optiques. Ici, notre roue codeuse contient de petits aimants qui seront détectés par un capteur hall 1), basé sur l'effet hall 2). Par rapport aux deux capteurs précédents, la plage d'alimentation acceptée va de 2.7V à 18V, et on passe à 6 comptes par tour pour chaque capteur hall (il y en a deux pour chaque capteur de rotation).

Ces divers capteurs sont comparables, et permettront de mesurer la rotation du moteur avec une précision suffisante dans tous les cas. J'ai cependant retenu le capteur magnétique pour diverses raisons :

  1. Il fonctionne de 2.7 à 18V, ce qui évite de devoir choisir en 3.3V et 5V selon le robot;
  2. La résolution est meilleure (entre 20 et 100% selon la roue codeuse du capteur optique);
  3. Le capteur hall a ma préférence face aux capteurs de réflectance.

Je vais détailler le troisième point un peu plus. Les capteurs optiques utilisent la lumière, ici infrarouge. Si une source infrarouge émet dans une longueur d'onde proche en direction des capteurs, on peut avoir des mesures perturbées. C'est peu probable, mais possible. Pour le capteur hall, les champs magnétiques peuvent perturber les mesures. Cependant, celui des moteurs est trop faible, et les aimants puissants susceptibles d'entrer en contact avec les moteurs sont rares.

Un second point important est que le capteur de réflectance doit émettre en continu un faisceau infrarouge. Nous avons deux capteurs de réflectance par capteur de rotation, soit un total de quatre DEL infrarouge qui émettent en permanence, que le robot soit à l'arrêt ou non. Cela entraîne une consommation de 12mA pour le capteur 5V (soit 60mW) et 24mA pour le capteur 3.3V (soit 80mW) 3) pour chaque capteur de rotation, ce qui est à multiplier par le nombre de moteurs.

Le capteur Hall nécessite une alimentation électrique pour fonctionner mais à priori plus faible. En pratique, les spécifications du capteur donnent une valeur minimale de 2mA et maximale de 6mA, avec une valeur typique de 4mA 4). Soit 4 à 12mA par capteur de rotation, avec une valeur typique de 8mA. En 5V, cela fera 40mW, et en 3.3V, 26mW de valeur typique par moteur, soit un gain de 33% à 67% selon la version. Avec la consommation minimale, on passera à une baisse de 83% et 92%, et dans le pire des cas avec la consommation maximale, on obtient 0% et 50% de mieux.

Enfin, le capteur magnétique propose des vrais trous pour souder les fils, au lieu de demi-trous sur les capteurs optiques.

Toutes ces différences ne sont pas forcément énormes, donc chaque capteur est une solution viable. Cependant, puisque le coût est similaire, j'ai préféré prendre le capteur que je juge meilleur.

Voici le brochage obtenu (tous droits réservés à Pololu) :

a.pololu-files.com_picture_0j5827.250.jpg GND représente la masse, OUT A et OUT B les deux sorties permettant de mesurer la rotation (connectés aux GPIO), VCC la borne positive de l'alimentation électrique (donc connectée au 3.3V ou 5V ou autre), et M1 et M2 les broches du moteur (connectées au contrôleur de moteur).

Ensemble moteurs et capteurs

Dans tous les cas, quel que soit le capteur choisi, ceux ci se soudent à l'arrière du moteur sur les deux broches de celui ci, et fournissent 6 fils qui permettent de faire fonctionner le moteur, d'alimenter les capteurs et également de lire les valeurs des capteurs. Une fois installés, on obtient ceci :

Dans cette implémentation, j'ai utilisé des fils de couleur :

  • marron pour la masse;
  • bleu pour OUT B;
  • violet pour OUT A;
  • rouge pour VCC;
  • vert pour M1;
  • jaune pour M2.

J'utilise les mêmes codes de couleur pour les deux moteurs. Pour cela, j'ai utilisé des “jumper wire” femelle-femelle que j'ai coupés en deux, puis soudés sur la carte

Roues/chenilles

Ce robot est pensé pour être modulable. Ainsi, on peut utiliser deux ou quatre moteurs selon le nombre de roues motrices souhaitées. Chaque moteur est connecté à une roue, et en version deux roues motrices, on ajoute deux roues libres. Dans tous les cas, on obtient quatre roues, dont une partie au moins sont motrices. Ces roues peuvent être des roues Pololu diverses, mais le robot a été pensé pour les roues Pololu de 35mm. Celles ci peuvent recevoir soit des pneus pour une configuration à 4 roues indépendante, soit des chenilles. L'entraxe des roues sélectionné ici est de 85mm, ce qui correspond à l'entraxe recommandé pour les chenilles à 30 dents de Pololu : Pololu 30T Track Set.

On peut voir sur ces deux images le robot en version bimoteur avec des chenilles :

Contrôleur de moteur

Le contrôle des moteurs est confié à un DRV8835 sur une carte d'interface Pololu : DRV8835 Dual Motor Driver Carrier

1)
Définition du capteur à effet Hall : Capteur_à_effet_Hall
2)
Description de l'effet Hall : Effet_Hall
3)
voir section “5V and 3.3V versions” : https://www.pololu.com/product/2590
robotique/r_hasika/propulsion.1420838132.txt.gz · Dernière modification: 09/01/2015 22:15 par sky99