howhenno.ru

Como criar uma largura de pulso modulação (PWM) em um módulo Verilog executar um Motor / Servo

Uma modulação de largura de impulso é uma maneira de controlar a rotação ou a posição de um motor elétrico ou de servo.


Usando Verilog HDL, vou mostrar como é fácil de usar contadores, a fim de criar um PWM.

Coisas que você precisa

  • Xilinx ISE
  • FPGA
  • Servo / motora
  • Então, como um PWM funciona?

    Tendo um sinal rectangular periódica, que alterar o ciclo de funcionamento (modular) a ser menor ou maior e, portanto, controlar o nosso dispositivo.

    Por que usar um PWM?

    É uma digital simples para técnica de conversão analógica que não requer um ADC.



  • Ok, então vamos pensar o que entradas, saídas, registradores e contadores que vai precisar e que o projeto que queremos criar.

    Eu quero usar as oito chaves no conselho espartano FPGA para controlar como os meus motor / servo se move ou o quão rápido ou lento Eu quero que ele se mova.

    Entradas: relógio, 8 interruptores
    Saídas: PWM
    Registros: PWM
    Contadores: 16 bit contador (vai explicar por que 16 bits mais tarde)

  • Saiba o que é a velocidade do clock do seu FPGA e o período que você gostaria de usar.



    Eu tenho uma placa FPGA Spartan com um relógio de 50MHz. Gostaria de atualizar o sinal a cada 1 milissegundo (t). Nós aplicamos o seguinte cálculo para encontrar o período de forma de onda (p)

     p relógio FPGA = t *

    No meu caso:



     p = .001 segundos * 50MHz = 50.000

    Sabendo o meu p é importante, a fim de calcular o meu atraso passo (sd):

     dp = P / 256 = 195

    Por que eu uso 256? I será utilizando 8 comutadores para controlar o meu servo / motor, de modo que 2 ^ 8 = 256.

    Adicionando sd para o módulo Verilog
  • Finalmente, queremos utilizar o nosso contador como o nosso ciclo de trabalho. Para calcular quantos bits compõem o nosso contador que usamos:

    log2 (sd) = quantos bits é o nosso balcão

    Enquanto o contador é inferior a sd (atraso passo) multiplicado pelo valor de interruptores (que pode variar de 0 a 255), este é o nosso ciclo de trabalho.

    código final para um PWM usando 8 comutadores para controlar o ciclo de trabalho

dicas avisos

  • Ao criar o contador de registo deve ser sempre inicializado a zero então o seu programa não vai funcionar.
Compartilhar em redes sociais:

Similar