Een pulse width modulation is een manier om de rotatie of de positie van een elektrische motor of servo controle . Met behulp van Verilog HDL , zal ik laten zien hoe gemakkelijk het is om tellers te gebruiken om een PWM creëren . Wat je nodig hebt Xilinx ISE FPGA Servo /motor Toon Meer Aanwijzingen 1 Dus hoe werkt een PWM werk ? het hebben van een periodiek rechthoekig signaal , de duty cycle veranderen we ( moduleren ) kleiner of groter te zijn en daarom onze apparaat te bedienen . Waarom een PWM ? het is een eenvoudig digitaal te analoog conversie techniek die een ADC . Ok 2 niet nodig , dus laten denken wat ingangen, uitgangen , registers en tellers zullen we nodig hebben en welk ontwerp we willen creëren . ik wil de acht schakelaars op de Spartan FPGA bord gebruiken om te bepalen hoe mijn motor /servo beweegt of hoe snel of langzaam ik wil dat het Ingangen verplaatsen : . klok , 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit teller ( zal uitleggen waarom 16 bits later ) 3 weten wat is de kloksnelheid van de FPGA en welke periode u wilt gebruiken . ik heb een Spartaanse FPGA bord met een 50MHz klok . Ik wil graag het signaal vernieuwen om de 1 milliseconde ( t ) . Wij hanteren de volgende berekening om de golfvorm periode ( p ) p t * FPGA klok In mijn geval = vinden : p = 0,001 seconden * 50MHz = 50000 Weten mijn p is belangrijk om mijn stap vertraging ( sd ) te berekenen : sd = p /256 = 195 Waarom heb ik 256 gebruikt? Ik zal met behulp 8 schakelaars aan mijn servo /motor aan te sturen , dus 2 ^ 8 = 256 . 4 Tenslotte willen we onze teller gebruiken als onze duty cycle . Om te berekenen hoeveel bits componeren onze teller gebruiken we : log2 ( sd ) = hoeveel bits is onze balie Terwijl de teller is minder dan sd ( stap vertraging ) vermenigvuldigd met de schakelaars waarde ( die kan variëren van 0 tot 255 ) , dit is onze duty cycle .
|