Transfer equation of a Voice coil motor for dissertation

In summary: I have not been able to find an equation to relate voltage to displacement that does not include gravity.
  • #1
deamonata
24
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
  • #2
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.
 
  • #3
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

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

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:

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

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

Thanks in advance
 
Last edited:
  • #4
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.
 
  • #5
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;
[itex]∑F = F_{mag} - F_{grav}[/itex]
Where Fmag is the force due to the magnetic field which is defined as
[itex]F_{mag} = BIL[/itex]
And Fgrav is the force due to gravity defined as
[itex]F_{grav} = mg[/itex]
Using the standard equation [itex]F=m\ddot{X}[/itex], it can be said that
[itex]m\ddot{X}= F_{mag} - F_{grav}[/itex]
[itex]m\ddot{X} = BIL-mg[/itex]
[itex]\ddot{X}=\frac{(BIL-mg)}{m}[/itex]
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
[itex]V=IR+E+L\frac{di}{dt}[/itex]
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
[itex]I=\frac{(V-E)}{R}[/itex]
As the back emf is proportional to the velocity of the voice coil motor ([itex]E=K_E\ddot{X}[/itex]) equation XX can be derived.
[itex]I=\frac{V-K_E \ddot{X}}{R}[/itex]
where KE is the back emf constant. Substituting equation XX into equation XX gives
[itex]\ddot{X}=\frac{B \frac{V-K_E\dot{X}}{R} L-mg}{m}[/itex]
Rearranging (and using the magnetic field constant [itex]K_b = BL[/itex] gives
[itex]V=\frac{RmX ̈+K_b K_E\dot{X}+mg)}{K_b} [/itex]
Applying the Laplace transform gives
[itex]V(s)=\frac{RmX(s)s^2+K_b K_E X(s)s+\frac{mg}{s}}{K_b}[/itex]
Rearranging gives the transform function
[itex]\frac{X(s)}{V(s)}=[/itex]

and that is where I am stuck
 
  • #6
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;
[itex]∑F = F_{mag} - F_{grav}[/itex]
Where Fmag is the force due to the magnetic field which is defined as
[itex]F_{mag} = BIL[/itex]
And Fgrav is the force due to gravity defined as
[itex]F_{grav} = mg[/itex]
Using the standard equation [itex]F=m\ddot{X}[/itex], it can be said that
[itex]m\ddot{X}= F_{mag} - F_{grav}[/itex]
[itex]m\ddot{X} = BIL-mg[/itex]
[itex]\ddot{X}=\frac{(BIL-mg)}{m}[/itex]
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
[itex]V=IR+E+L\frac{di}{dt}[/itex]
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
[itex]I=\frac{(V-E)}{R}[/itex]
As the back emf is proportional to the velocity of the voice coil motor ([itex]E=K_E\ddot{X}[/itex]) 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.
 
  • #7
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.
 
  • #8
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?
 
  • #9
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 [itex]K_b = BL[/itex] gives
[itex]V=\frac{RmX ̈+K_b K_E\dot{X}+mg)}{K_b} [/itex]
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

[itex]\ddot{x} = \frac{BL\frac{v-K_E\dot{x}}{r}-mg}{m}[/itex]

rearrange to get

[itex]\ddot{x} = \frac{K_bv}{mr}-\frac{K_E\dot{x}}{mr}-g[/itex]

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

[itex]\ddot{x} = \frac{BL\frac{v-K_E\dot{x}}{r}-mg}{m}[/itex]

rearrange to get

[itex]\ddot{x} = \frac{K_bv}{mr}-\frac{K_E\dot{x}}{mr}-g[/itex]

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:

[itex]s=ut+\frac{1}{2}at^2[/itex]

or in terms of x

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

rearranging to get

[itex]g= \frac{2(x(t)- \dot{x(t-1)}t)}{t^2}[/itex]

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

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

simplifying gives

[itex]g= X(s)S^3 - X(s)e^{-s}s[/itex]

I can then plug that back into the main equation

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

then rearranging to give

[itex]\frac{X(s)}{V(s)} = \frac{K_b}{mrs^3+mrs^2+(K_E-mre^{-s})s}[/itex]
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

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

to the transfer function G(s) where

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

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

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

to the transfer function G(s) where

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

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

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

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.

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

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 [itex]\frac{X(s)}{V(s)} =\frac{K_b}{ RmS^2 +K_b K_ES}[/itex]

and then a feedforward system using gravity which would be [itex]\frac{A(s)}{V(s)} =\frac{K_b}{ RmS +K_b K_E}[/itex] 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.

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

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:

[itex]K_p + \frac{K_i}{s}+K_ds[/itex]

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.

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

[itex]K_p + \frac{K_i}{s}+K_ds[/itex]

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.

[itex]v(t)=2.5x(t)+30[/itex]

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.
 

Similar threads

  • Engineering and Comp Sci Homework Help
Replies
5
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
5
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
1
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
12
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
16
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
1
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
13
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
2
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
4
Views
3K
  • Engineering and Comp Sci Homework Help
Replies
4
Views
2K
Back
Top