Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> Computer Programmeringsspråk >> Content
    Hvordan lage en Pulse Width Modulation ( PWM ) i en Verilog modul for å kjøre en Motor /Servo
    A pulsbreddemodulasjon er en måte å kontrollere rotasjon eller posisjon av en elektrisk motor eller servo. Ved hjelp Verilog HDL , vil jeg vise hvor enkelt det er å bruke tellere for å skape en PWM . Du trenger
    Xilinx ISE
    FPGA
    Servo /motor
    Vis flere instruksjoner
    en

    Så hvordan gjør en PWM arbeid ?
    < p> å ha en periodisk rektangulær signal , endrer vi driftssyklus ( modulere ) for å være mindre eller større og dermed kontrollere vår enhet.

    Hvorfor bruke en PWM ?
    p Det er en enkel digital til analog konvertering teknikk som ikke krever en ADC .
    2

    Ok , så la oss tenke hva innganger , utganger, registre og tellere vi trenger og hvilken design vi ønsker å skape .

    jeg vil bruke de åtte brytere på Spartan FPGA bord for å kontrollere hvordan min motor /servo beveger seg eller hvor fort eller sakte jeg vil den skal flytte

    Innganger: . klokke, 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit telleren ( vil forklare hvorfor 16 bits senere )
    3

    vite hva som er klokkehastighet på FPGA din og hvilken periode du ønsker å bruke.

    jeg har en Spartan FPGA bord med en 50MHz klokke . Jeg ønsker å oppdatere signal hver 1 millisekund (t ) . Vi bruker følgende beregning for å finne den bølgeform periode ( p )

    p = t * FPGA klokke

    I mitt tilfelle : en

    p = 0,001 sekunder * 50MHz = 50000

    vite min p er viktig for å beregne min trinn forsinkelse ( sd ) : en

    sd = p /256 = 195

    Hvorfor jeg bruke 256 ? Jeg skal bruke åtte brytere for å kontrollere min servo /motor , så 2 ^ 8 = 256 .
    4

    Til slutt ønsker vi å bruke vår telleren som vår plikt syklus. For å beregne hvor mange biter komponere vår teller vi bruker : en

    log2 ( sd ) = hvor mange biter er vår teller

    Mens disken er mindre enn sd (trinn forsinkelse) multiplisert med brytere verdi (som kan variere fra 0 til 255) , dette er vår plikt syklus.

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan bruke WPF TextBlock 
    ·Hvordan lage Legge Barer 
    ·Ramp Filter i MATLAB 
    ·Hvordan lage et Word Array i MIPS 
    ·Slik automatiserer Visio Med Powershell 
    ·Hvordan sette Timeout Sessions i iFrame 
    ·Slik viser en Custom Error Screen Når Omstart CF 
    ·Hvordan bruke understreng C Sharp 
    ·Slik konverterer BigInteger å Int 
    ·Hvordan å kompilere Fortran 77 på Ubuntu 
      Anbefalte artikler
    ·VB6 Run Time Error 70: Permission Denied 
    ·Hvordan legge til et nytt felt i en tabell med PHP for …
    ·Hvordan skrive en Visual C program som bruker et Mens e…
    ·Hvordan skille mellom Avkort og Slett 
    ·Hvordan bruke JavaScript Developer 
    ·Tilbakeringing for DLL 
    ·Slik løser Java Nedlasting Problemer 
    ·Hvordan skrive et program som oversetter en bokstavkara…
    ·Slik importerer filnavn til ComboBox i Visual Basic 
    ·Java Switch Statement Tutorial 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/