LabVIEWForum.de
Rechtecksignal / PWM ausgeben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Rechtecksignal / PWM ausgeben (/Thread-Rechtecksignal-PWM-ausgeben)



Rechtecksignal / PWM ausgeben - Tobias2 - 18.03.2018 19:18

Hallo zusammen,

ich habe an meinen myRio einen Schrittmotorcontroller angeschlossen, welcher bei jeder steigenden Flanke den Motor um einen Schritt weiter dreht. Bei der Ansteuerung mittels PWM ExpressVI in Labview dreht der Motor auch, diese ist jedoch für meine Zwecke unzureichend. Die PWM Express VI kann nur Werze zwischen 40 Hz und 40 kHz ausgeben, ich benötige jedoch einen größeren Frequenzbereich (ca. 10 Hz bis 50 kHz). Außerdem muss eine genaue Anzahl Schritte an den Motor ausgegeben werden können (in einer bestimmten Frequenz), um Verfahrweg und Verfahrgeschwindigkeit zu bestimmen. Meine Überlegung ist jetzt, ein Step Signal in einer For Schleife auszugeben, welche den Ausgang high und wieder low setzt. Das Step Signal (aus dem Simulation-> Signal Generation Bereich) gibt jedoch einen double-Wert aus. Wie kann ich diesen Wert in einen boolean Wert transformieren? Oder gibt es bereits fertige VIs, welche eine Schrittmotorsteuerung bieten? Bei meiner Recherche konnte ich keine finden.

Schönen Abend noch und viele Grüße,
Tobias


RE: Rechtecksignal / PWM ausgeben - Tobias2 - 27.03.2018 16:07

Hallo,

ich bin mit meinem Problem schon weiter gekommen, jedoch haben sich direkt neue Probleme ergeben:
Ich erzeuge meine steigende Flanke mit Hilfe eines "Timed loop", welche als Timing Source die 1 MHz Clock verwendet. in der Schleife befindet sich ein Negierelement, welches mit einem Schieberegister gekoppelt ist. Bei jedem Durchlauf der Schleife wird nun der Zustand dieses Schieberegisters gewechselt. Die Frequenz dieses Wechsels wird mit dem Periodeneingang der Schleife gesteuert. Bei einer Periode von 1 müsste somit theoretisch eine Frequenz von 500 kHz möglich sein (eine Periode an, eine aus). Die erreichbare Periodendauer beträgt jedoch 80 bis 120 µs, was einer Frequenz von 8,33 bis 12,5 kHz entspricht. Ich benötige für meinen Anwendungsfall eine Frequenz von ca. 40-50 kHz. Weiß jemand, wie ich die Flankenerzeugung beschleunigen kann oder gibt es andere Möglichkeiten, eine bestimmte Anzahl steigender Flanken in diesem Frequenzbereich zu erzeugen?

Ich bin für jede Hilfe dankbar!

Viele Grüße
Tobias


RE: Rechtecksignal / PWM ausgeben - GerdW - 27.03.2018 18:04

Hallo Tobias,

deine Anforderungen sprechen ganz klar dafür, den FPGA selbst zu programmieren...


RE: Rechtecksignal / PWM ausgeben - Tobias2 - 27.03.2018 18:46

Hallo Gerd,

Die Schritte auf eine andere Art zu erzeugen oder die timed loop zu beschleunigen ist mit dem "normalen" Labview also nicht möglich?
Also muss ich im Prinzip das gleiche Programm in Labviev FPGA erstellen und kompilieren? Oder ist der Aufbau ganz anders? Der Rechner und der myRio stehen in der Uni, kann mir das deshalb gerade nicht anschauen.

Vielen Dank für deine Hilfe!

Gruß
Tobias


RE: Rechtecksignal / PWM ausgeben - GerdW - 28.03.2018 08:33

Hallo Tobias,

Zitat:Die Schritte auf eine andere Art zu erzeugen
Du könntest statt selbst den DO zu togglen eben mit den fertigen PWM-Funktionen arbeiten. Aber die gefallen dir ja nicht…

Zitat:die timed loop zu beschleunigen ist mit dem "normalen" Labview also nicht möglich?
Du redest hier von einem myRIO mit begrenzter Rechenkapazität - und willst eine Schleife mit 1MHz Takt laufen lassen und einem Jitter unter 100ns? Ich bin schon erstaunt, dass du überhaupt 40-50kHz hinbekommst! Nein, die TWL wirst du nicht "beschleunigen"…
(Außer natürlich alles unnötige, insbesondere Indicators, aus der Schleife entfernen.)

Zitat:Also muss ich im Prinzip das gleiche Programm in Labviev FPGA erstellen und kompilieren? Oder ist der Aufbau ganz anders? Der Rechner und der myRio stehen in der Uni, kann mir das deshalb gerade nicht anschauen.
LabVIEW bringt Beispiel-Projekte mit, die zeigen, wie man Daten zwischen RT und FPGA austauscht…


RE: Rechtecksignal / PWM ausgeben - jg - 28.03.2018 12:18

(28.03.2018 08:33 )GerdW schrieb:  
Zitat:die timed loop zu beschleunigen ist mit dem "normalen" Labview also nicht möglich?
Du redest hier von einem myRIO mit begrenzter Rechenkapazität - und willst eine Schleife mit 1MHz Takt laufen lassen und einem Jitter unter 100ns? Ich bin schon erstaunt, dass du überhaupt 40-50kHz hinbekommst! Nein, die TWL wirst du nicht "beschleunigen"…
Der OP bekommt ca. 10 kHz hin. Auch das ist schon extrem erstaunlich, je nachdem wie diese MyRIO DIO VIs aufgebaut sind. Wenn da die ScanEngine dahinterliegt, dann wären 10 kHz eine Wahnsinns-Update-Rate, wenn da ein entsprechender FPGA-Code dahinterliegt, dann müssen ja Einzelwerte per "WertSetzen" an den FPGA-Code weitergegeben werden, dann sind die erreichten 10 kHz sicher auch schon extrem gut.

@ Tobias: Ich stimme Gerd zu, Update-Raten des DO von > 1kHz wirst du verlässlich nur bei direkter Umsetzung im FPGA hinbekommen.

Gruß, Jens


RE: Rechtecksignal / PWM ausgeben - Tobias2 - 28.03.2018 16:49

Hallo,

vielen Dank für eure Antworten.
Zitat:Du könntest statt selbst den DO zu togglen eben mit den fertigen PWM-Funktionen arbeiten. Aber die gefallen dir ja nicht…
Gefallen tut mir die schon, ich muss nur eine definierte Anzahl an Schritten erzeugen können. Ist es wohl möglich, das PWM Signal mit einem Counter zu zählen und bei erreichen der gewünschten Schrittanzahl das PWM Signal "abzuschalten" (mit einem Case oder ähnlichem) oder schafft ein Counter diese Updateraten (40 kHz) auch nicht? Dies würde ich morgen erst probieren, ansonsten muss ich wohl im FPGA programmieren.

Viele Grüße
Tobias


RE: Rechtecksignal / PWM ausgeben - GerdW - 28.03.2018 17:44

Hallo Tobias,

Zitat:schafft ein Counter diese Updateraten (40 kHz) auch nicht?
Da alles über die gleiche ScanEngine läuft: wohl eher nicht...


RE: Rechtecksignal / PWM ausgeben - Tobias2 - 28.03.2018 21:43

Hallo Gerd,

dann werde ich mir wohl direkt den FPGA anschauen.

Vielen Dank für alle Beiträge!

Viele Grüße
Tobias