Comment créer un Pulse Width Modulation (PWM) dans un module Verilog pour exécuter un moteur / Servo

12/07/2017 by admin

Comment créer un Pulse Width Modulation (PWM) dans un module Verilog pour exécuter un moteur / Servo


Une modulation de largeur d'impulsion est un moyen de contrôler la rotation ou la position d'un moteur ou un servomoteur électrique.

Utilisation de Verilog HDL, je vais montrer comment il est facile d'utiliser des compteurs afin de créer un pwm.

Instructions

1 Alors, comment fonctionne un pwm?

Avoir un signal rectangulaire périodique, nous changeons le cycle de travail (modulation) pour être plus petit ou plus grand, et donc contrôler notre dispositif.

Pourquoi utiliser un PWM?

Il est simple à la technique numérique de conversion analogique qui ne nécessite pas un ADC.

2 Comment créer un Pulse Width Modulation (PWM) dans un module Verilog pour exécuter un moteur / Servo


Ok, donc 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 mes moteur / servo se déplace ou comment rapide ou lent, je veux qu'il bouge.

Entrées: horloge, 8 interrupteurs
Sorties: pwm
Registres: pwm
Compteurs: 16 bits contre (expliqueront pourquoi 16 bits plus tard)

3 Comment créer un Pulse Width Modulation (PWM) dans un module Verilog pour exécuter un moteur / Servo


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 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 clock

Dans mon cas:

p = .001 seconds * 50MHz = 50000

Connaissant mon p est important afin de calculer mon étape retard (sd):

sd = p / 256 = 195

Pourquoi ai-je utiliser 256? Je vais utiliser 8 interrupteurs pour contrôler mon servo / moteur, de sorte que 2 ^ 8 = 256.

4 Comment créer un Pulse Width Modulation (PWM) dans un module Verilog pour exécuter un moteur / Servo


Enfin, nous voulons utiliser notre compteur comme notre cycle de service. Pour calculer le nombre de bits composent notre compteur que nous utilisons:

log2 (sd) = nombre de bits est notre compteur

Tandis que le compteur est inférieur à SD (étape retard) multipliée par la valeur des commutateurs (qui peut varier de 0 à 255), il est de notre rapport cyclique.

Conseils et avertissements

  • Lors de la création du compteur de registre, vous devez l'avoir initialisé à zéro sinon votre programme ne fonctionnera pas.

Articles Liés