I have a telescope which uses DC motors, and these work well from the 12v power supply. But I wish to bypass the makers computer so that I can develop my own software. I purchased the VNH5019 Dual and have connected to my Arduino and connected the 12v supply. The issue is I cannot drive any motor (mine or the motors currently working) at low speed, plus as the motor slows down there is little or no torque.
Is the VNH5019 capable of driving at very low speeds (say 20 RPM), and deliver high torque?
For brushed DC motors, speed and torque are proportional to operating voltage. It sounds like you are trying to run the motor at a low duty cycle (which is effectively a low voltage), but you want it to still have enough torque to handle a load. If you want the motor to handle a load and stay at speed (like 20 RPM) you will likely need to add some sort of feedback system, such as encoders, so the duty cycle can be adjusted as the load increases.
This sounds like you might not be able to run your motor at a low enough duty cycle to achieve a free-run speed of 20 RPM. If this is the case, you might consider a gearmotor with a higher gear ratio, which will also increase the torque at the cost of reducing speed. For example, our 9.7:1 MP 25D Metal Gearmotor has a rated free-run speed of 800 RPM at 12V, so it would be difficult for this motor to run at a consistent 20 RPM. Since speed is proportional to operating voltage, it would have to be powered from around 0.3V to get a free-run speed of 20 RPM, but at that voltage, it might not have enough torque to spin. However, the 75:1 MP 25D Metal Gearmotor has a rated free-run speed of 100 RPM at 12V, so you could power it from around 2.4V to get 20 RPM.
Thanks Brandon, the motor is already geared as desired rotation is 1 rev per 10 minutes. Now the telescope has a rotary encoder attached to the motor, so I assume this is the way to go.
I assume I can still use the VNH5019 (speed = 400, brake = 0) to start the motor moving, and use the change in signal from the encoder (speed = 0) to stop and wait for a delay in milliseconds before sending the next pulse? Or is there another way?
I am not sure I understand what you are describing here, but a control system is generally recommended for doing closed-loop position or speed control with encoders. A PID-based controller is fairly common for these types of systems.