Roues codeuses magnétiques pour base roulante robotique – compatible EV3 Mindstorm et ev3dev.
L’idée
Créer une paire de codeurs avec roues (communément appelé roues codeuses) qui génèrent le moins de frottement possible, à haute résolution, à un coût faible, qui ne craint pas la poussière et qui soit le moins large possible pour être placé dans une base roulante de robot de petite taille, compatible Lego Mindstorm/ev3dev.
Le problème
Un codeur professionnel du commerce, à haute résolution et étanche, est toujours d’une grande largeur, de plusieurs centimètres, auquel il faut ajouter un moyeu et une roue. Le tout s’avère toujours trop large (minimum 5cm par unité).
Il faut savoir qu’en robotique, sur une base roulante, il faut mettre les 2 roues codeuses et les 2 roues motrices, ainsi que les 2 moteurs d’entrainement de celles-ci sur le même axe afin de créer un asservissement fiable et relativement simple.
Le problème est donc que le matériel abordable, codeurs, roues motrices, moteurs, implique la plupart des cas une grande largeur de robot par défaut. Pour les petits robots, il faut aller chercher la miniaturisation avec l’augmentation du coût qui va avec.
Or l’objectif ici est de réduire cette taille en gardant une qualité et une fiabilité semi professionnelle afin de pouvoir facilement les utiliser dans une base roulante de petit robot, et également sur une base de robot en Lego Mindstorm. Les codeurs compatibles Lego (NXT Angle Sensor) ne possèdent que 360 pas par tour, ce qui n’est pas suffisant pour créer un asservissement efficace et fiable, il y a trop d’imprécision même avec une petite roue de 2cm de diamètre par exemple.
La largeur de cette nouvelle roue codeuse magnétique devra être équivalente à celle de 2 barres de Lego Mindstorm, roue incluse, soit 16mm. En contrepartie, la hauteur pourra être augmentée.
En diminuant cette largeur de chaque codeur, on obtient tout de suite un gain de place de plusieurs centimètres de chaque côté. Ce gain de place pourra être utilisé pour garder des grands moteurs à un prix acceptable, et des roues larges permettant une bonne adhérence. Ce sera donc une économie pour ceux qui veulent miniaturiser et fiabiliser leur base roulante de robot.
L’histoire
Avec l’aide de Nicolas, membre de l’association, nous avions ce besoin de réduire la largeur de la base roulante sur nos 2 robots de la coupe de France de robotique et de maximiser la largeur des roues motrices (surtout sur la version Lego). Juste avant cette situation de covid, nous avons eu l’idée d’inventer cette roue codeuse magnétique après différents brainstormings pour obtenir les avantages cités ci-dessous.
Nous avons pu faire les premiers tests en Juillet 2021 lors de la coupe de France de robotique et validé le fonctionnement.
Auparavant, nous avions testé les NXT Angle Sensor, et la mécanique Lego pour obtenir une pression suffisante au sol demandait une hauteur d’au moins 17 à 20 cm. Il s’est donc avéré que cette nouvelle roue codeuse magnétique ne faisant que 12cm de haut, permet vraiment un gain de place pour tout ce qu’on doit mettre d’autre dans un robot 😉 (autres mécanismes, cartes électroniques, capteurs, etc.).
Fonctionnement
En utilisant un simple aimant bipolaire, le composant AS5048B est capable d’échantillonner le champ magnétique pour créer les pas d’un codeur. Le champ magnétique n’étant pas parfaitement concentrique, une fonction de correction est proposée. En mode X4 (comptage de tous les fronts montants et descendants), il est possible d’atteindre 16384 pas par tour, ce qui est extrêmement précis.
En interrogeant en I2C le composant AMS, on obtient la position exacte de l’aimant, et donc de la roue attachée, dans le champ magnétique. A partir de là, il suffit de faire les calculs de trigonométrie pour obtenir le déplacement effectué entre 2 points. Ce dispositif est donc compatible avec du Lego Mindstorm ou une Raspberry Pi ou toute autre carte électronique qui possède un port I2C.
Le coût d’une roue codeuse magnétique est estimé à un peu plus de 200€.
Les bénéfices et les avantages
- Carter créé en impression 3D.
- Résolution de 14-bit (16384 positions/révolution).
- Interface I2C directement accessible (3.3V ou 5V).
- Un simple aimant basique 2 pôles est nécessaire.
- Aucun contact de frottement entre la roue et le codeur qui pourrait freiner le robot.
- Compensation automatique de l’échantillonnage du champ magnétique qui n’est pas sphérique.
- Immunisé contre les champs magnétiques extérieurs.
- Compatible Lego Mindstorm et ev3dev.
- Roue plaquée au sol par ressort et éviter l’effet rebond et perdre l’odométrie.
Résultats
Photos
Démonstration du concept
Composition
- High Resolution Position Sensor : AS5048B
- Rail linéraire (CPC MR7MN)
- Aimant 6×2.5mm axial (469-1075-ND)
- Roulement 6704ZZ
- Joint Torique 35 x 2mm NBR (JT101703502)
- Visses, écrous, rondelles, ressort, fils
- PCB Mag sensor
- PCB Connecteur
- DIP switch 2 positions
- Carter en impression 3D PLA
Futures améliorations et upgrades
Tester l’impression en résine et un type de résine ABS pour vérifier que le carter ne bouge plus.
Maintenir plus fermement la roue qui coulisse, surtout si elle est peu appuyée au sol.