totsitlyred.com

Hoe om `n pulswydte modulasie (PWM) Skep in `n Verilog Module om `n Motor Begin / Serwo

`N Puls wydte modulasie is een manier om die rotasie of posisie van `n elektriese motor of servo beheer.


Die gebruik van Verilog HDL, sal ek wys hoe maklik dit is om aandele te gebruik ten einde `n PWM skep.

Dinge wat jy nodig het

  • Xilinx ISE
  • FPGA
  • Servo / motor
  • So hoe gaan `n PWM werk?

    Na `n periodieke vierkantige sein, verander ons die dienssiklus (moduleer) om kleiner of groter wees en dus ons toestel te beheer.

    Hoekom `n PWM gebruik?

    Dit is `n eenvoudige digitale na analoog omskakeling tegniek wat nie `n ADC vereis.

  • Ok, so laat dink wat insette, uitsette, registers en tellers sal ons nodig het en wat ontwerp ons wil skep.

    Ek wil die agt skakelaars gebruik op die Spartan FPGA raad om te bepaal hoe my motor / servo beweeg of hoe vinnig of stadig ek wil om dit te skuif.

    Insette: klok, 8 skakelaars
    Uitsette: PWM
    Registers: PWM
    Tellers: 16 bit toonbank (sal waarom 16 stukkies later verduidelik)

  • Weet wat is die klok spoed van jou FPGA en watter tydperk jy wil gebruik.



    Ek het `n Spartan FPGA raad met `n 50MHz klok. Ek wil graag die sein te verfris elke 1 millisekonde (t). Ons pas die volgende berekening van die golfvorm tydperk (p) vind

     p = t * FPGA klok

    In my geval:

     p = 0,001 sekondes * 50MHz = 50000

    Wetende dat my p is belangrik om my stap vertraging (sd) te bereken:

     sd = p / 256 = 195

    Hoekom het ek 256 gebruik? Ek sal met behulp van 8 skakelaars om my servo / motor te beheer, so 2 ^ 8 = 256.

    Toevoeging van sd om die Verilog module
  • Ten slotte wil ons ons toonbank gebruik as ons plig siklus. Om te bereken hoeveel stukkies komponeer ons toonbank wat ons gebruik:

    log2 (sd) = hoeveel stukkies is ons counter

    Terwyl die toonbank minder as sd (stap vertraging) vermenigvuldig met die skakelaars waarde (wat kan wissel 0-255) is, dit is ons plig siklus.

    Finale kode vir `n PWM met behulp van 8 skakelaars om die dienssiklus beheer

Wenke waarskuwings

  • Wanneer die skep van die register toonbank moet jy dit geïnisialiseer na nul anders jou program sal nie werk nie.
Deel op sosiale netwerke:

Verwante