Nwlapcug.com


Come creare una modulazione di larghezza di impulso (Pwm) in un modulo di Verilog per eseguire un motore / Servo

Come creare una modulazione di larghezza di impulso (Pwm) in un modulo di Verilog per eseguire un motore / Servo


Una 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 al fine di creare un pwm.

Istruzioni

1

Così come funziona un pwm?

Avendo un segnale periodico rettangolare, cambiamo il duty cycle (modulare) per essere più piccolo o più grande e quindi controllare il nostro dispositivo.

Perché usare un PWM?

È una semplice digitale alla tecnica di conversione analogica che non richiede un ADC.

2Come creare una modulazione di larghezza di impulso (Pwm) in un modulo di Verilog per eseguire un motore / Servo


Ok, così lascia pensare cosa ingressi, uscite, registri e contatori avremo bisogno e quale disegno che vogliamo creare.

Voglio utilizzare le otto opzioni sulla scheda FPGA Spartan al controllo come mio motore / servo si muove o come veloce o lento che voglio farlo spostare.

Ingressi: orologio, 8 interruttori
Uscite: pwm
Registra: pwm
Contatori: contatore a 16bit (vi spiegherò perché 16 bit più tardi)

3

Sapere qual è la velocità di clock di FPGA e quale periodo che si desidera utilizzare.

Ho una scheda FPGA Spartan con un clock di 50MHz. Mi piacerebbe rinfrescare il segnale ogni 1 millisecondo (t). Applichiamo il seguente calcolo per individuare il periodo di forma d'onda (p)

p = t * FPGA clock

Nel mio caso:

p = .001 seconds * 50MHz = 50000

Conoscere mio p è importante al fine di calcolare il mio ritardo di passaggio (sd):

sd = p / 256 = 195

Perché utilizzare 256? Io sarò con 8 interruttori per controllare mio servo / motore, quindi in 2 ^ 8 = 256.

4

Infine vogliamo utilizzare il nostro contatore come il nostro ciclo di lavoro. Per calcolare quanti bit comporre il nostro contatore che usiamo:

log2(SD) = quanti bit è il nostro contatore

Mentre il contatore è minore di sd (ritardo di fase) moltiplicato per il valore di interruttori (che può variare da 0 a 255), questo è il nostro ciclo di lavoro.

Consigli & Avvertenze

  • Quando si crea il registro contatore che devi averlo inizializzato a zero altro vostro programma non funzionerà.