A modulazione di larghezza di impulso è un modo per controllare la rotazione o la posizione di un motore elettrico o servo . Utilizzando Verilog HDL , vi mostrerò come è facile utilizzare i contatori in modo da creare un PWM . Cose che ti serviranno
Xilinx ISE
FPGA
Servo /motore
Mostra più istruzioni
1
Così come fa un lavoro PWM ?
< p > Avere un segnale rettangolare periodico , cambiamo il duty cycle ( modulare ) per essere più piccolo o più grande , e quindi controllare il nostro dispositivo .
Perché usare un PWM ?
si tratta di una semplice digitale tecnica di conversione analogico che non richiede un ADC .
2
Ok , così lascia pensare che cosa ingressi, uscite, registri e contatori avremo bisogno e di cui il design che si vuole creare .
voglio utilizzare gli otto switch sulla scheda FPGA Spartan per controllare come il mio motore /servo si muove o come veloce o lento ho bisogno di spostare
Ingressi: . clock, 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit contatore ( spiegherà perché 16 bit dopo)
3
sapere che cosa è la velocità di clock del chip FPGA e quale periodo che si desidera utilizzare .
ho un Spartan scheda FPGA con 50MHz di clock . Vorrei aggiornare il segnale ogni 1 millisecondo ( t ) . Noi applichiamo il seguente calcolo per trovare il periodo della forma d'onda ( p ) per
p = t * FPGA orologio
Nel mio caso :
p = 0,001 secondi * 50MHz = 50000
Conoscendo il mio p è importante al fine di calcolare il mio passo di ritardo ( sd ) :
sd = p /256 = 195
Perché ho usato 256 ? Userò 8 interruttori per controllare il mio servo /motore, in modo 2 ^ 8 = 256 .
4
Infine vogliamo usare il nostro contatore come il nostro ciclo di lavoro . Per calcolare il numero di bit che compongono il nostro contatore usiamo :
log2 ( sd ) = quanti bit è il nostro contatore
Mentre il contatore è inferiore a SD ( ritardo di fase ), moltiplicato per il valore di switch ( che può variare da 0 a 255) , questo è il nostro ciclo di lavoro .