We have recently bought a NI PCIe-1024 frame grabber. I am new to imaging applications and need some support to get started.
We have a camera viewing a scene that is illuminated by a pulsed light source such as a strobe.
We want to use the PCIe-1427 as the master for triggering both the camera and the strobe light.
The first trigger (Ch 0) shall send TTL signals to the camera at 30 Hz (30 frames/second).
The second trigger (Ch 1) shall send bursts of pulses to the strobe light at e.g., 10 kHz. This trigger shall only be sending pulses every other frame, so that we can record alternating illuminated and dark frames in order to perform background subtractions.
I have looked at the LL Pulse Generation.vi and other sample vis with some limited success. I modified the vi to generate two trigger outputs (see attachment). The vi works, and I can see the trigger signals coming from the PCIe-1427 on an oscilloscope, and images are acquired.
However, I needed to set the timeout to a high number to prevent trigger 2 (which shall drive the strobe) from timing out. I hope that there is a more elegant way of doing it.
Also, I only got the vi to work for continuous pulse trains, not single shots nor bursts of pulses. If I set the Continuous? input of the IMAQ Configure List.vi to one shot, and the Pulse Mode of the IMAQ GeneratePulse3.vi to Single Pulse, I get the error message Error -1074397154 occurred at IMAQ Copy Acquired Buffer.vi:4 Possible reason(s): NI-IMAQ: No acquisition in progress. Or is there a way of counting the pulses that are being sent out without having to hook the frame grabber up to a DAQ board? If I could count the pulses of a pulse train and stop it after a specified number of pulses have been counted, I could live with a pulse train.
BTW, I can grab individual frames and sequences with MAX.
NI Software : LabVIEW version 10
NI Hardware : Image Acquisition (IMAQ) device PCIe-1427 Driver Version : NI-IMAQ 4.5 OS : Windows 7
Thanks for moving this over to the correct board. I will still continue to help until we find you a solution.
Did you say that the attached VI is working for a continuous acquisition? Does it trigger the camera and the light at the rate you want?
I don't think we can directly use this pulse VI to generate "bursts", but we may be able to try a couple different things for you. How many pulses do you want in each burst? How often and how many times do you want to generate this burst?
Thanks for your help.
Yes the attached vi works for continuous acquisitions. It does trigger the camera and the light at the rate I want. The only inconvenience is that it will never (i.e., only after ~1000000 ms) time out, so we will not be able to notice if there is a problem.
I want to be able to pulse for example, every other frame, or say after every ten frames for 1 or several frames. I do not know yet how many pulses I will need for a sufficient illumination level. The the pulse frequency of the light source can be varied from 0.1 to 100 kHz and typically 500 ns long pulses.
I had some ideas under the shower this morning and figured out a solution myself.
First of all, the time out tunred out to be a non-issue. In my application, the laser will never be ON for more than a few seconds at a time. A timeout of 5000 ms will be plenty for this. I only needed to bump up the timeout to a large value, because I wanted to view the trigger signal in an oscilloscope. I do not need this long timeout in my application.
Second, I could generate bursts of trigger signals by counting occurrences and turning the trigger OFF after a specified number of occurrences. This seems to be working fine.
By using two sets of occurrences (one for the frame trigger, and another for the laser) in nested loops, I can create conditions when to send out laser bursts and when not, e.g., sending a burst on every uneven frame/occurrence number.
If you do not have a more elegant solution, I think I am set for now. I have some other questions, but those are probably better processed in a new thread. Thanks.