question about making a syringe pump with high acuuracy

Dear friends,
I am supposed to make a Syringe Pump for our biomaterial laboratory with an accuracy about 100 ul/h with a 1 ml liter syringe which has about 5 mm inner diameter on a 2mm pitch rod (the more the better! :slight_smile: ). I reviewed some projects on youtube and other websites in which they used Arduino Uno R3 and Adafruit Motor Shield[link] with a 12 VDC Stepper Motor[9.6 W, 1.8 deg] but I have no idea if they can achieve my desired rotational speed. Therefore, I would be appreciated if you could help me with the following questions:

-What is the minimum continuous speed of 12V DC stepper motors with 200[or 400] steps per rev? Can I get a "continues" 1 rpm speed from these stepper motors using the aforementioned Arduino board and Motor Shield? Should I provide a reprap to achieve this speed? As you know it is important for me to have the minimum speed in a continuous mode and any delay between steps would cause problems during my droplet generating project.

-I know that if I want to achieve this speed, the Arduino board and motor have to endure high "torque" and "current" and this might damage the system. Do you think that my desired rotational speed would cause damage to the system or not?

-Can you suggest any appropriate stepper motor which you got an accurate result in your projects?

Any other ideas would be highly appreciated!

Thank you for your time and consideration.

minimum speed in a continuous mode and any delay between steps would cause problems

That requirement is going to be hard to accomplish with a stepper motor. Even if set to a high microstep setting, it is still a stepper.

groundFungus:
That requirement is going to be hard to accomplish with a stepper motor. Even if set to a high microstep setting, it is still a stepper.

Thank you very much for your reply.

As you mentioned it is hard to have no delay in a stepper motor, but I am just avoiding big delays between movements in achieving my desired speed.
For example, if my stepper motor can reach the 1 rpm speed with a 6 deg/s rotation with +-5% error it would be great for me. But if it works this way: rotating 10 deg/s and then stopping for (60-36)/35=0.6857 sec I would have problems using these kinds of motors.

If I can't get a 1 rpm continuous speed as I described do you think using helical gears to convert higher speeds to lower ones would be helpful?

And what about current and torque? Would they make problems at this low speed?

Consider a 1000:1 gear motor. They run on as little as 1 V at about 2 RPM, and perhaps quite a bit less. Or, one such motor could be geared even further down.

A stepper motor has the advantage of precision. You can specify exactly how much it should move and, by setting the interval between steps, exactly how fast (or slow) it moves regardless of load (assuming, of course that it is sufficiently powerful).

If the stepper motor is turning a screw that causes the syringe plunger to move then you are likely to have a very small movement per step, For example an M6 screw has a pitch of 1mm and with a stepper motor that has 200 turns per rev each step would advance the screw by 0.005mm. And with (say) 4 x microstepping that would reduce to 0.00125mm per microstep.

...R
Stepper Motor Basics
Simple Stepper Code

jremington:
Consider a 1000:1 gear motor. They run on as little as 1 V at about 2 RPM, and perhaps quite a bit less. Or, one such motor could be geared even further down.

Thank you so much for your response jremington. I searched for this kind of motor and I have figured out that the syringe plunger load might cause stalling and damage. On the other hand, as you know these motors should be controlled using voltage which cannot be precise enough for my project (it's hard to control voltage in 0.01 steps). Anyway, I am pleased to consider your recommendation if stepper motors couldn't convince me.

Robin2:
A stepper motor has the advantage of precision. You can specify exactly how much it should move and, by setting the interval between steps, exactly how fast (or slow) it moves regardless of load (assuming, of course that it is sufficiently powerful).

If the stepper motor is turning a screw that causes the syringe plunger to move then you are likely to have a very small movement per step, For example an M6 screw has a pitch of 1mm and with a stepper motor that has 200 turns per rev each step would advance the screw by 0.005mm. And with (say) 4 x microstepping that would reduce to 0.00125mm per microstep.

...R
Stepper Motor Basics
Simple Stepper Code

Thank you very much Robin.
First of all, I needed to hear this "it moves regardless of load (assuming, of course that it is sufficiently powerful)."
Secondly, considering your calculations, It seems that I can acquire my desired flow rate with a 1 ml syringe which has 4.69 mm inner diameter.
Flow Rate=0.001254.69^2pi*3600=310.8 ul/h. It is not 100 ul/h but that's precise enough.

Just three more questions if there is no problem:
-Could you please suggest a motor driver to use with Arduino Uno R3 and a 1.8 deg Stepper Motor? Is A4988 a good choice or not?
-Will there be any problem in controlling two stepper motors (at different speeds) using two motor drivers with Arduino Uno?
-Will be there any problem in using VEXTA PK243A1-SG18-C4 Motor with Arduino Uno?

All Regards,

  1. Yes, the A4988 is good for all bipolar steppers less than 1.5A per phase.

  2. No problem at all. Why would there be?

  3. That looks like a neat motor that will do what you want.

mamindz:
it seems that I can acquire my desired flow rate with a 1 ml syringe which has 4.69 mm inner diameter.
Flow Rate=0.001254.69^2pi*3600=310.8 ul/h. It is not 100 ul/h but that’s precise enough.

I don’t follow the calculation.

If the diameter is 4.69mm then the piston area is 4.69 * 4.69 / 4 * Pi = 17.276mm2

And if the stepper were to advance the piston by 0.00125mm then the change in volume would be 17.276 * 0.00125 = 0.0216 mm3. I think that is about 21 µL and if so it would require about 5 steps to dispense 100µL
EDIT - just realised 1mm3 = 1µL and I had unncessarily divided by 1000 so it should have been about 5000 steps for 100µL.

(By the way I would not be surprised if I have got my maths wrong :slight_smile: )

-Would be there any problem in using VEXTA PK243A1-SG18-C4 Motor with Arduino Uno?

That stepper motor has an 18:1 gear reduction - which may be very beneficial for your project but you will need to consider carefully whether backlash in the gearbox would cause a problem with precision.

In my calculations I had been assuming a stepper motor without a gearbox.

…R

PS … to get repeatable movements of 0.00125mm you will need a VERY high quality mechanical support system.

The op said the screw pitch was 2 mm so I got 34.5513930838 ul per turn or 2.89423930773 turns per 100 ul per hour or 0.0482373217955 RPM or 2.89423930773 steps per second (3600 steps / rev) or 345514 microSeconds per step. :o Sound close?

outsider:
The op said the screw pitch was 2 mm

I missed that piece and I had been using as an example a 1mm pitch. However in Reply #5 the OP used a step-advance of 0.00125mm (which was a figure I calculated) and that is independent of the pitch. With a 2mm pitch it would just require 8x microstepping rather than the 4x I mentioned.

IMHO the programming will be easier to do if the focus is on µL per step.

...R

MorganS:

  1. Yes, the A4988 is good for all bipolar steppers less than 1.5A per phase.

  2. No problem at all. Why would there be?

  3. That looks like a neat motor that will do what you want.

Thank you very much Morgan. In the second question, I was worried about the increase in the Arduino processor’s temperature, which might happen due to plunger load.

Two hours ago, I asked someone who has made a syringe pump a long time ago and he said A4988 would not be a good option for my stepper motor (I didn’t ask the exact reason); Instead, he used TB6600 as a motor driver beside the Arduino Mega 2560 R3. But A4988 has a lower cost and I can provide both of them to check whether it can be a nice choice for my project.

Robin2:
I don’t follow the calculation.

If the diameter is 4.69mm then the piston area is 4.69 * 4.69 / 4 * Pi = 17.276mm2

And if the stepper were to advance the piston by 0.00125mm then the change in volume would be 17.276 * 0.00125 = 0.0216 mm3. I think that is about 21 µL and if so it would require about 5 steps to dispense 100µL

(By the way I would not be surprised if I have got my maths wrong :slight_smile: )

Thank you again Robin. I made a mistake in calculating syringe area which was considering diameter instead of the radius! :smiley:

So I calculated again:
-if we suppose each “microstep+delay interval” would happen in 1 second.
-1 mm3/h=1 µl/h

EDITED: mm2 to mm3

FR=0.00125 mm/s * 17.276 mm2 * 3600 s/h = 77.742 µl/h

Robin2:
That stepper motor has an 18:1 gear reduction - which may be very beneficial for your project but you will need to consider carefully whether backlash in the gearbox would cause a problem with precision.

In my calculations I had been assuming a stepper motor without a gearbox.

You are absolutely right. It might have a bad reaction at low speeds, but I am searching for that to see if I can use it. This way I think I can use the motor driver in full step.

Robin2:
PS … to get repeatable movements of 0.00125mm you will need a VERY high quality mechanical support system.

Of course, it will be a really challenging section. But I am even pleased with lower precision than what we were talking about.

outsider:
The op said the screw pitch was 2 mm so I got 34.5513930838 ul per turn or 2.89423930773 turns per 100 ul per hour or 0.0482373217955 RPM or 2.89423930773 steps per second (3600 steps / rev) or 345514 microSeconds per step. :o Sound close?

Thank you “outsider” for your response.
I will use M6 screw with 1 mm pitch instead.
As Robin said it needs very high accuracy in mechanical assembly and it would be more important with that 3600 steps/rev motor. In fact, I know that I will not acquire these numbers but I can guess my perfect flow rate.

mamindz:
Two hours ago, I asked someone who has made a syringe pump a long time ago and he said A4988 would not be a good option for my stepper motor (I didn't ask the exact reason); Instead, he used TB6600 as a motor driver beside the Arduino Mega 2560 R3. But A4988 has a lower cost and I can provide both of them to check whether it can be a nice choice for my project.

If the A4988 can supply the current required by the motor it will work just as well as the TB6600.

The A4988 should work fine with motors that take less than about 1.3 to 1.5 amps. The TB6600 can provide up to 3 amps IIRC.

...R

Robin2:
If the A4988 can supply the current required by the motor it will work just as well as the TB6600.

The A4988 should work fine with motors that take less than about 1.3 to 1.5 amps. The TB6600 can provide up to 3 amps IIRC.

…R

With frequently used Nema 17 stepper motors which have 1.8 deg/step property, I think there will be no problem in using A4988 as you said. But if I decide to use VEXTA PK243A1-SG18-C4 Motor I need higher capacity of current.

But if I decide to use VEXTA PK243A1-SG18-C4 Motor I need higher capacity of current.

No, as a matter of fact, you do NOT need higher capacity with that motor.

If you had actually looked at that link, you would see that the "VEXTA PK243A1-SG18-C4" Motor is rated for 0.95 A/phase. So the A4988 driver is a perfect match.

jremington:
No, as a matter of fact, you do NOT need higher capacity with that motor.

If you had actually looked at that link, you would see that the "VEXTA PK243A1-SG18-C4" Motor is rated for 0.95 A/phase. So the A4988 driver is a perfect match.

Of course, I did.
I was worried because I didn't know whether the number which Robin mentioned is per phase or not. So I checked these following links for A4988:

How To Control a Stepper Motor with A4988 Driver and Arduino
A4988 Stepper Motor Driver Carrier
Therefore, I realized that the maximum current/per phase can be 2A.

VEXTA will take about 1.9 A for 2-phase. So there won't be any trouble for A4988.