I have to select a motor for one of my projects in which i require precise speed control (not the position control), i have to run the motor from 0 to 140 rpm depending on the data from some sensor. The required torque is about 3.5 N-m. The size constraints are about 3 inches cube. What motor should i use stepper, servo or DC?
Secondly is it possible to accurately control the speed of DC motor? (like through program can i tell it to run at 70 rpm and it run at 70 rpm)?
You can certainly control the speed of a DC motor within narrow limits +/- 1% should be easily achievable if you have some means to measure the speed and feed that back to the Arduino. Sudden large variations in load would probably result in brief excursions away from the set speed.
For the low speeds that you mention you should use a geared motor.
If very constant speed is needed then a stepper motor might be better as you can control the interval between steps very precisely and, provided the motor can easily deal with the largest load it won't be affected by changes in load. The downsides are that the motion is in steps and the motors are very inefficient. Gearing may not be needed.
You are right, fixed speed of a DC motor requires a (PID...) controller. A linear(?) servo includes such a controller, but you can not fine tune it to your needs. Stepper motors can be controlled better, but for constant continuous rotation a BLDC motor may be the best choice.
Speed and position are closely related, because feedback from the rotary encoder of a DC motor indicates the steps or turns taken so far, i.e. a position. The actual speed then corresponds to the number of pulses within some time, or the time between two pulses. The choice depends on the pulse frequency, i.e. for slow pulses the time between pulses yields faster feedback.
Robin2:
You can certainly control the speed of a DC motor within narrow limits +/- 1% should be easily achievable if you have some means to measure the speed and feed that back to the Arduino. Sudden large variations in load would probably result in brief excursions away from the set speed.
For the low speeds that you mention you should use a geared motor.
If very constant speed is needed then a stepper motor might be better as you can control the interval between steps very precisely and, provided the motor can easily deal with the largest load it won't be affected by changes in load. The downsides are that the motion is in steps and the motors are very inefficient. Gearing may not be needed.
...R
Thanks a lot for your reply, most of the things seems cleared now. However, i have one further query that can you suggest any suitable module that is compatible with Arduino and can be used to control the speed of DC motor efficiently? Thank you.