Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

Speed limit for PCI 1426

Hi,

 

I am currently using the PCI 1426 Frame Grabber with an E2V(Atmel) Aviiva SM2 1014 Line scan camera. (please see attached spec sheet)

OS: WinXP, NI-IMAQ 4.0

Language: C++

 

The camera is running on freerun mode and has a max line rate of 53kHz (or 18.8us per line).

I am using the imgPulseCreate function to generate a pulse on the end of each line. The parameter IMG_FRAME_DONE is being used to trigger the pulse generator.

This pulse is routed to a PCI 6115 DAQ board to generate a waveform to control a galvo scanner.

 

The image results are fine, and the boards seems to be synchronized.

 

The problem is that the fastest line rate I can get (by monitoring the pulse trigger) is approximately 10ms and it is not stable (ranges from 10-25ms).

Is this a speed limitation on the PCI 1426? Is there anything else I can do to speed up and achieve a stable linerate?

 

Thanks !

 

Kenny

 

 

 

 

0 Kudos
Message 1 of 5
(3,455 Views)

Did I understand you well?

You use the camera in free run mode so it takes lines whenever it feels to do so Smiley Happy

Once you get a line, you generate a trigger pulse to control the galvo scanner, whatever that may be Smiley Surprised

Your explanation sounds just like if you’re using the camera as a trigger source for something else while the camera should be triggered via the 15 pins sub-D connector.  

I think you shouldn't use the free run mode but use a controlled timing mode like mode 2 or 3.

In mode 2 I managed to get full speed line rate with an earlier type of AViiVA line scan camera and a PCI 1426 frame grabber. 

How many lines do you use for 1 frame?

What’s the galvo scanner for? Is that your light source?
0 Kudos
Message 2 of 5
(3,435 Views)

From what you have described, it sounds like you are taking 53,000 frames/sec (1 frame-per-line) and having the 1426 drive an output on FRAME_DONE. My hunch would be that the card is dropping frames without acquiring them because you have a buffer extracted, causing the hardware to stall when it hits your extracted buffer. You likely will have trouble keeping up if you extract every single buffer at this rate. Can you combine more than one line per frame? This will cut down the frame rate considerably. You can also try increasing the size of your buffer ring such that you have more time to absorb delays before frames are dropped. You should post some code so we have a better idea of what your acquisition loop looks like.

 

Eric 

0 Kudos
Message 3 of 5
(3,427 Views)

Hi, 

 

Thanks for the replies!

Please find attached the code that I used.

One is with no sync and just 1 line per aquistion.

The other is with the sync and the 512 lines for each aquisition.

 

 

Alain S. 

1) Yes, the camera is in free-run mode

It was chosen to run in this mode so we don't have to generate a trigger for it.

I could try to generate a waveform to contorl it from the PCI 6115 but that takes up a counter.(which is not ideal for us)

 

2) The trigger pulse is to update the analog ouput on the PCI 6115. Each trigger pulse will cause a new point to be generated.

The analog output is generated to control a galvo-scanner to scan a laser bean across a sample. Every time a line is taken by the camera, it will move the laser beam to the next location by moving the galvo-scanner.

 

3) Yes, I am trying to use the camera as a trigger source.

How did you generate a trigger for the camera? another DAQ board? External function generator?

 

4) I am taking the image line by line, but I am trying to generate an image from 512 lines. So it would be 512 lines per frame.

 

 

BlueCheese

 

1)Yes, it is 1 frame per line now.

The FRAME_DONE trigger is generated at each lines. So does that mean 1426 generates the pulse at each line (which is what I want). I am not sure if FRAME_DONE is referring to the same frame as we are. But I am trying to get 512 lines of data to produce an image, but having a trigger generate with each line.

 

2) How would I know if the card is dropping frames? More specifically, is my method of determining the speed correct?

 

 

Thanks!!!

 

Kenny

Download All
0 Kudos
Message 4 of 5
(3,407 Views)

At first I used an encoder that was driven by the product to trigger the camera. But since the production speed was very stable (servo drives) I replaced the encoder, wheel & mechanical construction with the cheapest Timer/Counter card the, PCI 6601. According to the line speed entered by the operator a puls train is generated at the correct frequency.

 

If I understood you well you project a laser beam on a sample and want to make a picture of the beam on the sample.

Both camera and laser are moved over the sample to scan it completely.

So both laser beam and camera should be triggered at the same time. 

Is that it?

 

I don't if it's possible but I would move the sample and keep a fixed position for both camera and laser.

Then use an encoder driven by the sample to trigger both camera and laser. You can also generate a pulse train synchronised with the sample speed.

 

Since you take control over the camera you can go as fast as 53000 lines/sec.

 

If you have a frame of only 1 line, you get a line every what : 100µs, even less? Do you think your code can keep up that rate?

The length of one frame depends on the time needed by the computer to analyse one frame.

0 Kudos
Message 5 of 5
(3,389 Views)