Bonsoir,
Pour résumer, la petite carte associée à un servo modélisme (micro ou supérieur) offre les fonctionnalités suivantes :
- Activer ou désactiver le moteur du servo
- Contrôler la position du servo
- Limiter les débattements min et max (ou pas)
- Limiter la vitesse de rotation (ou pas)
- Limiter l'accélération (ou pas)
- Limiter le couple (ou pas)
- Récupérer la position courante,
- Récupérer la vitesse courante,
- Récupérer le couple courant,
- Récupérer la température du moteur (optionnel, si thermistance installée),
- Récupérer la tension d'alimentation,
- Régler les coefficients PID de la boucle d'asservissement (compliance)
- Programmer des seuils d'alarme (température, courant, tension batterie, erreur de communication)
- Allumer/éteindre une LED située sur la carte.
Du point de vue matériel, la carte est compatible d'une tension d'alimentation 8.4V (Lipo 2S) en direct (10V maximum), et elle peut piloter un moteur jusqu'à 3.6A maximum (bridée à 1A pour un micro servo). Le capteur de position doit être un potentiomètre (analogique) ou un encodeur magnétique (à sortie PWM).
La carte fonctionne de manière autonome ; c'est à dire que la dernière consigne reçue est mémorisée et s'applique jusqu'à la prochaine consigne reçue. Pas besoin de renvoyer une consigne périodiquement pour maintenir la position du servo.
Plusieurs cartes peuvent être raccordées en parallèle sur une même UART, via un adaptateur (TTLinker ou équivalent).
Ainsi, il est possible de piloter jusqu'à 252 cartes en parallèle. Chaque carte dispose de son propre identifiant configurable (1..252) . Le débit de la liaison série est validée jusqu'à 1Mbps. Le maximum doit se situer autour des 4Mbps.
Quelques fonctionnalités avancées permettent :
- d'interroger une carte pour vérifier son bon raccordement/fonctionnement (ping),
- de restaurer la configuration usine de la carte (factory reset),
- de redémarrer une carte (reboot).
Si l'UART est configurée à 1Mbps, il est possible d'envoyer au moins 1000 messages par seconde.
La carte supporte les communication en mode "broadcast". Un même message peut contenir plusieurs consignes destinées à plusieurs servos.
C'est grosso modo ce que fait n'importe quel servo intelligent du commerce, du genre Dynamixel, Feetech, Lynxmotion, Lewansoul, etc.
Mais je ne prétends pas que mon code soit aussi fiable et performant que les produits du commerce actuels. Cela reste un prototype bricolé sur un coin de table !
La première fonctionnalité qui me semble particulièrement intéressante est de pouvoir récupérer la position et la vitesse des servos à tout instant :
- C'est utile pour calibrer un robot multipatte (mesure des neutres des articulations)
- C'est utile pour vérifier la trajectoire réelle d'une patte par rapport à la trajectoire planifiée dans le code, voire de l'optimiser.
La seconde fonctionnalité intéressante pourrait être la récupération du couple afin de détecter le contact d'une patte avec le sol.
La troisième est la capacité à ajuster le PID de l'asservissement en position/vitesse/couple :
- Suppression des phénomènes de tremblement des membres et réduction des grésillements en charge !
- Programmation d'une légère "compliance" (logicielle).
Je pense que le plus gros défaut pour l'instant est que la carte est trop grande par rapport au micro servo. En janvier, je pense faire une troisième itération de conception matérielle pour essayer de compacter le design. En outre, fin décembre, je m'attends à recevoir une carte similaire adaptée aux servos standards à fort couple, permettant de tenir des courants plus forts (5 à 10A). Les fonctionnalités seront identiques à la version micro servo.
Petit à petit je me rapproche de la conception d'une carte de contrôle pour servo à base de moteur brushless et d'encodeur magnétique... pas à pas. Je ne me vois pas utiliser 12 cartes Tinymovr ou Moteus, ou encore 6 cartes Odrive, pour l'instant, sans passer par une phase préalable prototypage par moi même, pour comprendre comment ca fonctionne.
Patrick.