Una modulación de ancho de pulso es una manera de controlar la rotación o la posición de un motor eléctrico o servo . Utilizando Verilog HDL , voy a demostrar lo fácil que es utilizar contadores con el fin de crear un pwm . Cosas que necesitará
Xilinx ISE
FPGA
Servo /motor
Ver Más instrucciones
1
Entonces, ¿cómo funciona un pwm ?
< p> tener una señal rectangular periódica , cambiamos el ciclo de trabajo ( modular ) para ser más pequeño o más grande y por lo tanto controlar nuestro dispositivo.
Por qué utilizar un PWM ?
es un sencillo digital técnica de conversión analógica que no requiere de un ADC .
2
Ok , por lo que permite pensar que las entradas, salidas, registros y contadores vamos a necesitar y que el diseño que desee crear .
quiero usar los ocho interruptores en el tablero FPGA Spartan para controlar cómo mi motor /servo se mueve o qué tan rápido o lento que quieren que se mueva
Entradas: reloj, 8 . switchesOutputs : pwmRegisters : pwmCounters : 16 bit contador ( a explicar por qué 16 bits después)
3
saber cuál es la velocidad de reloj de la FPGA y qué período desea utilizar.
tengo un Spartan tarjeta FPGA con un reloj de 50MHz . Me gustaría actualizar la señal de cada 1 milisegundo (t ) . Aplicamos el siguiente cálculo para encontrar el período de forma de onda ( p )
p = t * FPGA reloj
En mi caso :
p = 0,001 segundos * 50 MHz 50000
Conociendo mi p es importante para el cálculo de mi tardanza paso ( sd ) :
sd = p /256 = 195
¿Por qué yo uso 256 ? Me va a utilizar 8 interruptores para controlar mi servo /del motor , por lo que 2 ^ 8 = 256.
4
Finalmente queremos usar nuestro contador como nuestro ciclo de trabajo . Para calcular la cantidad de bits componen nuestro contador usamos :
log2 ( sd ) = la cantidad de bits es nuestro contador
Mientras que el contador es inferior sd (retardo de paso ), multiplicado por el valor de los interruptores (que puede variar de 0 a 255) , éste es nuestro ciclo de trabajo .