Electronique et pilotage
Architecture
Contrôleur moteur brushless
Généralités
Ce contrôleur doit nous permettre de piloter le moteur principal de type brushless. Comme celui des trottinettes reçues est pourvu d'un capteur à effet hall, nous avons privilégié des modèles prenant en charge ce type de capteur.
Il existe plusieurs modèles, les principales différences étant :
- La puissance du moteur qu'elle peut gérer.
- La plage de tension acceptée.
- La gestion (ou pas) d'un capteur à effet hall.
- Le prix.
- Les possibilités de pilotage (direction, freinage, vitesse ...).
- Les infos récupérables (vitesse typiquement).
- La qualité de construction.
Le but de ce projet étant d'essayer de tirer les prix vers le bas, nous avons ciblé des modèles peu chers : entre 8 et 15€ globalement. Il en existe évidemment des beaucoup plus onéreux, mais pas sûr qu'ils soient pertinent pour ce projet sans compter qu'ils dynamiteraient le budget du projet et son éventuelle futur développement (on parle ici de contrôleur à 300€, soit le prix d'une trottinette neuve ...).
La grande question : et celui de la trottinette alors ? Pas réutilisable ?
Excellente question ... Théoriquement tout à fait, maintenant plusieurs obstacles se dressent :
- Suivant les modèles les constructions sont complètement différentes et souvent le contrôleur est intégrée avec d'autres circuits. Compliqué à isoler ...
- Nécessite de faire du retro engineering pour comprendre comment ça marche : et oui, pas de documentation fourni par les constructeurs. Pas de bras, pas de chocolat ...
- Les cartes sont souvent tropicalisées : on asperge les cartes d'un vernis spécial qui va recouvrir la carte et les composants ce qui va les protéger des attaques extérieures (et notamment de l'humidité). Inconvénient : souvent ce vernis est une m***e à virer et complique encore plus le retro engineering.
Et puis fondamentalement, un contrôleur brushless (électroniquement parlant) c'est très basique : 6 transistors, quelques résistances, quelques condensateur et un circuit de contrôle (qui est souvent un microcontrôleur). Et c'est justement sur cette dernière partie que le bas peu blessé : il faut ensuite programmer ce microcontrôleur pour qu'il fasse le bon boulot et donc le développement de ce genre de chose peu prendre du temps. En fait tout dépend du niveau de performance qu'on veut à la fin. Dans notre cas il est plus que concevable de faire nous même notre propre contrôleur.
Voici d'ailleurs quelques liens vers des librairies et des circuits open source de contrôleur qui peuvent servir de base de reflexion :
- http://electronoobs.com/eng_arduino_tut91.php
- https://www.youtube.com/watch?v=-ymTE-Nivzw
- https://github.com/simplefoc/Arduino-FOC
Références commandées/testées
Ref #1
https://fr.aliexpress.com/item/33058313772.html?spm=a2g0s.9042311.0.0.27b26c37gTjE3F
D'entrée de jeu j'ai eu des problème avec cette ref : dès que je mets du courant (et rien d'autre) deux des transistors d'un étage de push-pull s'active en même temps, ce qui créé mathématiquement un court-circuit (grosse conso de courant et ils se mettent à devenir chaud très rapidement).
J'ai par la suite découvert en testant d'autre refs que si le capteur hall n'est pas branché, ça peut donner des comportement de ce genre. Donc soit ma carte était défectueuse, soit l'absence de capteur à effet hall le perturbait. Affaire à suivre ...
Attention : pas de radiateur fourni pour évacuer la chaleur ...
Lien(s) utile(s) :
Ref #2
Testé avec succès. Pas mal d'avantage à ce modèle :
- Accepte une large gamme de tension
- Radiateur fourni
- Freinage possible (pas testé encore)
- Il y a des sorties visiblement pour récupérer la vitesse (pas testé encore°
Inconvénient :
- Certains pins sont en 5V (comme le frein) : brancher ce pin directement à un ESP32 fonctionnant en 3V3 va le faire griller. Il faut mettre un transistor en interface ou un level-shifter.
Ref #3
https://fr.aliexpress.com/item/1005001338387485.html?spm=a2g0s.9042311.0.0.27b26c37gTjE3F
Version avec capteur à effet hall. Pas testée à ce jour. Ressemble énormément à la ref#1 (et c'est sûrement la même), mais suite à mes essais avec la ref #1 je voulais redonner une chance à ce modèle, j'ai donc pris une couleur différente.
Ref #4
Il s'agit du modèle fourni par La Fabrique des Mobilités.
Pas de grande difficulté à le piloter (faut juste comprendre le pinout).
Problème : il est conçu pour des vélos électriques et sans autre artifice ne fait donc tourner la roue que dans un sens. Idéalement pour le projet il faudrait pouvoir faire tourner la roue dans les deux sens.
Microcontrôleur
Le microcontrôleur et le circuit qu'on va programmer et qui va faire le chef d'orchestre avec tout ces modules. Il en existe des tonnes de modèles différents, mais un en particulier semble être particulièrement adapté à notre cas : l'ESP32.
Pourquoi qu'il est si bien pour nous :
- Se programme aisément sous Arduino.
- Très connu des makers et donc bien documenté.
- Pas cher (mais vraiment pas cher du tout).
- Puissant.
- Wifi.
- Bluetooth.
- CAN.
- Nombreuses entrées/sorties.
Capteur angulaire
L'idéal sur tous les plans semble d'utiliser un capteur à effet hall : sur le principe il s'agit de capteur qui sont capable de mesurer l'angle d'un champ magnétique. En plaçant un aiment sur un élément tournant, et en fixant à proximité un capteur de ce type, il est alors possible de mesurer l'angle de l'élément tournant (et sans que les deux se touchent !).
Exemple de module qu'on trouve en Chine :
https://fr.aliexpress.com/item/4001152960981.html?spm=a2g0o.cart.0.0.102e3c00zo6B8Q&mp=1
Commande sans fil
Manette de PS3
Généralités
Cette manette, avec la librairie dédiée (voir lien plus bas), est assez simple à utiliser. Il suffit de récupérer/configurer l'adresse MAC de la manette en la connectant en USB à un PC et en utilisant l'utilitaire "SixaxisPairTool" joint à cette doc (ou en lien dans l'article ci-dessous) et de l'insérer dans la commande begin. Il y a plusieurs exemples fournis qui se passent globalement de commentaire car bien documenté et peu complexe.
Juste quelques remarques/constatations :
- La manette que j'ai acheté (non officielle, copie chinoise) ne marche que dans un sens, c'est à dire qu'elle envoie les infos (bouton, position des joysticks ...) mais n'en reçoit pas. En effet d'après la librairie on est sensé pouvoir piloter la vibration et les leds qui servent normalement à indiquer quel joueur on est.
- Idem pour l'accéléromètre, il n'est pas renvoyé par la manette (est-il seulement présent ??)
Liens
- Manette commandée chez Aliexpress : https://fr.aliexpress.com/item/1005001922251456.html?spm=a2g0s.9042311.0.0.79066c37JbxHGE
- Librairie : https://github.com/jvpernis/esp32-ps3
- Outil pour l'adresse MAC joint à doc.
- Article : https://www.anyonecanbuildrobots.com/post/esp32-ps3-controller-robotic-arm-awesome
Pas de commentaires