Transfer equation of a Voice coil motor for dissertation

Click For Summary
SUMMARY

The forum discussion centers on deriving the transfer equation for a Voice Coil Motor (VCM) in the context of a PID control system aimed at simulating tactile feedback. The key equation derived is V = (RmẌ + KbKE·Ẋ + mg) / Kb, where V represents voltage, R is resistance, m is mass, Kb is the magnetic field constant, and KE is the back EMF constant. The inclusion of gravity complicates the model, introducing a steady-state error of approximately 3mm, which must be accounted for in simulations. The discussion emphasizes the importance of accurately modeling the effects of gravity on the VCM's performance.

PREREQUISITES
  • Understanding of PID control systems
  • Familiarity with Laplace transforms
  • Knowledge of Voice Coil Motor dynamics
  • Basic principles of mechanics, particularly force and motion
NEXT STEPS
  • Research the derivation of transfer functions for Voice Coil Motors
  • Study the application of Laplace transforms in control systems
  • Explore the impact of gravity on dynamic systems
  • Investigate tactile feedback mechanisms and their modeling
USEFUL FOR

Engineers and researchers working on control systems, particularly those focused on haptic feedback devices, as well as students studying dynamics and control theory in mechanical or electrical engineering.

  • #31
Talking things through with a collegue, I thought that maybe the solution it to use a feedforward system.

So I would have the original plant equation of \frac{X(s)}{V(s)} =\frac{K_b}{ RmS^2 +K_b K_ES}

and then a feedforward system using gravity which would be \frac{A(s)}{V(s)} =\frac{K_b}{ RmS +K_b K_E} where the desired acceleration would be equal to gravity.

thoughts? I am not sure about the equations but that might be the way to go about it.
 
Physics news on Phys.org
  • #32
deamonata said:
I have both Matlab and Labview, both of which I'm confident using to run simulations.

The issue that I'm having it trying to obtain the transfer function for the overall system, the closest I have for the plant equation is what I showed you in an earlier post, which is in the time domain.

\ddot{X}=\frac{B \frac{V-K_E\dot{X}}{R} L-mg}{m}

unfortunately that is as far as I can get. I feel that the issue is that I am wanting the equation in terms of displacement, but gravity is a constant acceleration and I've not related it to how it affects the displacement.

You were going to give us the PID and laser sensor transfer functions .. with those the rest should not be a problem. Without them I am helpless.
 
  • #33
The transfer function for the PID is the standard equation which is:

K_p + \frac{K_i}{s}+K_ds

where
  • kp is 0.898
  • ki is 0.00024
  • kd is 0.129

as for the transfer function for the laser I'm not sure what you mean? if you mean the relationship between voltage and distance, then it is a linear relationship with the equation.

v(t)=2.5x(t)+30
 
  • #34
deamonata said:
The transfer function for the PID is the standard equation which is:

K_p + \frac{K_i}{s}+K_ds

where
  • kp is 0.898
  • ki is 0.00024
  • kd is 0.129

as for the transfer function for the laser I'm not sure what you mean? if you mean the relationship between voltage and distance, then it is a linear relationship with the equation.

v(t)=2.5x(t)+30

That's what I meant.

And the laser position sensor voltage goes directly into your PID, and the PID output goes directly into your plant, right? And the plant output x(t) is the laser position input, right? So that is the complete picture, right?
 
  • #35
essentially yes... there is obviously the controller code, I'm using labview running on FPGA. so the code works by reading the current voltage from the laser, and converts it to a distance that distance is then set to the PID function which compares the desired height with the feedback from the laser sensor, then outputs a voltage which is sent to the VCM.

Oh the voltage is a bit funny, so I get the output from the PID which is between 20 to -20V this is then converted into a duty cycle in the code, the PWM signal then is sent to an amplifier which amplifies the current and voltage, as the CRIO can only put out 5V which isn't enough to drive the VCM. I'm not sure if that is clear, I can explain again if you need me to, but essentially the PID works out the output needed from the apmlimifer and the CRIO then sends the required signal to the amplifier to generate the signal sent by the PID.
 
  • #36
Where does the refrence input (x_ref) come from? Is this what measures surface irregularities?
 
  • #37
the desired height comes from a modified hertzian contact theory essentially the person pressed down on a force sensor and this is converted into the desired height, this happens before the controller so it shouldn't make too much difference to the system.
 
  • #39
OK, here's my understanding of your system. Itobviously doesn't include the digital interface but you should be able to associate all my variables with your system.
 
  • #41
I will try this in a MATLAB simulation tomorrow and get back to you but it looks sensible, one question though? what is V_offset?
 
  • #42
deamonata said:
I will try this in a MATLAB simulation tomorrow and get back to you but it looks sensible, one question though? what is V_offset?

It's the "30" in v(t)=2.5x(t)+30[/QUOTE]
 
  • #43
Ok so update. I have now got the system successfully modeled. and the response matches the physical devicemThe model is shown below:

2nk1EVP.png


YOu may notice it is slightly different to what you suggested but, I think that is probably because of misunderstandings, due to my trying to explain the system over the internet. However you put me on the right tracks to understand how to include gravity.

I'm now trying to design a lead lag compensator, my tutor advised that as the gain for V is 400 and the gain for the disturbance is 0.129, the effects are negligible, and as such for the purposes of designing a controller it can be ignored.

however following the normal steps, (using the bode plot) improves the response but doesn't get rid of the steady state error, matlab's auto tuner can remove it how ever so it must be possible. any thoughts?

EDIT: Note the controller is not shown in the system model as I was comparing the response. to the system response without a controller.
 
  • #44
deamonata said:
Ok so update. I have now got the system successfully modeled. and the response matches the physical devicemThe model is shown below:

2nk1EVP.png


.

One problem is the output of block Fcn3. You have a constant input into a gain block that has infinite gain at dc. So the output of that block never stabilizes but goes out to infinity.

It's been a while since I worked this problem with you & I fear I have lost touch with the basic functioning of your system. Maybe you could re-describe it. I don't mean equations etc. just the basic thing you're trying to accomplish with the entire system, including how gravity fits into the picture. How about something in writing you were given as an assignment? I think I understand your voice-coil transfer function but the rest of the picture is still fuzzy to me. E.g. I just noticed mention of a force sensor. How does it fit into the picture?

You should try to draw a new block diagram showing the main components and describing what each is supposed to do. Leave out any math.
 
Last edited:
  • #45
Just a quick comment on Voice Coil Transfer Function

Hi,

I know this post is super old, but I read through it and it did not seem like anyone really answered it. This is for anyone else who is still interested.

You can not apply the Laplace Transform to non-linear equations like yours which include gravity. For a system to be linear, it must follow the principles of homogeneity and additivity. The equations containing gravity violate the homogeneity.

However, since the gravitational effects are constant, they can be removed from the equation and the system can still be characterized by a transfer function. (think of this situation as if the voice coil was fixed in outer space far away from any gravitational fields, the system would still behave the same with the only difference being that the initial conditions will be zero).

If you are looking for voice coil displacement/input, ie Xvc/Vin, I have solved it for you here:

Xv/Vin = (Bl/mvL)/(s(s^2+R/L*s + Bl*Kb/mvL))
where B = magnetic flux, l = length of wire used to form the coil, mv = mass of the voice coil assembly that will move, L = inductance, & Kb = back EMF motor constant.

It is a third order equation but you can break it up into the standard form by equating the R/L = 2ζ*ω and ω^2 = BlKb/mv*L

Hence, the damping ratio ζ = R/2Lω or (R/2L)*(mvL/Bl*Kb)^1/2 and the natural frequency ω^2 = Bl*Kb/mvL

(sorry first time using this forum and have not used the math scripts yet)

If you still want to include gravity, matlab's Simulink can handle it quite well as I sure you already know. All that is required are the correct force dynamic equations of motion, then include -mv*g as one of the forces.
 
Last edited:

Similar threads

  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
5
Views
3K
  • · Replies 7 ·
Replies
7
Views
7K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 13 ·
Replies
13
Views
4K
Replies
1
Views
2K