A pulsbreddsmodulation är ett sätt att styra rotationen eller positionen av en elmotor eller servo . Använda Verilog HDL , kommer jag att visa hur lätt det är att använda räknare för att skapa en PWM . Saker du behöver
Xilinx ISE
FPGA
Servo /motor
Visa fler instruktioner
1
Så hur gör en PWM arbete?
att ha en periodisk rektangulär signal , ändrar vi arbetscykeln ( modulera ) att vara mindre eller större och därmed styra vår enhet .
Varför använda en PWM ?
p Det är en enkel digital till analog konvertering teknik som inte kräver en ADC .
2
Ok , låter så tänk vad ingångar, utgångar, register och räknare som vi behöver och vilka motiv vi vill skapa .
jag vill använda de åtta omkopplarna på Spartan FPGA styrelsen att styra hur min motor /flyttar servo eller hur snabbt eller långsamt jag vill att det ska flytta Ingångar
: . klocka , 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit räknare ( kommer att förklara varför 16 bitar senare ) Addera 3
Vet vad är klockhastigheten på din FPGA och vilken period du vill använda .
jag har en Spartan FPGA board med en 50MHz klocka . Jag skulle vilja uppdatera signal varje 1 millisekund ( t ) . Vi tillämpar följande beräkning för att hitta vågformsperioden ( p ) katalog
p = t * FPGA klocka
I mitt fall :
p = 0,001 sekunder * 50MHz = 50000
känna min p är viktigt för att beräkna min steg fördröjning ( sd ) :
sd = p /256 = 195
Varför jag använder 256 ? Jag kommer att använda 8 växlar för att styra min servo /motor , så 2 ^ 8 = 256 .
4
Slutligen vill vi använda vår disk som vår plikt cykel . För att beräkna hur många bitar komponera vår disk vi använder :
log2 ( sd ) = hur många bitar är vår disk
Medan räknaren är mindre än sd ( steg fördröjning ) multiplicerat med omkopplare värde ( som kan variera från 0 till 255 ) , är det vår plikt cykel .