Une modulation de largeur d'impulsion est un moyen de contrôler la rotation ou la position d'un moteur électrique ou servo. En utilisant Verilog HDL , je vais montrer comment il est facile d' utiliser les compteurs afin de créer un PWM. Choses que vous devez
FPGA Xilinx ISE
servo /moteur
Voir Plus Instructions
1
Alors, comment fonctionne un PWM ?
< p> avoir un signal rectangulaire périodique , nous changeons le cycle ( moduler ) d'être plus ou moins grande et donc de contrôler notre dispositif.
Pourquoi utiliser un PWM ?
c'est une simple numérique technique de conversion analogique qui ne nécessite pas un ADC .
2
Ok , laisse penser que les entrées , les sorties, les registres et les compteurs , nous aurons besoin et dont la conception que nous voulons créer .
je veux utiliser les huit commutateurs sur la carte FPGA Spartan pour contrôler la façon dont mon moteur /servo se déplace ou comment rapide ou lent je veux que ça bouge
Entrées: . horloge , 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit compteur ( vais vous expliquer pourquoi 16 bits tard )
3
savoir quelle est la vitesse d'horloge de votre FPGA et quelle période vous souhaitez utiliser .
J'ai un Spartan FPGA avec une horloge 50MHz . Je voudrais rafraîchir le signal toutes les 1 milliseconde (t). Nous appliquons le calcul suivant pour trouver la période de forme d'onde (p )
p = t * FPGA horloge
Dans mon cas :
p =, 001 secondes * 50MHz = 50000 Photos
Connaissant mon p est important pour calculer mon retard de l'étape ( sd ) :
sd = p /256 = 195
Pourquoi ai-je fait 256? Je vais utiliser 8 interrupteurs pour contrôler mon servo /moteur , donc 2 ^ 8 = 256 .
4
Enfin nous voulons utiliser notre compteur que notre cycle de travail . Pour calculer le nombre de bits composent notre compteur que nous utilisons:
log2 ( sd ) = nombre de bits est notre compteur
Alors que le compteur est inférieure sd ( retard de l'étape ) multiplié par la valeur des commutateurs ( qui peut varier de 0 à 255) , c'est notre cycle de travail .