I am designing a PID controller for my beam steering application. I have lateral position sensor detector (PSD) PSD LINK to detect the position of beam. The problem is that the output of sensor seems to be quite noisy than the required accuracy. The sensor has a resolution of 2.63 micrometers but the noise in sensor seems to be way higher. Here is the sensor output data when beam was stationary.Here is the sensor output.

I don't want to do any low pass filtering on the sensor data as it will reduce bandwidth of closed loop system, so I am left out with estimation of actual signals from the noisy data, as I could not reduced this noise further. Could anyone suggest what kind of estimations or observers should I use? How could I model this sensor? Will system identification in MATLAB help in modelling this sensor anyway? Also the histogram of the noisy data (from above plot) looks to follow Gaussian distribution as shown below.

Histogram of noisy data

I read about kalman filtering but I am not sure how to apply it in this particular application. How can I proceed further?

Thank you.


1 Answer 1


You already have the lowpass filter that you need. It's the control loop round the beam you are positioning.

You only need do as much lowpass filtering of the sensor that your control loop does automatically. For instance, if you're running a digital loop with a control repetition period of 1mS, then average all the sensor readings in 1mS and present them to the control loop. This will have no more phase shift than the latency inherent in the loop. If an analogue loop, then just drive the existing electronics with the wideband sensor signal. You'll have designed some sort of lowpass filter into the system and taken account of it when considering stability.

You are correct that any additional filtering after the sensor will eat into your stability margin, which will probably need a reduction in loop bandwidth to regain stability.

As you strive to make the loop wider, you will follow the sensor to higher modulation frequency. If the sensor is inherently noisy, you will follow more of the noise. Conventionally what we do is to choose a loop bandwidth as a compromise between the sensor and the effector noise, to get minimum overall output contribution from both.

If you have a noisy sensor, then your two simple options are
a) get a quieter sensor
b) reduce the loop bandwidth

There may be cleverer things you can do, depending on why you are striving for a wide loop bandwidth. If it's for rapid dynamic motion control, then you're stuck with the sensor noise. If OTOH it's to keep the beam on station, statically, then you could split the sensor into two types. You could use your existing noisy DC coupled sensor to control the mean position, locked in a narrow loop. You could then use an AC-coupled lower noise sensor, say a large test mass, magnet and pickup coil, that is a velocity sensor, to control a wider bandwidth 'quietening' loop. It depends on the specification for your dynamics whether this could be used. You could for instance use switchable loop bandwidths to get rapid noisy slew to a new position, then narrow the position loop and enable the quietening loop, though this does produce a short period of time when the output is not fully controlled for both position and noise. It would also need a fair bit of understanding to implement it. I've used the technique for low noise RF synthesis, when there is a permitted settling time, so it works. Think of it as synthesising a lower noise sensor.

  • 1
    \$\begingroup\$ "There may be cleverer things you can do, depending on why you are striving for a wide loop bandwidth." I am striving for higher bandwidth so that i can reduce tracking error. As tracking error reduces with the increase of gain(for type 1 system without feed forward). For Eg: in order to track a object which moves 10deg/sec, i need minimum bandwidth of closed loop to be 0.2 (10/360) Hz. \$\endgroup\$
    – Creative
    Jan 8, 2019 at 16:31
  • \$\begingroup\$ @amaresh I'm happy to discuss the details of your system offline if you like. You will need to be very precise about the specifications, dynamic and static. A low bandwidth high order loop can have better tracking errors than a wider bandwidth low order loop, so tradeoffs there need a thorough understanding of the specs. \$\endgroup\$
    – Neil_UK
    Jan 8, 2019 at 16:43
  • \$\begingroup\$ Sorry, minimum bandwidth requirement is 2*0.2 =0.4Hz. I have two stage control where PSD (Position sensor)is used in fine control. \$\endgroup\$
    – Creative
    Jan 8, 2019 at 16:44
  • \$\begingroup\$ @amaresh No. You think you need 0.4Hz. However, numbers are irrelevant without details. First you need to describe your requirements. Static tracking error, what's the permitted rms deviation of the beam, when the target is still, with respect to the sensor noise? What's the open loop beam steering noise? What's the permitted lag when tracking a constant velocity target? What's the permitted lag when tracking linearly accelerating target? When you have all those down, then you can start to design loop order and bandwidth. \$\endgroup\$
    – Neil_UK
    Jan 8, 2019 at 16:49
  • \$\begingroup\$ Static,velocity and accelerating tracking errors should not exceed more than 9micrometers RMS in sensor frame. Open loop beam steering noise is yet to be found out. Max velocity of target is 2deg/sec and acceleration near about 0.3deg/sec^2. From these information how can i decide about loop order and bandwidth?How to relate these parameters to control design requirement? \$\endgroup\$
    – Creative
    Jan 11, 2019 at 5:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.