Prologue
Tout est parti d'un post de Sylvain sur les forums de Planete-sciences, à propos d'un générateur PWM Spread Spectrum pour moteur. Il proposait d'en coder un en VHDL. Seulement voilà, le VHDL, c'est comme croiser les rayons, c'est mal... Alors, en voici un, mais en Verilog ! Plus sérieusement, à quoi sert un modulateur SSPWM ? Les moteurs des robots sont généralement commandés en PWM (modulation de largeur d'impulsion). Pour faire varier la puissance moyenne envoyée au moteur, on les alimente par un créneau de fréquence constante dont on fait varier le rapport cyclique. La fréquence de commande est choisie :- au dessus d'une certaine valeur (pour que le courant moyen dans le moteur ne varie pas trop) : si on accepte une variation de P% de l'intensité dans le moteur sur une période, alors : $f = \frac{R}{2\cdot L \cdot ln(1-P/100))}$. On n'oubliera pas de prendre en compte dans R la résistance du moteur et celle des transistors du pont en H.
- au dessous d'une certaine valeur, pour limiter les pertes lors de la commutation des transistors du pont en H.

Spectre PWM (bleu) / spread spectrum idéal (rouge)
Les FPGA
En deux mots, les FPGA sont des circuits programmables contenant des portes logiques en vrac. Lors de la programmation, on décrit la façon dont on va relier ces portes logiques entre elles. On peut ainsi implémenter la fonction logique que l'on souhaite. La fonction à obtenir peut être décrite sous forme schématique, ou textuelle, à l'aide d'un langage spécialisé (Verilog, VHDL, SystemC, AHDL, Abel, ...). Les FPGA ont un intérêt tout particulier en robotique : ils permettent d'ajouter des fonctionnalités simples et pratiques à moindre frais à un micro-contrôleur :- générateur PWM (pour tous les moteurs du robot, parce que ça ne nécessite que peu de portes)
- compteur d'impulsions et décodeur de quadrature des roues codeuses, au passage on peut même calculer la position du robot
- génération des signaux de contrôle des servos
- réception, filtrage, stockage et traitement de vidéo numérique
- contrôle des effecteurs, mise en forme des capteurs, ...