Comment faire pour créer une modulation de largeur d`impulsion (MLI) dans un module Verilog pour faire fonctionner un moteur / Servo

<

Contenu

  • Conseils avertissements
  • p>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 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.

      Ajout sd au module Verilog
    • 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.

      code final pour un PWM en utilisant 8 commutateurs pour contrôler le 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.
    Articles connexes