Comment faire pour créer une modulation de largeur d`impulsion (MLI) dans un module Verilog pour faire fonctionner un moteur / Servo
En utilisant Verilog HDL, je vais montrer comment il est facile d`utiliser des compteurs afin de créer un MLI.
Les choses dont vous aurez besoin
- Xilinx ISE
- FPGA
- Servomoteur
Alors, comment fonctionne un MLI?
Avoir un signal rectangulaire périodique, on change le cycle de travail (modulation) à être plus petits ou plus gros et donc contrôler notre dispositif.
Pourquoi utiliser un PWM?
Il est un appareil photo numérique simple technique de conversion analogique qui ne nécessite pas d`ADC.
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 de la carte FPGA Spartan pour contrôler la façon dont mes mouvements moteur / servo ou comment rapide ou lent, je veux bouger.
Entrées: horloge, 8 interrupteurs
Sorties: MLI
Registres: MLI
Compteurs: 16 compteur de bits (expliqueront pourquoi plus tard 16 bits)Savoir ce qui est la vitesse d`horloge de votre FPGA et quelle période vous souhaitez utiliser.
J`ai une carte FPGA Spartan avec une horloge de 50 MHz. 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 * horloge FPGA
Dans mon cas:
p = .001 secondes * 50MHz = 50000
Connaissant mon p est important afin de calculer mon retard de l`étape (sd):
sd = p / 256 = 195
Pourquoi ai-je utiliser 256? Je vais utiliser 8 interrupteurs pour contrôler ma servo / moteur, de sorte que 2 ^ 8 = 256.
Enfin, nous voulons utiliser notre compteur comme notre cycle de travail. Pour calculer le nombre de bits composent notre compteur, nous utilisons:
log2 (sd) = nombre de bits est notre compteur
Alors que le compteur est inférieur à SD (retard de pas) multiplié par la valeur de commutateurs (qui peut aller de 0 à 255), ceci est notre cycle de service.
Conseils Avertissements
- Lors de la création du compteur de registre, vous devez avoir initialisé à zéro sinon votre programme ne fonctionnera pas.