Une autre méthode que le PWM (vue dans la précédente publication), rarement vue (hormis de par la personne qui me l'a enseigné que je salue au passage) et pourtant bien plus performante, la Modulation Binaire - Binary Modulation. Elle se révèle vraiment efficace surtout lorsqu’il s’agit de contrôler un grand nombre de sorties avec un fort échantillonnage (résolution).
À chaque cycles, on compare le nombre de cycles enregistrés dans la variable "Cycle" à la constante "CycleMax" dépendant à l'échantillonnage désiré. Pour n = 4 bits, nous aurons CycleMax = n = 4. Si "Cycle" est supérieur ou égal, on le réinitialise à 0. Puis on applique, à la sortie "Out", l’état du bit de la variable "Value" indexé par le compteur "Cycle".
La variable "Period", correspondant à la période du prochain cycle, est le résultat de "IntialPeriod" multiplié par 2 à la puissance "Cycle". Enfin, on incrémente le compteur "Cycle".
|
Notre rapport cyclique "Rcy" est bien modulé en conséquence par la variable "Value".
La Modulation Binaire permet un gain (traitement global et/ou énergie) non négligeable que ce soit sur un microcontrôleur ou un FPGA. |
|
Remarque : Pourquoi partir du bit de poids faible plutôt que celui de poids fort ?
Car en partant du bit de poids faible, nous passons par la multiplication (décalage des bits vers la gauche) plutôt que la division. Et nous nous abstenons, ainsi, d'une éventuelle division par 2 d'un nombre impaire (Si le calcul de "InitialPeriod" était mauvais). Cependant, si le nombre de sorties est vraiment conséquent et l'échantillonnage élevé, afin de mieux répartir la charge globale sur le temps, nous pouvons diviser équitablement les sorties en deux listes. Chacune partant du bit de poids opposé. Ainsi, on évite la charge "brusque" demandée lors des cycles à faible période. |