LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Best way to optimize the readout of a photodiode using motorized stepping motors?

Hi, I'm relatively new to LabVIEW but have now got a mirror motorized with two stepping motors. I reflect a LASER beam off the mirror and onto a photodiode, whose value is read into the computer via an oscilloscope. I would like to optimise this signal somehow by moving the motors but can't see how without using brute force (which might be ok with just two degrees of freedom, but ideally I will add some more later).

 

Is there any function that does this easily using the position of the motors and the signal input?

Thanks for the help!

 

Kane

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

I think you are going to have to build a feedback loop to determine if the photodiode signal is getting stronger or weaker.   Technically you probably could use a PID control, but this would probably be an overkill.

 

You could use half stepping once the photodiode signal "peaks".

 

Generally speaking, measure the diode, step one axis, measure again, analyze signal strength.  You would have to decide how to handle the situation where one axis is peaked, but then peaking the other axis allows for the first axis to peak again.

 

From the LabVIEW POV you could use a state machine to loop through the measurement, analysis, and axis movement.  In a simple method you could use a shift register to hold the 'last value' and compare the new value against that.

 

So generally speaking you could use PID functions to manage your system, or you could use a more simple approach using a state machine in a loop with a few states to measure, analyze, and control motion.

-------
Mark Ramsdale
-------
0 Kudos
Message 2 of 5
(3,045 Views)

Hi Mark,

 

Thanks for your reply. I've managed to get a VI that plots the intensity at each x/y coordinate by just moving through them at a defined interval for each axis but this is extremely slow, even for using just two degrees of freedom (in future I will add more probably).

 

The question now I guess is: do you know of any algorithm to analyze the signal after stepping in a given direction that'll determine the next move?  

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

Hi,

 

One possibility to speed up mapping, is using a rastering approach.  Set the motion to an appropriate speed, set the DAQ at a corresponding sample rate and number of points, then turn on the motion and trigger the DAQ, and measure a "line" across the target.  Then step to the next line and repeat. 

 

As far as finding a nest move algorithm I have always built my own.  Generally I look at the delta between measures and make some estimate for the next move.  Some systems it is a 90%, some it is a 50%, etc...   Have you checked the example finder in LabVIEW?

-------
Mark Ramsdale
-------
0 Kudos
Message 4 of 5
(3,024 Views)

Hi Mark,

 

I'll look into the rastering thing to explore the whole space, maybe then find the max of that and do a fine scan there. I played around with Fuzzy Logic yesterday which was really interesting, but a bit overkill for this set-up I think! heheh

 

I'm also trying to look to see if one cannot use the downhill simplex algorithm from the optimization palette to get the next move, but this only accepts functions it seems, and not physical inputs. Any ideas of how to take that apart and use it/would it work?

 

Thanks again for the help!

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