Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
07.08.2015, 23:02 (Dieser Beitrag wurde zuletzt bearbeitet: 07.08.2015 23:10 von Felix777.)
wie könnte ich mit der NI USB 6002 Karte an den digitalen Ausgängen PWM-Pulse für einen Servo-Motor generieren? Eine Lösung für analoge Ausgänge habe ich gefunden:
Bei der Lösung wird eine Basic Finction Generator.vi verwendet. Die Lösung passt mir aber nicht ganz, weil meine Karte nur 2 analoge Ausgänge hat und ich brauche 7 Servos anzusteuern. Deswegen möchte dafür digitale Ausgänge verwenden.
Ich dachte, dass man für digitale Ausgänge auch eine Signalform erzeugen und an DAQmx Write Digital Output .vi übergeben könnte. Bei digitalen Ausgängen funktioniert es aber so nicht. (
Fast alle Beispiele im Netz verwenden für die Puls Erzeugung einen Clock oder Timebase.
Die Karte hat folgende Daten:
COUNTER
Number of counters 1
Resolution 32-bit
Counter measurements Edge counting, rising or falling
Counter direction: Count up
Counter source PFI 0 or PFI 1
Maximum input frequency 5 MHz
Minimum high pulse width 100 ns
Minimum low pulse width 100 ns
Lies dir die Specs deiner Karte durch, z.B. hier und dann unter "Spezifikationen":
Deine DOs kannst du nur mit Softwaretakt schalten (also immer nur 1 Wert aus deinem Programm heraus), und der Counter dieser Karte kann auch keine Pulserzeugung.
Diese Karte ist zur Erzeugung von vielen PWM-Signalen einfach nicht geeignet.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(08.08.2015 08:33 )jg schrieb: Diese Karte ist zur Erzeugung von vielen PWM-Signalen einfach nicht geeignet.
Das ist mir schon längst klar, nur leider momentan habe ich keine andere Wahl. Ich MUSS mit dieser Karte "tricksen".
(08.08.2015 08:33 )jg schrieb: Deine DOs kannst du nur mit Softwaretakt schalten (also immer nur 1 Wert aus deinem Programm heraus), und der Counter dieser Karte kann auch keine Pulserzeugung.
Wäre es möglich einen externen Counter anzuschließen und über diesen einen Counter alle digitale Outputs steuern?
Ich würde mich sehr freuen, wenn ihr mir bei zwei Punkten helfen könnt:
1) Wie kann man die Karte ergänzen(externer Counter oder so), damit die eigener Masen irgendwie funktioniert.
2) Welche andere minimale Lösung bzw. Karte würde passen, damit es wirklich gute PWM-Pulse erzeugen kann. Also, die Gesamtpulsbreite(high und low) ist 20 ms , die high Pulse sind: 0,5 ms (rückwärts Fahren), 2,4 ms (vorwärts Fahren), 1,5 ms (stehen bleiben).
So wie ich verstehe, ich bräuchte eine Karte mit einem schnellen Counter auf dem Board.
Ich möchte mich entschuldigen, ich weiß, dass manche meine fragen zu doof sind Ich habe aber leider nicht so viele Erfahrungen mit NI Hardware.
Danke im Voraus für eure Hilfe.
10.08.2015, 08:31 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2015 09:14 von GerdW.)
Deine Arbeitszeit scheint sehr preiswert zu sein: Was du an Aufwand reinsteckst, wäre in einer "normalen" Firma kaum möglich/sinnvoll…
Zitat:1) Wie kann man die Karte ergänzen(externer Counter oder so), damit die eigener Masen irgendwie funktioniert.
Man kann ein externes Gerät verwenden, welches vernünftig PWM-Signale ausgeben kann. Ich verwende gern die Boxen der Firma MicroControl! (Die verlangen aber eine CAN(open)-Anbindung…)
Wahrscheinlich gibt es aber auch Geräte, die sich per RS232 oder LAN ansteuern lassen!
Alternative: 3 weitere USB6002 mit zusammen 6 AOs…
Zitat:Also, die Gesamtpulsbreite(high und low) ist 20 ms , die high Pulse sind: 0,5 ms (rückwärts Fahren), 2,4 ms (vorwärts Fahren), 1,5 ms (stehen bleiben).
Du brauchst also 50Hz Grundfrequenz mit einer Einstellgenauigkeit von 0.1ms=10kHz oder 0.5% der Grundfrequenz. Die MicroControl-Boxen können das, deine USB6002 nicht!
Zitat:Ich habe aber leider nicht so viele Erfahrungen mit NI Hardware.
Dann ruft man in München an und lässt sich beraten…
Zitat:Also, die Gesamtpulsbreite(high und low) ist 20 ms , die high Pulse sind: 0,5 ms (rückwärts Fahren), 2,4 ms (vorwärts Fahren), 1,5 ms (stehen bleiben).
Du brauchst also 50Hz Grundfrequenz mit einer Einstellgenauigkeit von 0.1ms=10kHz oder 0.5% der Grundfrequenz. Die MicroControl-Boxen können das, deine USB6002 nicht!
Das wären nur 19 Schritte - so ein Servo kann doch mehr.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Der OP will ein 50Hz-PWM-Signal mit einem Duty von entweder 2.5%=rückwärts, 7.5%=stehen oder 12.0%=vorwärts ausgeben. Also muss er das Duty in 0.5%-Schritten einstellen können: das entspricht einer zeitlichen Auflösung von 0.1ms.
So interpretiere ich jedenfalls die doch sehr exakt wirkende Anforderung…
Beim PDF-Link geht es doch um Modellbau-Servos. Die Länge des HIGH-Signals entspricht dann einer Position des Servos. Bei 0,1 ms Auflösung und Signallängen von 0,5-2,4 ms entspricht das (ok, Denkfehler) 20 Positionen. Falls wirklich nur exakt die angesprochenen 3 Werte angesteuert werden müssen, dann hast du Recht, aber die Erfahrung besagt etwas anderes. Darauf wollte ich nur hinweisen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(10.08.2015 09:46 )jg schrieb:
Beim PDF-Link geht es doch um Modellbau-Servos. Die Länge des HIGH-Signals entspricht dann einer Position des Servos. Bei 0,1 ms Auflösung und Signallängen von 0,5-2,4 ms entspricht das (ok, Denkfehler) 20 Positionen.
Bei 2,4 ms bleibt der Servo stehen, bei 1,5 ms (stehen bleiben, laut Definition), bei 0,6 ms hat der Servo Problemen und knistert.