En puls bredde modulation er en måde at styre rotation eller position en elektrisk motor eller servo . Hjælp Verilog HDL , vil jeg vise hvor let det er at anvende tællere for at skabe en PWM . Ting du skal
Xilinx ISE
FPGA
Servo /motor
Vis Flere Instruktioner
1
Så hvordan gør en PWM arbejde?
< p > under en periodisk rektangulært signal , ændrer vi arbejdscyklus ( modulere ) for at være større eller mindre , og derfor styre vores enhed.
Hvorfor bruge en PWM ?
p Det er en simpel digital til analog konvertering teknik, der ikke kræver en ADC .
2
Ok, så lad os tænke, hvad input, output, registre og tællere , vi får brug for , og hvilke design, vi ønsker at skabe .
jeg vil bruge de otte kontakter på Spartan FPGA bord til at styre, hvordan min motor /servo flytter , eller hvor hurtigt eller langsomt jeg vil have det til at flytte
Indgange: . ur , 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit tæller ( vil forklare, hvorfor 16 bit senere)
3
vide, hvad er clock hastigheden på din FPGA og hvilken periode , du gerne vil bruge .
jeg har en spartansk FPGA bord med en 50MHz ur. Jeg vil gerne opdatere signal hver 1 millisekund (t). Vi anvender følgende beregning for at finde bølgeform periode ( p)
p = t * FPGA ur
I mit tilfælde : Hej
p = .001 sekunder * 50MHz = 50000
kende min p er vigtig for at beregne min trin forsinkelse ( sd) : Hej
sd = p /256 = 195
Hvorfor jeg bruge 256 ? Jeg vil bruge 8 switches til at styre min servo /motor, så 2 ^ 8 = 256. .
4
Endelig ønsker vi at bruge vores counter som vores pligt cyklus. At beregne, hvor mange bits komponere vores counter bruger vi : Hej
log2 (sd) = hvor mange bits er vores counter
tælleren er mindre end sd (trin forsinkelse) ganget med switches værdi ( som kan spænde fra 0 til 255 ), dette er vores pligt cyklus.