A modulação de largura de pulso é uma maneira de controlar a rotação ou a posição de um motor elétrico ou servo . Usando Verilog HDL , vou mostrar como é fácil de usar contadores , a fim de criar um PWM . Coisas que você precisa
Xilinx ISE
Servo /motor FPGA
Mostrar Mais instruções
1
Então, como funciona um PWM ?
Ter um sinal retangular periódica , mudamos o ciclo de trabalho ( modular ) a ser maior ou menor 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 necessita de um ADC .
2
Ok , então vamos pensar o que entradas, saídas, registradores e contadores vamos precisar e que projeto que queremos criar .
Eu quero usar as oito chaves na placa FPGA Spartan para controlar como meus movimentos motor /servo ou o quão rápido ou lento que eu quero que ele se mova
Entradas: . relógio , 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit counter ( vai explicar por que 16 bits mais tarde ),
3
Saiba o que é a velocidade do clock do seu FPGA e qual período você gostaria de usar.
Eu tenho um Spartan placa FPGA 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 da forma de onda (p )
p = t * relógio FPGA
No meu caso :
p = 0,001 segundo * 50MHz = 50000
Conhecendo meu p é importante , a fim de calcular o meu passo demora ( sd ) :
sd = p /256 = 195
por que eu uso 256 ? Eu vou estar usando 8 interruptores para controlar o meu servo /motor , então 2 ^ 8 = 256.
4
Finalmente , queremos utilizar o nosso contador como o nosso ciclo de trabalho . Para calcular quantos bits compor nosso balcão usamos :
log2 (dp ) = quantos bits é o nosso contador de
Enquanto o contador for menor que sd (atraso passo ) multiplicado pelo valor de interruptores (que pode variar de 0 a 255), este é o nosso ciclo de trabalho .