Re: Calculating velocity from position in a noisy enviroment
- From: Tim Wescott <tim@xxxxxxxxxxxxxxxx>
- Date: Sat, 30 May 2009 11:21:48 -0500
On Sat, 30 May 2009 16:21:08 +1000, James254 wrote:
Hi,
I've got a problem with calculating velocity from position data. Here's
what I've got
* A variable resistor that tells you the position of the object to be
tracked
* An A-D converter that samples the resistor every 10ms * I can track
the position of the object and output a control signal to my motor to
stop it at the desired point * Inertia keeps the object moving and I get
oscillations * I believe I can calculate velocity simply by saying V = (
Position(Current) - Position(Previous) ) / Sampling Time * When I
examine my calculation by outputing it to a port I get wild positive and
negative variations due to noise from the variable resistor * I can't
add an external filter to the system, I must deal with the noise in
software.
* I've tried a several types of filter (Averaging and simple low pass
filters) but the signal is still too noisy.
Do you have any suggestions?
1: Change the plant. Sometimes a mechanical arrangement just isn't
controllable in a satisfactory way, and you need to do something about it.
1a: Use a better pot.
1b: Use a different position sensor, such as an encoder, an RVDT, or a
resolver.
1c: Put a tachometer or an encoder on the motor itself (this has
advantages beyond just using a better sensor, if your motor has to go
through any sort of a reduction drive).
2: Filter more. I assume that you've already tried this, and can't find
a good tradeoff between how heavy a filter you need for noise suppression
vs. how light a filter you need for good control, but I thought I'd toss
out the suggestion.
2a: Knowing the relevant theory can help in cases like this: http://
www.wescottdesign.com/articles/zTransform/z-transforms.html; http://
www.wescottdesign.com/actfes/actfes.html.
3: If you need snappy positioning but can get away without the worlds
best disturbance rejection, consider using feed forward.
3a: Cleverly applied, the alpha-beta filter cited in another response
will let you construct a gizmo called an "observer" that gives you a nice
structured way to make a system with lots of feed forward that does what
you want -- but it helps to know your control theory.
4: Change your amplifier. If you're driving the motor with a current
amplifier then try changing it to a voltage amplifier -- this has the
effect of making the motor more of a constant-velocity device which adds
some nice damping, at the cost of not being able to directly limit
current to the motor.
4a: If you arrange your amplifier with just the right level of negative
resistance you can _really_ make it a constant velocity drive, with a
whole big pile of caveats. Do a web search on "tape capstan drive" to
see how it's done.
5: Ask questions like this on sci.engr.control. There's folks there
with lots of experience; if you make sure to explain your circumstance
they'll help you out as much as they can.
--
http://www.wescottdesign.com
.
- Follow-Ups:
- Re: Calculating velocity from position in a noisy enviroment
- From: Jon Kirwan
- Re: Calculating velocity from position in a noisy enviroment
- References:
- Calculating velocity from position in a noisy enviroment
- From: James254
- Calculating velocity from position in a noisy enviroment
- Prev by Date: Re: For exact data transfer by using FT2232H .
- Next by Date: Re: Calculating velocity from position in a noisy enviroment
- Previous by thread: Re: Calculating velocity from position in a noisy enviroment
- Next by thread: Re: Calculating velocity from position in a noisy enviroment
- Index(es):
Relevant Pages
|
Loading