Go Down

Topic: Controlling DC voltage to a linear actuator (Read 1 time) previous topic - next topic

solarplexus

Hello,
I'm new to Arduino and hardware in general and was hoping for some advice.  I'm trying to control the DC voltage supplied to a Firgelli L12-S linear actuator based on the voltage output read from an electronic pressure sensor by using an Arduino Uno, but I'm not sure how to do this.

To adjust the voltage supplied to the actuator I assume I could use some sort of digital PWM, but I'm confused about the differences between analog and digital PWM.  Is digital PWM just a matter of switching between 0 and 5V more quickly than you would if you wanted an analog signal?  Also, given that the max DC voltage of the actuator is 12V, I was considering implanting a simple non-inverting amplifier between the Arduino and the actuator.  I'm worried about overdrawing current from the Arduino as well, so I thought that implanting the non-inverting amplifier might help with that respect, drawing current from Vcc+ (please correct me if I am mistaken).

Anyways, those were my first thoughts on trying to provide variable dc voltage to the linear actuator, but obviously my technical understanding is highly lacking.  Any advice or suggestions would be greatly appreciated.

Thanks!

Chagrin


To adjust the voltage supplied to the actuator I assume I could use some sort of digital PWM, but I'm confused about the differences between analog and digital PWM.  Is digital PWM just a matter of switching between 0 and 5V more quickly than you would if you wanted an analog signal?  Also, given that the max DC voltage of the actuator is 12V, I was considering implanting a simple non-inverting amplifier between the Arduino and the actuator.  I'm worried about overdrawing current from the Arduino as well, so I thought that implanting the non-inverting amplifier might help with that respect, drawing current from Vcc+ (please correct me if I am mistaken).


An analog signal suggests a voltage somewhere between 0 and V+. A digital signal is 0 OR V+. With PWM you're switching between 0 and V+ at a fast rate so that the average voltage is somewhere between 0 and V+; it would be similar to flicking on and off a light switch really quickly in an attempt to make the light less bright.

To drive a DC motor bidirectionally you need an H Bridge ("Full bridge"). You can drive the motor in one direction using a transistor (or mosfet), but to drive it in both directions you would need an arrangement of four transistors to form a full H bridge.

Specifically to your Firgelli L12-S you should buy the identically priced L12-R instead. It has an RC interface and would be driven just like an RC servo -- no additional motor driver / bridge needed. Example: http://playground.arduino.cc/Learning/SingleServoExample -- but you can find many more examples with a little searching.

solarplexus

I thought that a servo utilized position predictions in determining where the shaft of the device should be, and for my purposes I need to have speed control over the motor.  I thought that it would be simplest to make a DC PWM signal which is amplified with a gain of 2.4 so that I could control the speed of the motor by simply varying the amount of time that the 5V signal was on during PWM.  Is this not a possibility?  If I were to use a servo, I don't really understand how I would vary the signals to it to control its speed, rather than position.  I'm trying to make a syringe pump attached to a closed system which reduces the pressure in the system at a constant rate.

retrolefty


I thought that a servo utilized position predictions in determining where the shaft of the device should be, and for my purposes I need to have speed control over the motor.  I thought that it would be simplest to make a DC PWM signal which is amplified with a gain of 2.4 so that I could control the speed of the motor by simply varying the amount of time that the 5V signal was on during PWM.  Is this not a possibility?  If I were to use a servo, I don't really understand how I would vary the signals to it to control its speed, rather than position.  I'm trying to make a syringe pump attached to a closed system which reduces the pressure in the system at a constant rate.


One can control the 'speed' of a servo by making smaller steps with time delays between steps rather then just one command to go from where it is to where you want it to end up. That method can be used to have a ramp up and deceleration also, it's just all about the step size issued and timing, all user software.

Lefty

ash901226

What is speed?
As i recall from my physic class when i was 14, speed is displacement over time
So i think if you can control how far the linear motor move within a given time , you have speed control? Correct me if 'm wrong guys.

You need some kind of feedback to know control the speed, usually people will use incremental encorder, rarely people will use absolute encorder , and since you are using a linear motor one more option if shaft is short you could also use a linear/log pot.

So this is how i would tackle this problem, it is not nececerily the best or the most elegent way of doing it but its how i think could be one of the way of doing it....

Since ve have some form of feedback you could make use of a simple calculation to set the speed
One you need to define the length of travel and the time it would take for the motor to reach that length.
W

ash901226

And using the formula of displacement over time you will get the speed.
Now what you should do is to base on your feedback of your choice, you should know how many tick of an incremental encorder, or the final value of the absolute encorder or linear pot.

Chagrin

An RC servo (or this actuator with an RC interface) doesn't have a feedback for actual position. You tell it what position you want it to move to and assume that it does actually move to that point. Your speed is then determined by how quickly you move it between positions.

If you don't like assumptions at all then you can buy their version which provides the RC control AND an analog output for position feedback. It is more expensive though, and IMHO overkill in this situation. Not having feedback is the same situation you'll see with millions of CNC machines with stepper motors; you can command them to "step" but (typically) can never verify that they actually do step.

Btw, to the OP, you might be going overkill using this linear actuator to move a syringe. A medium size RC servo that you'd find in a hobby store should have plenty of power to push a syringe. A quick google search reveals examples using that method.

zoomkat

servo syringe setup.

http://www.lynxmotion.com/p-788-vacuum-gripper-kit.aspx
Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   8)

Go Up