12.01.2012, 14:52
Beitrag #1
|
labrat
LVF-Grünschnabel
Beiträge: 30
Registriert seit: Oct 2011
2011 DS2
2008
DE
|
Pulsrate eines externen Triggers ändern
Hallo,
ich verwende zum Ersten Mal eine DAQ-Karte (NI-PCI 6229) und hoffe Ihr könnt mir bei meinem Problem helfen. Ich benutze eine Kamera um Laserpulse aufzunehmen. Dazu steht ein externes Triggersignal (etwa 100Hz) zur Verfügung. Leider ist die maximale Framerate deutlich unterhalb dieser 100Hz. Nun möchte ich das externe Triggersignal mit der DAQ-Karte einlesen, die Pulsrepititionsrate verringern und wieder ausgeben. Sinn der Sache ist es also, aus einem 100Hz Trigger z.B einen 10Hz Trigger zu machen, mit dem die Kamera wieder vernünftig arbeiten kann.
Ich verwende momentan das Labview Example "Read_Dig_Chan.vi" um das Triggersignal einzulesen. Das klappt soweit auch ganz gut. Nur wie kann ich jetzt aus dem 100Hz Signal ein 10Hz machen?
Vielen Dank im voraus
|
|
|
12.01.2012, 19:12
Beitrag #2
|
|
|
16.01.2012, 13:04
Beitrag #3
|
labrat
LVF-Grünschnabel
Beiträge: 30
Registriert seit: Oct 2011
2011 DS2
2008
DE
|
RE: Pulsrate eines externen Triggers ändern
hallo und vielen Dank für den Vorschlag.
Die Idee klingt schonmal recht gut. Mittlerweile kann ich auch schon den Counter-Eingang der DAQ-Karte verwenden. Wenn ich es richtig verstanden habe, soll ich den Zähler abfragen und bei jedem Vielfachen von 10 (also 10, 20, 30...) z.B eine Case-Struktur auf True schalten, die dann wiederum auf einen Digitalen Ausgang schreibt. Oder sollte ich hier besser mit einer Event-Struktur arbeiten?
Egal wie, ich scheitere allerdings schon an der Abfrage ob der Zähler gerade ein Vielfaches von 10 ist. Klingt zwar eigentlich nicht schwer, ich weiß aber wirklich nicht wie ich das anstellen soll.
Vielen Dank nochmal
|
|
|
16.01.2012, 13:58
Beitrag #4
|
|
|
16.01.2012, 17:33
Beitrag #5
|
|
|
17.01.2012, 10:53
(Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2012 10:54 von eb.)
Beitrag #6
|
eb
LVF-Lernwilliger
Beiträge: 292
Registriert seit: Mar 2008
2014
2008
EN
12xxx
Deutschland
|
RE: Pulsrate eines externen Triggers ändern
Hallo labrat,
Ich bin mir jetzt nicht 100%sicher, aber hier meine Vermutung: Der ausgelesene CounterWert ist eben nicht immer ohne Rest teilbar, weil das SoftwareTiming nicht ganz exakt ist, schon gar nicht bei 5ms-Schleifenzeit. Ich würde das "Quotient and Remainder" mal testweise so ersetzen:
ist das besser; gehen so auch noch Pulse verloren?
Gruß
Edit: Ich wollte mal loswerden, dass dein VI eine saubere Struktur hat! So lässt sich sehr schnell alles erfassen und verstehen, sehr gut!
|
|
|
17.01.2012, 14:17
Beitrag #7
|
labrat
LVF-Grünschnabel
Beiträge: 30
Registriert seit: Oct 2011
2011 DS2
2008
DE
|
RE: Pulsrate eines externen Triggers ändern
Die Änderungen bringen leider keine Verbesserung. Es werden immernoch Pulse ausgelassen. Trotzdem vielen Dank für die Mühe, einen Versuch war es auf jeden Fall wert!
Ich habe auch schon versucht, die Wiederholrate der Schleifen (Momentan 5ms) zu ändern bzw. ganz wegzulassen: Keine Verbesserung.
Statt einer Lösung ist mir ein weiteres Problem aufgefallen:
Die Pulse des 10Hz Signals müssen genau mit denen des 100Hz Signals übereinstimmen. Wir wollen schließlich eine Kamera triggern, die relativ schnelle Laserpulse aufnimmt. Gibt es eine möglichkeit die Signale zu synchronisieren? Hab an einer anderen Stelle gelesen, dass Kanäle, die zu einem Task zusammengeführt sind, immer synchron laufen. Kann mir jeamnd dazu genaueres sagen?
|
|
|
17.01.2012, 15:21
Beitrag #8
|
eb
LVF-Lernwilliger
Beiträge: 292
Registriert seit: Mar 2008
2014
2008
EN
12xxx
Deutschland
|
RE: Pulsrate eines externen Triggers ändern
Ja,
standardmäßig sind alle Kanäle eines Tasks synchronisiert.
Aber: Du kannst nicht erwarten, dass das 100Hz-Signal exakt synchron mit dem 10Hz-Signal ist, wenn du das 100Hz-Signal erst misst, dann mit Software verarbeitest und dann wieder ausgibst als "Pseudo-10Hz-Signal". Wie gesagt, Software-Timing ist halt so eine Sache.
Wenn du synchron sein willst, dann würde ich vorschlagen:
Du erstellst einen Erzeuger-Task, mit Externer Triggerung (100Hz-Signal). Also bei exakt irgendeiner Flanke des 100Hz-Signals startet die AnalogeAusgabe deines 10Hz-Signals. Das ist schon ziemlich synchron dann... nach einer Weile (k.A. vllt. 1Tag) driften sie auseinander (µs-Bereich), weil die Clock der DAQ-Karte eben nicht 100% der Clk des 100Hz-Signals entspricht, weil eben auch diese Clks nicht zueinander synchronisiert sind
Es fragt sich, woher das 100Hz-Signal eigentlich kommt. Wenn es auch über dein Programm erzeugt wird, dann ließe es sich "noch synchroner" hinbekommen. (Durch Synchronisierung der Clks)
Gruß
|
|
|
| |