La performance ultime du contrôle en boucle fermée d'un moteur est souvent limitée, non pas par les paramètres PID ou la puissance du matériel, mais par une étape fondamentale souvent négligée : la mesure de la vitesse elle-même. Dans un projet utilisant un ESP32 pour piloter un moteur à courant continu avec codeur, lorsque la vitesse cible descend en dessous de 60 tr/min, un phénomène se produit fréquemment : la valeur de vitesse affichée sur le moniteur de l'interface saute entre des entiers, passant par exemple de 10 à 11 tr/min sans jamais afficher de valeurs intermédiaires comme 10,3 ou 10,7 tr/min. Cette discrétisation n'est pas un bug logiciel, mais une limite d'erreur de quantification découlant de la nature physique des signaux du codeur et du mécanisme d'échantillonnage. Comprendre cette limite est la première étape pour surmonter les difficultés de mesure à basse vitesse.
Le codeur produit une séquence d'impulsions discrètes, non pas une valeur analogique continue. Prenons l'exemple d'un codeur magnétique à effet Hall courant : il génère 11 impulsions sur la phase A et 11 sur la phase B par tour (soit 11 lignes/tour). Cela signifie qu'à chaque rotation complète du moteur, le système n'obtient que 22 événements de comptage définis (ou 44 après décodage en quadrature des phases A et B). Ces événements sont des points isolés sur l'axe temporel, dont l'intervalle est déterminé par la vitesse instantanée du moteur. À 300 tr/min, l'intervalle entre deux impulsions est d'environ 5,45 ms ; à 10 tr/min, cet intervalle s'allonge à 66 ms. Le cœur du problème est que nous ne pouvons pas "prédire" le moment d'une impulsion avant qu'elle ne se produise ; nous ne pouvons que l'enregistrer lorsqu'elle arrive. Tous les algorithmes de mesure de vitesse sont, par essence, un comptage temporel ou quantitatif de cette séquence d'événements discrets.
La méthode N classique (mesure d'angle à temps fixe) est construite sur cette réalité physique : on fixe une période d'échantillonnage T (par exemple 50 ms), on compte le nombre d'impulsions N du codeur reçues pendant cette période, puis on calcule la vitesse via la formule Vitesse_tr/min = (N / PPR) * (60 / T), où PPR est le nombre d'impulsions par tour. Cette méthode est excellente à haute vitesse car N est grand, ce qui rend l'erreur de quantification (±1 impulsion) proportionnellement faible. Cependant, à basse vitesse, N tend vers 1 ou même 0, et l'erreur absolue de ±1 se transforme en une énorme erreur relative. Par exemple, à 10 tr/min, le nombre d'impulsions théorique N est d'environ 0,18, mais le résultat de l'échantillonnage ne peut être que 0 ou 1 : le premier donne une vitesse de 0 tr/min, le second donne un saut à environ 333 tr/min, ce qui est totalement déformé. Cela explique pourquoi, dans les systèmes en boucle ouverte avec variation de charge, le système en boucle fermée oscille à basse vitesse : le contrôleur reçoit un retour de vitesse erroné, ce qui rend sa prise de décision invalide.
Un défi plus profond vient des imperfections du codeur lui-même. L'uniformité de la magnétisation des éléments Hall, les défauts d'alignement des pôles magnétiques, et les micro-retards introduits par le routage du PCB peuvent tous entraîner un déphasage entre les signaux A et B qui s'écarte du 90° idéal. Cette non-orthogonalité provoque une gigue périodique dans les intervalles d'impulsions après le décodage par quadruplement, ce qui aggrave l'incertitude du comptage dans une fenêtre temporelle fixe. Ainsi, "l'imprécision de mesure" n'est pas un défaut logiciel, mais une loi physique que les systèmes embarqués doivent accepter. Tout correctif logiciel qui tente de contourner cette loi finira par révéler sa fragilité dans des conditions de fonctionnement réelles.
2. Méthodes N et T : principes physiques et limites d'application
Face aux contraintes physiques de la précision de mesure, les ingénieurs ont développé deux stratégies fondamentalement différentes : la méthode N (mesure d'angle à temps fixe) et la méthode T (mesure de temps à angle fixe). Il ne s'agit pas simplement de deux algorithmes, mais de deux solutions orthogonales au même problème physique, chacune ayant ses propres domaines d'application et limites infranchissables.
2.1 Méthode N : précision à haute vitesse basée sur une référence temporelle
L'idée centrale de la méthode N est de "mesurer le changement d'angle à l'aide d'une règle temporelle fixe". Son expression mathématique est :
Vitesse_tr/min = (ΔCount / PPR) × (60 / ΔT)
Où ΔT est la période d'échantillonnage fixe prédéfinie (par exemple 20 ms) et ΔCount est l'incrément d'impulsions capturé pendant cette période. Le goulot d'étranglement de la précision de cette méthode est directement lié à l'erreur de quantification de ΔCount. Lorsque ΔCount = 100, une erreur de ±1 entraîne une erreur relative de 1 % ; lorsque ΔCount = 1, l'erreur monte à 100 %. Par conséquent, la méthode N est naturellement adaptée aux scénarios à haute vitesse : plus la vitesse est élevée, plus le nombre d'impulsions par unité de temps est grand, plus ΔCount est grand, et plus l'erreur de quantification est faible en proportion. Au-dessus de 300 tr/min, avec un codeur à 11 lignes et une période d'échantillonnage de 20 ms, ΔCount est stable autour de 11, ce qui fournit un retour utilisable.
Cependant, la raison pour laquelle la méthode N échoue à basse vitesse réside dans sa philosophie même : elle force la dimension temporelle à être la seule variable contrôlée, tout en traitant le changement d'angle (le nombre d'impulsions) comme une réponse passive. Lorsque la vitesse du moteur tombe en dessous d'un certain seuil (par exemple 30 tr/min), le nombre d'impulsinos attendu pendant ΔT est inférieur à 1, et le système tombe dans un dilemme binaire de "tout ou rien". Dans ce cas, le contrôleur ne voit pas une courbe de vitesse lisse, mais un signal carré passant de 0 à 1 à 0 à 1, et l'algorithme PID est inévitablement instable avec une entrée aussi non linéaire.
2.2 Méthode T : précision à basse vitesse basée sur une référence angulaire
La méthode T adopte une approche radicalement différente : "mesurer le changement de temps à l'aide d'une règle angulaire fixe". Sa formule principale est :
Vitesse_tr/min = 60 / (ΔT × PPR)
Ici, ΔT n'est plus une valeur fixe définie par l'utilisateur, mais l'intervalle de temps réel entre deux impulsions consécutives du codeur (ou impulsions après quadruplement). Comme chaque mesure est basée sur un événement physique réel (le front de l'impulsion), la précision de la mesure de ΔT peut atteindre la microseconde (en fonction de la résolution du temporisateur) et n'est pas affectée par la vitesse. Lorsque la vitesse du moteur diminue, l'intervalle entre impulsions ΔT augmente naturellement, mais la valeur mesurée elle-même reste précise : à 10 tr/min, ΔT est d'environ 66 ms, et si l'erreur de mesure est de 1 μs, l'erreur relative n'est que de 0,0015 %.
L'avantage physique de la méthode T est irremplaçable à basse vitesse. Des données expérimentales montrent qu'avec un temporisateur haute fréquence de 100 kHz (résolution de 10 μs), la résolution de vitesse à 10 tr/min est de l'ordre de 0,01 tr/min, bien supérieure à la résolution de l'ordre du tr/min de la méthode N. Cependant, la méthode T a une autre limite dure : l'échec à haute vitesse. Lorsque la vitesse augmente à 300 tr/min, ΔT est d'environ 5,45 ms. Avec une résolution de temporisateur de 10 μs, la valeur mesurée de ΔT est de 545, et l'erreur de quantification de ±1 correspond à une erreur de 0,18 %, ce qui est acceptable. Mais à 3000 tr/min, ΔT est d'environ 0,545 ms, la valeur mesurée n'est que de 54,5, et l'erreur de ±1 passe à 1,8 %. De plus, et c'est plus grave, à des intervalles aussi courts, le temporisateur haute fréquence peut introduire des erreurs système non négligeables en raison de retards de réponse d'interruption, de pipeline d'instructions, etc. Dans ce cas, la méthode N, avec sa capacité de moyenne sur un grand nombre d'échantillons, devient plus robuste.
2.3 Le "triangle impossible" de la mesure de vitesse
La comparaison entre les méthodes N et T révèle une contradiction fondamentale dans le contrôle en temps réel embarqué : l'inconciliabilité entre la résolution temporelle (fréquence d'échantillonnage) et la résolution fréquentielle (précision de la vitesse). Cela constitue le "triangle impossible" de la mesure de vitesse des moteurs :
- Haute résolution temporelle (période d'échantillonnage courte) : nécessite un petit ΔT, ce qui est bon pour capturer les changements dynamiques, mais réduit ΔCount dans la méthode N, diminuant ainsi la précision.
- Haute résolution fréquentielle (faible erreur de vitesse) : nécessite un grand ΔCount (méthode N) ou une mesure précise de ΔT (méthode T), mais la première nécessite une longue période, et la seconde est difficile à mesurer précisément à haute vitesse en raison d'un ΔT trop petit.
- Couverture large plage de vitesses : pour répondre à la fois aux exigences de précision à haute et basse vitesse, une seule méthode ne suffit pas.
L'essence de cette relation triangulaire est une manifestation spécifique du théorème d'échantillonnage de Shannon dans les systèmes mécatroniques : pour reconstruire sans distorsion un signal de fréquence f, la fréquence d'échantillonnage doit être supérieure à 2f. Les impulsions du codeur peuvent être considérées comme un signal carré modulé en fréquence par la vitesse, dont la fréquence fondamentale f = Vitesse_tr/min × PPR / 60. Lorsque f s'approche ou dépasse la bande passante du système d'échantillonnage, une distorsion de repliement est inévitable. La fréquence d'échantillonnage de la méthode N est déterminée par ΔT (par exemple 50 Hz), tandis que la "fréquence d'échantillonnage" de la méthode T est déterminée par la fréquence des impulsions elle-même, qui varie avec la vitesse.