Engineering Transfer equation of a Voice coil motor for dissertation

AI Thread Summary
The discussion revolves around deriving the transfer equation for a Voice Coil Motor (VCM) to create a PID control system for simulating softness in tactile displays. The main challenge is incorporating the effects of gravity into the transfer function that relates voltage to displacement, as it introduces a steady-state error. Participants emphasize the importance of accurately modeling the forces acting on the system, including gravitational force, to ensure realistic simulations. There is also a focus on using Laplace transforms to analyze the system dynamics and obtain the desired transfer function. Ultimately, the conversation highlights the complexities of modeling the VCM's behavior under varying conditions, particularly when simulating material properties like softness.
deamonata
Messages
24
Reaction score
0

Homework Statement



I'm currently creating a PID control system for a Voice coil motor, my issue is obtaining the transfer equation that relates the voltage to the displacement. Ignoring gravity it is easy however once gravity is included I can't figure out how to rearrange it.

Homework Equations



In the time domain the equation that I have come up with is
http://mathhelpforum.com/attachments/differential-equations/27771-transfer-equation-voice-coil-motor-equation.png

the derivation from fist principles can be provided if needed

The Attempt at a Solution



I've applied the laplace transform to the equation to get:

http://mathhelpforum.com/attachments/differential-equations/27772d1364923937-transfer-equation-voice-coil-motor-equation.png

I could really use some help, and I would be very grateful for any advice offered.

Thanks in advance
 
Physics news on Phys.org
I think including gravity is both extremely difficult and pointless. The cone will not be materially deformed or otherwise affected by gravity.

BTW all I get for your images is red x's.
 
I can seem to edit the original post so I'm reposting fixing the equations and trying to clear a few thing up. Thanks again for taking the time to look at this

Homework Statement



I'm currently creating a PID control system for a Voice coil motor. The end goal of the project is to create a tactile simulation display that mimics softness. The basic principle it is modeling is if you take a samle of silicone and press on it the material will defom and the top will bow around you finger.

The device will mimic this by measuring the force that a person presses on a load cell with and then the voice coil motor will move the frame causing a strip of polyimide film to wrap around the participants finger simulating softness.

My issue is obtaining the transfer equation that relates the voltage to the displacement. Ignoring gravity it is easy however once gravity is included I can't figure out how to rearrange it.

I have actually developed a PID controller and I'm now writing up my report, as such I know that the effects of gravity cause a steady state error of about 3mm (this is compare to when it was moving horizontally when there was no error)

Homework Equations



In the time domain the equation that I have come up with is

v = \frac{R.m.\ddot{x}+K_b.K_E.\dot{x}+ \frac{mg}{S} }{K_b}

the derivation from fist principles can be provided if needed

The Attempt at a Solution



I've applied the laplace transform to the equation to get:

V(s) = \frac{R.m.X(s).S^2+K_b.K_E.X(s).S+ \frac{mg}{S} }{K_b}

I could really use some help, and I would be very grateful for any advice offered.

Thanks in advance
 
Last edited:
How about this:

When the speaker is directing sound upwards or downwards there is indeed a deformation of the cone and voice coil. However, if the cone deflection-to-current transfer function is linear, operating about a finite cone deflection makes no difference.

The analogy is to a mass dangling at the end of a spring vertically. The mass stretches the spring by an amount mg/k but applying an additional external force F will stretch or compress the spring an equal amount F/k.

Of course, any transfer function nonlinearity will show up to some extent as distortion.
 
We are using the voice coil motors as normal linear motors, so the weight due to the frame is much more than a speaker cone (unless I'm mistaken). For clarification this is the device in question.

dhtxlQ6.png


As I know from testing gravity does have a significat effect on the model meaning that any simulations run aould be pointless unless I include gravity. My equation comes from the following derivation (I'm actually working on VCM1, but the equation is the same for 2&3 the constant values will be different).

---------------------------------------------------------------------------------------------

The first step to defining the transfer equation is to create a free body diagram this is shown below

JYYxx9b.png


It can therefore be stated that the sum of the forces is;
∑F = F_{mag} - F_{grav}
Where Fmag is the force due to the magnetic field which is defined as
F_{mag} = BIL
And Fgrav is the force due to gravity defined as
F_{grav} = mg
Using the standard equation F=m\ddot{X}, it can be said that
m\ddot{X}= F_{mag} - F_{grav}
m\ddot{X} = BIL-mg
\ddot{X}=\frac{(BIL-mg)}{m}
The next step is to define the relationship between the voltage and the current, this is achieved by analysing the equivalent circuit.

XXEx7sj.png


From the figure the equation below was derived
V=IR+E+L\frac{di}{dt}
As the inductance for the motors that will be used is negligiable in comparison to the other variable taking this and rearranging with respect to current, I, we get
I=\frac{(V-E)}{R}
As the back emf is proportional to the velocity of the voice coil motor (E=K_E\ddot{X}) equation XX can be derived.
I=\frac{V-K_E \ddot{X}}{R}
where KE is the back emf constant. Substituting equation XX into equation XX gives
\ddot{X}=\frac{B \frac{V-K_E\dot{X}}{R} L-mg}{m}
Rearranging (and using the magnetic field constant K_b = BL gives
V=\frac{RmX ̈+K_b K_E\dot{X}+mg)}{K_b}
Applying the Laplace transform gives
V(s)=\frac{RmX(s)s^2+K_b K_E X(s)s+\frac{mg}{s}}{K_b}
Rearranging gives the transform function
\frac{X(s)}{V(s)}=

and that is where I am stuck
 
deamonata said:
We are using the voice coil motors as normal linear motors, so the weight due to the frame is much more than a speaker cone (unless I'm mistaken). For clarification this is the device in question.

dhtxlQ6.png


As I know from testing gravity does have a significat effect on the model meaning that any simulations run aould be pointless unless I include gravity. My equation comes from the following derivation (I'm actually working on VCM1, but the equation is the same for 2&3 the constant values will be different).

---------------------------------------------------------------------------------------------

The first step to defining the transfer equation is to create a free body diagram this is shown below

JYYxx9b.png


It can therefore be stated that the sum of the forces is;
∑F = F_{mag} - F_{grav}
Where Fmag is the force due to the magnetic field which is defined as
F_{mag} = BIL
And Fgrav is the force due to gravity defined as
F_{grav} = mg
Using the standard equation F=m\ddot{X}, it can be said that
m\ddot{X}= F_{mag} - F_{grav}
m\ddot{X} = BIL-mg
\ddot{X}=\frac{(BIL-mg)}{m}
The next step is to define the relationship between the voltage and the current, this is achieved by analysing the equivalent circuit.

XXEx7sj.png


From the figure the equation below was derived
V=IR+E+L\frac{di}{dt}
As the inductance for the motors that will be used is negligible in comparison to the other variable taking this and rearranging with respect to current, I, we get
I=\frac{(V-E)}{R}
As the back emf is proportional to the velocity of the voice coil motor (E=K_E\ddot{X}) equation XX can be derived.
E = KE dx/dt, not d2x/dt2.

May I suggest you use lower case for the time variables and upper case for the transformed variables: x(t) and X(s), i(t) and I(s), v(t) and V(s) etc.


I will work on this and see what I come up with, now that I have a better idea of what you're trying to do.
 
rude man said:
E = KE dx/dt, not d2x/dt2.

May I suggest you use lower case for the time variables and upper case for the transformed variables: x(t) and X(s), i(t) and I(s), v(t) and V(s) etc.


I will work on this and see what I come up with, now that I have a better idea of what you're trying to do.

I might be wrong with E = KE, I got that equation from some where I'll check it, I may be wrong though. I did get the feeling you might be getting the wrong idea about what I was trying to do, the main thing I'm stuck on is the rearrangement but that may well be because it is wrong.

Im also not sue about how mg should be converted, I feel that maybe it should be convertd into a form of displacement, possibly using SUVAT? that would give me the X(s) term that I am looking for.

Thanks for taking the time to look it over I've been wracking my head for weeks, luckily I was able to tune it without simulation, but my report will need me to include some nice pretty graphs and simulation results.
 
Sorry if I'm missing the obvious, but why are there 3 actuators, and what does a "participant finger" have to do with all of this? What is that mechanism used for?
 
deamonata said:
We are using the voice coil motors as normal linear motors, so the weight due to the frame is much more than a speaker cone (unless I'm mistaken). For clarification this is the device in question.

dhtxlQ6.png


Rearranging (and using the magnetic field constant K_b = BL gives
V=\frac{RmX ̈+K_b K_E\dot{X}+mg)}{K_b}
Why do this? You have a linear, constant-coefficient, 2nd order ODE in x(t) with v(t) (BL/mR)
- g as your driving function. So transform this and get your X(s) and then x(t).
 
  • #10
berkeman said:
Sorry if I'm missing the obvious, but why are there 3 actuators, and what does a "participant finger" have to do with all of this? What is that mechanism used for?
the two smaller VCMs will vibrate and hopefully simulate wetness. The larger one simulates softness.

rude man said:
Why do this? You have a linear, constant-coefficient, 2nd order ODE in x(t) with v(t) (BL/mR)
- g as your driving function. So transform this and get your X(s) and then x(t).

I don't quite follow what you mean sorry..
 
  • #11
deamonata said:
the two smaller VCMs will vibrate and hopefully simulate wetness. The larger one simulates softness.

:confused:
 
  • #12
berkeman said:
:confused:

Lol, if you are interested the work we are doing is based of the research done by some Japanese researchers, their paper explains the priciples about how softness can be displayed, we are creating a similar device and then also testing for wetness which is based on work done by a 3rd year student who determied vibrating surfaces can mimic wetness. The original paper is called "A Softness Feeling Display with an Active Tensioner Controlling Contact Pressure Distribution on a Fingertip" if you want to look it up.
 
  • #13
deamonata said:
I don't quite follow what you mean sorry..

Don't you want to know x(t), given voltage v(t)?

BTW I believe the expression for E = constant * dx/dt is correct. The motor is acting like a generator, as all motors and generators do unless they're not spinning.
 
  • #14
Oh, maybe you want voltage as a function of x. That makes more sense from your 'softness' viewpoint.

Here's the problem: you started with BLi = mg = m d2x(t)/dt2 which says that if i = 0 then x(t) increases without limit.

You need to revise your basic system definition.
 
  • #15
so do you mean take the equation in the form

\ddot{x} = \frac{BL\frac{v-K_E\dot{x}}{r}-mg}{m}

rearrange to get

\ddot{x} = \frac{K_bv}{mr}-\frac{K_E\dot{x}}{mr}-g

and then transform that?

Don't I still get the same issue that the gravity term will mess up any rearrangement?
 
  • #16
The plant equation of the voice coil motor should take voltage as an input and give my a displacement as an output, the displacement modelling the deflection of a material with the youngs modules that is being simulated.

where did I have "BLi = mg = m d2x(t)/dt2" I came up with BLi - mg = m d2x(t)/dt2. thus when i is 0 then the only force is gravity thus it cancels to -g=d2x(t)/dt2, which is correct as it falls to the ground (or table :P)
 
  • #17
edit:bad post
 
  • #18
deamonata said:
The plant equation of the voice coil motor should take voltage as an input and give my a displacement as an output, the displacement modelling the deflection of a material with the youngs modules that is being simulated.

where did I have "BLi = mg = m d2x(t)/dt2" I came up with BLi - mg = m d2x(t)/dt2. P)

Sorry,I meant BLi - mg = m d2x(t)/dx2, same as yours.

My point is you will get infinite output displacement without any input voltage with your equation above.

So this brings me back to my question why you did not leave your equation as
d2x/dt2 + (BLKE)/mR) dx/dt = (BL/mR) v - g where v = voltage input v(t) and solved for x(t) for a given input voltage v(t)?

Still doesn' change the fact that you don't have a system that makes sense, with output x(t) unlimited negative for any finite input v(t). Unless there's another feedback path you haven't told us about.
 
  • #19
PS the thing that makes a speaker voice coil give a displacement output for a given current (or voltage) input is the restoring force of the speaker cone which acts like a spring. You have no restoring force increasing with x in some manner, that's your problem.
 
Last edited:
  • #20
deamonata said:
so do you mean take the equation in the form

\ddot{x} = \frac{BL\frac{v-K_E\dot{x}}{r}-mg}{m}

rearrange to get

\ddot{x} = \frac{K_bv}{mr}-\frac{K_E\dot{x}}{mr}-g

and then transform that?

Don't I still get the same issue that the gravity term will mess up any rearrangement?

Yes you do. See my previous post.
 
  • #21
There's another force? I thought gravity was the restoring force. Is this right or is there another force I've not realized? Assuming it is gravity do I want to go along the lines of:

s=ut+\frac{1}{2}at^2

or in terms of x

x(t) = \dot{x(t-1)}t+\frac{1}{2}\ddot{x}t^2

rearranging to get

g= \frac{2(x(t)- \dot{x(t-1)}t)}{t^2}

Not too sure on how that Laplaces but I think it would be

g= \frac{2(X(s) - X(s)e^{-s}s^{-2})}{2S^{-3}}

simplifying gives

g= X(s)S^3 - X(s)e^{-s}s

I can then plug that back into the main equation

\frac{K_bV(s)}{mr} = X(s)s^2 + \frac{K_EX(s)s}{mr}+X(s)S^3 - X(s)e^{-s}s

then rearranging to give

\frac{X(s)}{V(s)} = \frac{K_b}{mrs^3+mrs^2+(K_E-mre^{-s})s}
Edit: looking again at your post I had some more thoughts. I'm fairly sure that voltage isn't actually proportional to displacement it is proportional to acceleration. i.e If I put in 5V I won't get a fixed displacement. A fix displacement is obtained by using a fast controller, and at certain heights there are small oscillations.
 
Last edited:
  • #22
deamonata said:
Edit: looking again at your post I had some more thoughts. I'm fairly sure that voltage isn't actually proportional to displacement it is proportional to acceleration. i.e If I put in 5V I won't get a fixed displacement. A fix displacement is obtained by using a fast controller, and at certain heights there are small oscillations.

OK, so now we're looking for acceleration output a(t) for input voltage v(t)?

So now we get, as before (at least I hope this is what you got also),
X(s)(s2 + as) = bV(s) - g/s
or X(s) = [bV(s) - g/s]/s(s+a)
where
a = BLKE/mR
b = BL/mR

then A(s) = s2X(s)
where A(s) is transformed acceleration a(t)
giving A(s) = s2X(s) = [sbV(s) - g]/(s+a)
and now you can input any V(s) you want, such as a step 1/s, or steady-state sinusoid V(jω), or whatever.
 
  • #23
but how can I get from the form of

X(s) = \frac{bV(s) - g/s}{s(s+a)}

to the transfer function G(s) where

G(s)=X(s)/V(s)=\frac{a_0}{a_1S^3+a_2S^2+a_3S+a_4}

I can't just divide by V(s) as it isn't in all the terms in the numerator.
 
  • #24
deamonata said:
but how can I get from the form of

X(s) = \frac{bV(s) - g/s}{s(s+a)}

to the transfer function G(s) where

G(s)=X(s)/V(s)=\frac{a_0}{a_1S^3+a_2S^2+a_3S+a_4}

I can't just divide by V(s) as it isn't in all the terms in the numerator.

You're right. That's because you get an output even with no voltage input V(s).

Look at your original equation: ma = BLi - mg. What is a with i = 0? Not zero, right?

There must be another feedback path in your overall system that balances BLi with mg. I suspect you haven't described your system fully to us.
 
  • #25
There is a negative acceleration when there is no current, it is essentially just free falling. The limiting factor is the table.

To keep it at a fixed height I have to apply a voltage.
 
Last edited:
  • #26
OK, so then your transfer function is A(s)/V(s) = bs/(s+a).

But that's like asking for a transfer function to a network with a finite initial condition. The concept of transfer function is output for a given input with the assumption that no input, no output.

Gravity in your case represents an initial condition: a(t) = g. So the only way to describe the output fully is with the A(s) equation: A(s) = [sbV(s) - g]/(s+a).
 
  • #27
deamonata said:
There is a negative acceleration when there is no current, it is essentially just free falling. The limiting factor is the table.

To keep it at a fixed height I have to apply a voltage.

Fine. What generates the voltage to keep the thing from free-falling? Something must be generating that voltage in some sort of feedback configuration to keep the thing from falling to the table. Your manual input?? What??
 
  • #28
Firstly thanks for spending the time to help me out it is much appreciated!

I think the best thing to do is explain the entire set up of the system

So feedback wise I am using a laser displacement sensor that records the height of the voice coil motor. this is fed into a PID controller (I can give you the values if you need them) these valuse were obtained mainly through trial and error, the error signal going into the PID controller is obtains by subtracting the current distance from the original one.

I originally ignored gravity completely which made the equation very easy and I got

\frac{X(s)}{V(s)} = \frac{K_b}{RmS^2+K_{b}K_{E}S}

simulating this was nice and simple and operating the device on it's side (thus removing gravity) showed that it followed this model. Positive voltage moved it up, negative back down

However when being used the right way up the device behaved differently, the most noticeable difference was the introduction of a steady state error, and small oscillation. Through trial and error I was able to remove both of these issues. However because the tuning I had done in the original simulation was not all that useful I was hoping that I could come up with a new transfer function that included gravity.

I hope that clears the background up a bit.


Regarding the voltage to stop it free-falling I just have a single PID controller outputting a voltage depending on the distance.
 
Last edited:
  • #29
Now we're finally getting somewhere.

If you give me your entire system in transfer function or or other form, including the laser position sensor, your PID controller, - everything! - then maybe I can help you sort things out.

I hope you have a system simulator like Matlab or whatever? I haven't used mine in ages so I may ask you to run a few simulations as we go along.
 
  • #30
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}

Unfortunatly 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.
 
  • #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.
 
  • #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}

Unfortunatly 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
1
Views
2K
Replies
1
Views
3K
Replies
7
Views
7K
Replies
4
Views
4K
Replies
2
Views
2K
Back
Top