If we have a programmable arbitrary function generator as a voltage signal source and if we are able to output any waveform like a sine or exponential decay as output voltage versus time; how can this voltage be translated to a linear motion or angular motion?

I think as an example for this type of a voltage to motion translation a seismograph:

enter image description here

So basically if we have a voltage varying between -1V to +1V and if we want to translate it to a linear position between -10cm to +10cm or a angular position how is that possible? I know that servo motors are using PWM signals but in my case I would like to know if there are motors or interfaces which translate analog voltage to position.

So if the voltage output we generate is a sine I want the motion to be a sine, and if it is a decaying sine I want the motion to be a decaying sine. If the voltage is zero the motion is at its reference point like the needle above and if the voltage at a time is 0.5V the position at that time will be at +0.5cm ect. But this response must be quick enough to mimic the voltage waveform. I'm talking about not more than 100Hz. Is that even possible?

  • 1
    \$\begingroup\$ "quick enough" really just depends on your actuator. Think of hard drive read heads: they are certainly quick enough, so this principle might just work. By the way, what you describe sounds like a speaker, just with higher amplitudes. \$\endgroup\$ – Marcus Müller Jan 30 at 15:18
  • \$\begingroup\$ Thanks actually "actuator" is the right term for this. I was thinking to describe the generic term for the thing in my question. \$\endgroup\$ – user1999 Jan 30 at 15:23
  • 2
    \$\begingroup\$ I like @MarcusMüller suggestion of a speaker. Look for one that has a voice-coil throw long enough for the distance in question, or use some level arms to increase the range of motion. Find a guitar amplifier that goes to 11 and take the speaker out of that. \$\endgroup\$ – Elliot Alderson Jan 30 at 15:40
  • \$\begingroup\$ @ElliotAlderson +1 for the making it go to 11. \$\endgroup\$ – Marcus Müller Jan 30 at 16:09
  • \$\begingroup\$ The types of servo motors used for the Radio Controlled hobbies convert a PWM signal into an angular position of the serv-motor. So, you might be able to use an RC servo. The angle of the shaft is controlled by pulse width (not duty cycle per-se). horizonhobby.com/category/radios/surface-radio-systems/… \$\endgroup\$ – mkeith Jan 30 at 20:09

"Servo" is exactly what you're looking for. It's a generic term for mechanical movement that's proportional to an electronic signal. Digital servos typically use PWM control signals, but old-fashioned analog servos use voltages as control signals.

The general idea is that you have an actuator, typically a DC motor or solenoid (AKA "voice coil") and some means of measuring its position. You compare the measured position to the control value, and drive the actuator based on the error signal.


Hard drive arms might just solve the problem:


Apertura hard disk 04.jpg
By Alessio Sbarbaro User_talk:Yoggysot - Own work, CC BY-SA 3.0, Link

They are cheap and relatively easy to source, if you have a source of broken hard drives. But even if you had to build something similar from scratch, sounds doable with flat magnets (which can be bought), a bearing (which can be bought as standard mechanical element) as vertical axle, and a winding core and arm assembly (which could actually be pretty neatly 3D-printed to have a fitting hole for the bearing).

The energy you'd need might be a bit of a problem here: Say you have 10 cm peak-to-peak excitation for a sine with a period of 1/(100 Hz) = 1/100 s. That means that you need to 10 m/s² acceleration. That might require quite a bit of power.

Luckily, driving coils is pretty much what audio amplifiers do, so that should be solvable with standard electronics.

Generally, as Sunnyskyguy points out, you'll have to have a closed loop that monitors the elongation and drives your coil with current for as long as necessery to reach your desired position; this will absorb a lot of the nonlinearity on the way, too.

At 100 Hz system bandwidth, any MCU should be able to implement standard controllers (like a simple PID) for this to work.

  • 2
    \$\begingroup\$ You'd want some feedback too, not just a feed-forward DSP. That's implied, of course, but I've seen too many people on here thinking they can get away with feed-forward control alone to leave that off. Additionally, you'll need to be careful with your audio amplifier selection, because those are not typically designed with low frequencies in mind. Or you can just roll your own, it's not like they're fancy, cutting-edge technology. \$\endgroup\$ – Hearth Jan 30 at 15:43
  • 1
    \$\begingroup\$ VCM Voltage only responds to acceleration with V=I*DCR \$\endgroup\$ – Sunnyskyguy EE75 Jan 30 at 17:26
  • \$\begingroup\$ Almost , but without feedback, no control of position is possible. \$\endgroup\$ – Sunnyskyguy EE75 Jan 30 at 19:38

Galvos and rotary motors in HDD’s called VCM’s or voice coil motors are like any motor with a DC resistance or DCR.

A “high precision” galvometer will use a position error control servo loop such as galvanometer scanners based on moving magnet technology and a high-accuracy position detector intended for laser mirror position control.

Then you may input voltage that already indicates position or double integrated acceleration with null initial position error as you see fit.


If you say Voltage = position on a spring loaded galvo or spring loaded VCM, you specify this V=kX then acceleration is the 2nd order derivative of this Voltage. This can be done for linear motor coils or rotary voice coils, but they must have a spring load.

But if your input voltage is acceleration then you must integrate twice to drive Vposition above.

Other details.

Rotor acceleration is proportional to Voltage or current which can be limited by the coil resistance,DCR is rated in Ohms but as in analog meters, full scale DC is [V/Ohm or mA]. So I=V/DCR for acceleration or applied V=I*DCR. Thus F=ma where opposing spring force measures deflection F=kX so acceleration is proportional to defection or rotor position X if using a VCM that has only a limited angular range.

A non-stop rotary motor requires sine-cosine multi pole motor which is only linear for a small range between poles as the sine wave approximates a linear triangle wave up to about +/- 50% then sine-cosine correction is needed for commutation on 2 windings.

So DC static response or no force is 0 mA or a short circuit. Galvos have a spring to return to home position, VCM’s may not, speakers do with the neoprene outer ring on the cone.

So to record acceleration of 1g of gravity in a balanced VCM you can use a very linear coil spring f=kX with some spring constant k to counter the force of X g’s of gravity or use deflection feedback for some current=V/DCR of coil resistance or a neutral position galvo like a strip chart recorder. This is counterforce=Current=g.

Now to get velocity, you integrate once and to get position or displacement , you integrate twice or use a very low 2nd or LPF about 1 or 2 octaves below lowest frequency of interest. If DC then a true double integrator with a reset for drift from DC offset is needed.

Thus 2nd integral attenuation is a function of position vs filter pole or true integrator gain vs frequency.

Richter scale and all accelerometers measure in g’s but they have charts for DA or double amplitude or PP deflection vs f so you can calibrate your galvo. So no need to calculate unless you prefer.

Using a VCM requires a rotary servo position feedback which is possible with many types of encoders from incremental to grey code to a sin-cosine pot to a Linear pot for limited 3xx degree deflection, if you want to go this route.

Again V=I*DCR of coil is proportional to g and this is not position due to acceleration that is attenuated 40dB/decade in frequency or rises with a second order ramp due to a DC offset.

g Calibration

The easy way to calibrate an accelerometer is to measure the voltage for a free fall of 1g. The ratio of drop height ,x to landing on a linear spring or elastic foam deflection of y yields an x/y=z ratio and is exactly equal to impact acceleration ,z again from a height x and linear spring deflection of y.

So you would see -1 then +z in some voltage to calibrate V. Position again is the double integral of this double bidirectional step that indicates the height of the drop to start of impact. Thus drop 1m to 1cm is 100 g’s.

Sorry for the long explanation, but I tried to minimize the math and explain how it’s done.

How do they record servo feedback for HDD’s?

In HDD’s the factory writes bipolar magnetic pulses between tracks just before sector address is later written so zero position error signal or PES=0 when the pulse from each half track on either side are equal.

To seek to a position the CPU computes the trajectory, applies the required or max current which results in a linear ramp to max velocity, it then coasts until braking with negative current I=V/DCR while counting servo track crossings detected using only current feedback then just before arrival within 1/2 track at the correct velocity to be able to stop in time without much overshoot, the servo switches to PES feedback for linear tracking to zero position error.

With an RPM of 15000 or 4ms/rev and a maximum seek time of say 12 ms for a server HDD, the max seek time is only 3 revs and for all VCM’s the 1/3 max stroke is equal to the average seek time not counting sector latency. The servo “diBITs” are recorded at the factory using a precision process for servo-writing 1 cycle pulse pattern and hard sectors for each track alternating every other half track, so it may be done in 2 scans, write servo +/- dibits then seek scan and write hard sectors then read for defect mapping into spare sectors .

This is called “embedded servo” which we used in our 14” linear HDD’s in the late 70’s and 80’s until obsoleted by 8”,5.25”,3”,1.5” 0.75” etc diameter platters which are now all glass instead of burnished aluminium with cobalt doped oxide.

As track densities increase 50%/yr each platter has more tracks and an enormous investment in Servo Track Writers (STW) in clean rooms is required to support the same production rate. They use a diffraction grating on the head-arm assy (HAA) with a semiconductor laser and tracks are now under 200 nm or in the UV range per magnetic circular track and they use the HDD’s own VCM and current to control position with laser optical feedback. Some may have an auxiliary moving VCM to correct nanometer position errors.

  • \$\begingroup\$ This is an awesome answer! \$\endgroup\$ – Marcus Müller Jan 30 at 18:41
  • 1
    \$\begingroup\$ It’s hard to be awesome without at least some nanoerrors, but I used to be a servo engineer,a test engineer and reverse engineered every design in the 80’s to find their weaknesses then use that for margin measurements with environmental stress. \$\endgroup\$ – Sunnyskyguy EE75 Jan 30 at 19:17

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.