LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Vibration Control

Hello, 

I have an accelerometer and I want to control a vibration system by constructing a PID controller for my project. I use the PID.vi for this. By controlling the vibration, I mean that I want the vibration to stop. For example I change the frequency or the amplitude of the vibration. When the accelerometer detects this change,  with the help of the PIDsame frequency and opposite amplitude are applied to my vibration system(at the output)  in order to stop. 
My question is the following: In order to make the vibration stop, in the PID.vi, as a process variable must I apply the accelerometer data (m/s^2) and as a setpoint the value (9.81 m/s^2)? 

Thank you

0 Kudos
Message 1 of 5
(2,403 Views)

Think about the problem.  Have you considered the frequencies you will be encountering, and the implications of these?  Let me take two extreme examples, one of which bears on your last point:

  • DC.  If the Accelerometer measures acceleration along three orthogonal axes, and you compute the net acceleration when the accelerometer is resting (not moving) on a table-top, you should measure (I'm going to ignore sign here) an acceleration of 9.8 m/sec/sec, or 1 g (since we are in the earth's gravitational field).  To counter this, you would need the accelerometer to be in free-fall.  How do you plan to accomplish this?
  • Relatively-high frequency "vibrations" (call it "noise", and assume it has a random nature).  To measure a vibration, you need to sample over some time interval.  You now need to compute a response and deliver that response, which also takes time.  How do you plan to deal with this uncertainty, and prevent it from going into positive feedback and instability?

Bob Schor

0 Kudos
Message 2 of 5
(2,377 Views)

Dear GeoPar, 

 

can you share your vi so we could help you better ? 

0 Kudos
Message 3 of 5
(2,360 Views)

Dear Bob Schor, 

 

Thank you for your reply 

 

I thought that if I gave the pid the value 9.81 (like it was the value 0 if there was no gravity) as setpoint I would achieve my goal.So must I create a circular buffer and then apply a filter to remove the dc every n samples and then must I pass the data as process data to my pid? 

0 Kudos
Message 4 of 5
(2,353 Views)

What you really need to do is forget about LabVIEW, forget about PID, and think about Sensors, Actuators, and What You Want To Do.  There are so many questions that are completely unanswered (but have a large impact on what and how you do things):

  • How many of the six degrees of freedom (three linear acceleration axes and three rotation axes) are in your system?
    • Are there any movement constraints?  For example, if you have a "cart on a track", you essentially have a single degree of (linear) freedom.
    • How many axes does your accelerometer measure?
  • Rotational degrees of freedom can really complicate things if you are measuring the acceleration due to gravity, as a pure rotation-without-translation will "measure" as trigonometric changes in the X, Y, and Z components of the static "downward" pull of gravity.  If movements in the vertical are allowed, then this can get very complicated.
  • If this is a school project, go and talk to your instructor and get a better sense of what is expected.

One problem with accelerometers is that they measure acceleration.  If we normalize accelerations in g's, there is a constant -1 acceleration in the Z axis.  Do you want to control the acceleration, the velocity, or the position of the object?  Go back to the drawing board ...

 

Bob Schor

0 Kudos
Message 5 of 5
(2,342 Views)