A Pulsweitenmodulation ist ein Weg , um die Drehung oder Position eines Elektromotors oder Servo steuern. Mit Verilog HDL , werde ich zeigen, wie einfach es ist, Zähler zu verwenden, um eine pwm schaffen. Things You
Xilinx ISE
FPGA
Servo /Motor
brauchen anzeigen Weitere Anweisungen
1
Wie funktioniert ein pwm Arbeit ?
< p> Mit einem periodischen Rechtecksignal , ändern wir die Einschaltdauer ( modulieren ) kleiner oder größer und somit steuern unser Gerät .
Warum ein PWM ?
Es ist eine einfache Digital Analog-Wandlung Technik , die nicht erfordert einen ADC .
2
Ok, so können denken, was Eingänge, Ausgänge, Register und Zähler werden wir brauchen und welches Design die wir schaffen wollen .
ich möchte die acht Schalter auf der Spartan FPGA-Board zu verwenden, um zu steuern , wie mein Motor /Servo bewegt oder wie schnell oder langsam ich es
Eingänge bewegen wollen : . Uhr, 8 switchesOutputs : pwmRegisters : pwmCounters : 16 bit Zähler ( wird erklären, warum 16 Bits später )
3
wissen Sie, was ist die Taktrate des FPGA und welchen Zeitraum Sie verwenden möchten .
ich habe einen Spartan FPGA -Board mit einem 50MHz Takt . Ich möchte erfrischen das Signal jedes 1 Millisekunde (t). Wir wenden die folgende Berechnung , um die Wellenform Zeitraum (p)
p = t * FPGA Uhr
In meinem Fall finden :
p = 0,001 Sekunden * 50MHz = 50000
Wissen mein p ist , um mein Schritt Verzögerung ( sd ) zu berechnen wichtig :
sd = p /256 = 195
Warum ich 256 ? Ich werde mit meinem 8 Schalter Servo /Motor zu steuern , so dass 2 ^ 8 = 256 .
4
Schließlich wollen wir unsere Zähler als unsere Pflicht Zyklus zu verwenden. Um zu berechnen, wie viele Bits komponieren unsere Zähler verwenden wir:
log2 ( sd ) = wie viele Bits ist unser Zähler
Während der Zähler weniger als sd (Schritt Verzögerung) durch den Schalter multipliziert (das kann von 0 bis 255 liegen ) , das ist unser Einschaltdauer.